diff --git a/assets/javascripts/admin/chat-route-map.js.es6 b/assets/javascripts/admin/chat-route-map.js.es6 new file mode 100644 index 0000000..4a3bd7d --- /dev/null +++ b/assets/javascripts/admin/chat-route-map.js.es6 @@ -0,0 +1,10 @@ +export default { + resource: 'admin.adminPlugins', + path: '/plugins', + map() { + this.route('chat', function(){ + this.route('index', { 'path': '/' }); + this.route('provider', {path: '/:provider'}); + }); + } +}; \ No newline at end of file diff --git a/assets/javascripts/admin/controllers/admin-plugins-chat-provider.js.es6 b/assets/javascripts/admin/controllers/admin-plugins-chat-provider.js.es6 new file mode 100644 index 0000000..9c88b03 --- /dev/null +++ b/assets/javascripts/admin/controllers/admin-plugins-chat-provider.js.es6 @@ -0,0 +1,14 @@ +import FilterRule from 'discourse/plugins/discourse-chat/admin/models/filter-rule' +import { ajax } from 'discourse/lib/ajax'; +import computed from "ember-addons/ember-computed-decorators"; + +export default Ember.Controller.extend({ + filters: [ + { id: 'watch', name: I18n.t('chat.filter.watch'), icon: 'exclamation-circle' }, + { id: 'follow', name: I18n.t('chat.filter.follow'), icon: 'circle'}, + { id: 'mute', name: I18n.t('chat.filter.mute'), icon: 'times-circle' } + ], + + editing: FilterRule.create({}), + +}); \ No newline at end of file diff --git a/assets/javascripts/admin/models/filter-rule.js.es6 b/assets/javascripts/admin/models/filter-rule.js.es6 new file mode 100644 index 0000000..c2bd045 --- /dev/null +++ b/assets/javascripts/admin/models/filter-rule.js.es6 @@ -0,0 +1,24 @@ +import RestModel from 'discourse/models/rest'; +import Category from 'discourse/models/category'; +import computed from "ember-addons/ember-computed-decorators"; + +export default RestModel.extend({ + category_id: null, + provider: '', + channel: '', + filter: null, + + @computed('category_id') + categoryName(categoryId) { + if (categoryId) + return Category.findById(categoryId).get('name'); + else { + return I18n.t('slack.choose.all_categories'); + } + }, + + @computed('filter') + filterName(filter) { + return I18n.t(`slack.present.${filter}`); + } +}); diff --git a/assets/javascripts/admin/routes/admin-plugins-chat-index.js.es6 b/assets/javascripts/admin/routes/admin-plugins-chat-index.js.es6 new file mode 100644 index 0000000..1e97fb0 --- /dev/null +++ b/assets/javascripts/admin/routes/admin-plugins-chat-index.js.es6 @@ -0,0 +1,7 @@ +import AdminPluginsChatProvider from 'discourse/plugins/discourse-chat/admin/routes/admin-plugins-chat-provider' + +export default AdminPluginsChatProvider.extend({ + afterModel(model, transition) { + this.transitionTo('adminPlugins.chat.provider', model); + } +}); diff --git a/assets/javascripts/admin/routes/admin-plugins-chat-provider.js.es6 b/assets/javascripts/admin/routes/admin-plugins-chat-provider.js.es6 new file mode 100644 index 0000000..914b382 --- /dev/null +++ b/assets/javascripts/admin/routes/admin-plugins-chat-provider.js.es6 @@ -0,0 +1,24 @@ +import FilterRule from 'discourse/plugins/discourse-chat/admin/models/filter-rule' +import { ajax } from 'discourse/lib/ajax'; + +export default Discourse.Route.extend({ + + model(params, transition) { + + var url = '/admin/plugins/chat' + if(params.provider !== undefined){ + url += `/${params.provider}` + } + url += '.json' + + return ajax(url).then(result => { + var rules = result.rules.map(v => FilterRule.create(v)) + var providers = result.providers + return {provider: result.provider, rules: rules, providers: providers}; + }); + }, + + serialize: function(model, params) { + return { provider: model['provider']}; + } +}); diff --git a/assets/javascripts/discourse/chat-route-map.js.es6 b/assets/javascripts/discourse/chat-route-map.js.es6 deleted file mode 100644 index 9458f36..0000000 --- a/assets/javascripts/discourse/chat-route-map.js.es6 +++ /dev/null @@ -1,7 +0,0 @@ -export default { - resource: 'admin.adminPlugins', - path: '/plugins', - map() { - this.route('chat'); - } -}; \ No newline at end of file diff --git a/assets/javascripts/discourse/controllers/admin-plugins-chat.js.es6 b/assets/javascripts/discourse/controllers/admin-plugins-chat.js.es6 deleted file mode 100644 index 4ee344f..0000000 --- a/assets/javascripts/discourse/controllers/admin-plugins-chat.js.es6 +++ /dev/null @@ -1,3 +0,0 @@ -export default Ember.Controller.extend({ - -}); \ No newline at end of file diff --git a/assets/javascripts/discourse/routes/admin-plugins-chat.js.es6 b/assets/javascripts/discourse/routes/admin-plugins-chat.js.es6 deleted file mode 100644 index 2d3861d..0000000 --- a/assets/javascripts/discourse/routes/admin-plugins-chat.js.es6 +++ /dev/null @@ -1,9 +0,0 @@ -import { ajax } from 'discourse/lib/ajax'; - -export default Discourse.Route.extend({ - model() { - return ajax("/chat/list-providers.json").then(result => { - return result.chat; - }); - } -}); diff --git a/assets/javascripts/discourse/templates/admin/plugins-chat-provider.hbs b/assets/javascripts/discourse/templates/admin/plugins-chat-provider.hbs new file mode 100644 index 0000000..f031eb4 --- /dev/null +++ b/assets/javascripts/discourse/templates/admin/plugins-chat-provider.hbs @@ -0,0 +1,63 @@ + +
| {{i18n "chat.channel"}} | +{{i18n "chat.filter"}} | + +{{i18n "chat.category"}} | + + {{#if siteSettings.tagging_enabled}} +{{i18n "chat.tags"}} | + {{/if}} + + + ++ |
|---|---|---|---|---|
| {{rule.channel}} | +{{rule.filterName}} | + +{{rule.categoryName}} | + + + {{#if siteSettings.tagging_enabled}} +{{rule.tags}} | + {{/if}} + + ++ {{d-button action="edit" actionParam=rule icon="pencil" class="edit" title="chat.edit"}} + {{d-button action="delete" actionParam=rule icon="trash-o" class="delete btn-danger" title="chat.delete"}} + | +