diff --git a/public/src/forum/admin/categories.js b/public/src/forum/admin/categories.js
new file mode 100644
index 0000000000..f8e0ce65ab
--- /dev/null
+++ b/public/src/forum/admin/categories.js
@@ -0,0 +1,79 @@
+
+var modified_categories = {};
+
+function modified(el) {
+ var cid = $(el).parents('li').attr('data-cid');
+
+ modified_categories[cid] = modified_categories[cid] || {};
+ modified_categories[cid][el.getAttribute('data-name')] = el.value;
+}
+
+function save() {
+ socket.emit('api:admin.categories.update', modified_categories);
+ modified_categories = {};
+}
+
+function select_icon(el) {
+ var selected = el.className.replace(' icon-2x', '');
+ jQuery('#icons .selected').removeClass('selected');
+ jQuery('#icons .' + selected).parent().addClass('selected');
+
+
+ bootbox.confirm('
Select an icon.
' + document.getElementById('icons').innerHTML, function(confirm) {
+ if (confirm) {
+ var iconClass = jQuery('.bootbox .selected').children(':first').attr('class');
+ el.className = iconClass + ' icon icon-2x';
+ el.value = iconClass;
+
+ modified(el);
+ }
+ });
+
+ jQuery('.bootbox .span3').on('click', function() {
+ jQuery('.bootbox .selected').removeClass('selected');
+ jQuery(this).addClass('selected');
+ });
+}
+
+
+function update_blockclass(el) {
+ el.parentNode.parentNode.className = 'entry-row ' + el.value;
+}
+
+jQuery('#entry-container').sortable();
+jQuery('.blockclass').each(function() {
+ jQuery(this).val(this.getAttribute('data-value'));
+});
+
+
+//DRY Failure. this needs to go into an ajaxify onready style fn. Currently is copy pasted into every single function so after ACP is off the ground fix asap
+(function() {
+ jQuery('document').ready(function() {
+ var url = window.location.href,
+ parts = url.split('/'),
+ active = parts[parts.length-1];
+
+ jQuery('.nav-pills li').removeClass('active');
+ jQuery('.nav-pills li a').each(function() {
+ if (this.getAttribute('href').match(active)) {
+ jQuery(this.parentNode).addClass('active');
+ return false;
+ }
+ });
+
+ jQuery('#save').on('click', save);
+
+ jQuery('.icon').on('click', function(ev) {
+ select_icon(ev.target);
+ });
+
+ jQuery('.blockclass').on('change', function(ev) {
+ update_blockclass(ev.target);
+ });
+
+ jQuery('.category_name, .category_description, .blockclass').on('change', function(ev) {
+ modified(ev.target);
+ });
+ });
+
+}());
\ No newline at end of file
diff --git a/public/templates/admin/categories.tpl b/public/templates/admin/categories.tpl
index 0699a6d1a7..7d8d1749fb 100644
--- a/public/templates/admin/categories.tpl
+++ b/public/templates/admin/categories.tpl
@@ -35,90 +35,11 @@
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file