Просмотр исходного кода

tweaks in gulp for dev, dropped extra csrf token in js comment

Rafał Pitoń 9 лет назад
Родитель
Сommit
389c732371

+ 1 - 1
misago/frontend/gulpfile.js

@@ -145,7 +145,7 @@ gulp.task('quickdeploycss', ['collectcss'], function() {
     .pipe(gulp.dest(static_path + 'css'));
 });
 
-gulp.task('watch', function() {
+gulp.task('watch', ['default'], function() {
    gulp.watch('misago/**/*.js', ['quickdeployjs']);
    gulp.watch('misago/**/*.less', ['quickdeploycss']);
 });

+ 1 - 1
misago/static/misago/js/misago.js

@@ -1,2 +1,2 @@
-!function(){"use strict";window.Misago=function(){var t=Misago.prototype,e=this;this.preloaded_data={SETTINGS:{}},this._services=[],this.addService=function(t,e,i){this._services.push({name:t,item:e,after:this.get(i,"after"),before:this.get(i,"before")})},this._initServices=function(i){var r=new t.OrderedList(i).order(!1);r.forEach(function(t){var i=t.item(e);i&&(e[t.name]=i)})},this.addService("Conf",t.Conf),this.component=function(){for(var t=[],e=0;e<arguments.length;e+=1)t.push(arguments[e]);return t[t.length-1]!==this&&t.push(this),m.component.apply(void 0,t)},this._outlet=null,this.init=function(e){this._initServices(this._services),e&&(this._outlet=e,m.mount(e,this.component(t.ForumLayout)))},this.destroy=function(){this._outlet&&m.mount(this._outlet,null)}}}(),function(t){"use strict";t.ForumLayout={view:function(t,e){return m(".container",[m("h1",e.settings.forum_name),m("hr"),m("#route-outlet","Current route will be rendered here."),m("hr"),m("p","Forum footer goes here.")])}}}(Misago.prototype),function(t){"use strict";t.Conf=function(t){t.settings=t.get(t.preloaded_data,"SETTINGS",{})}}(Misago.prototype),function(t){"use strict";t.has=function(t,e){return void 0!==t?t.hasOwnProperty(e):!1},t.get=function(e,i,r){return t.has(e,i)?e[i]:void 0!==r?r:void 0},t.pop=function(e,i,r){var s=t.get(e,i,r);return t.has(e,i)&&delete e[i],s}}(Misago.prototype),function(t){"use strict";t.OrderedList=function(e){this.is_ordered=!1,this._items=e||[],this.add=function(e,i,r){this._items.push({key:e,item:i,after:t.get(r,"after"),before:t.get(r,"before")})},this.get=function(t,e){for(var i=0;i<this._items.length;i++)if(this._items[i].key===t)return this._items[i].item;return e},this.has=function(t){return void 0!==this.get(t)},this.values=function(){for(var t=[],e=0;e<this._items.length;e++)t.push(this._items[e].item);return t},this.order=function(t){return this.is_ordered||(this._items=this._order(this._items),this.is_ordered=!0),t||"undefined"==typeof t?this.values():this._items},this._order=function(t){function e(t){var e=-1;-1===s.indexOf(t.key)&&(t.after?(e=s.indexOf(t.after),-1!==e&&(e+=1)):t.before&&(e=s.indexOf(t.before)),-1!==e&&(r.splice(e,0,t),s.splice(e,0,t.key)))}var i=[];t.forEach(function(t){i.push(t.key)});var r=[],s=[];t.forEach(function(t){t.after||t.before||(r.push(t),s.push(t.key))});for(var n=200;n>0&&i.length!==s.length;)n-=1,t.forEach(e);return r}}}(Misago.prototype);
+!function(){"use strict";window.Misago=function(){var t=Object.getPrototypeOf(this),e=this;this.preloaded_data={SETTINGS:{}},this._services=[],this.addService=function(t,e,i){this._services.push({name:t,item:e,after:this.get(i,"after"),before:this.get(i,"before")})},this._initServices=function(i){var r=new t.OrderedList(i).order(!1);r.forEach(function(t){var i=null;i=void 0!==t.item.factory?t.item.factory:t.item;var r=i(e);r&&(e[t.name]=r)})},this._destroyServices=function(i){var r=new t.OrderedList(i).order();r.reverse(),r.forEach(function(t){void 0!==t.destroy&&t.destroy(e)})},this.registerCoreServices=function(){this.addService("Conf",t.Conf)},this.component=function(){for(var t=[],e=0;e<arguments.length;e+=1)t.push(arguments[e]);return t[t.length-1]!==this&&t.push(this),m.component.apply(void 0,t)},this._outlet=null,this.init=function(e){this._initServices(this._services),e&&(this._outlet=e,m.mount(e,this.component(t.ForumLayout)))},this.destroy=function(){this._destroyServices(),this._outlet&&m.mount(this._outlet,null)}}}(),function(t){"use strict";t.ForumLayout={view:function(t,e){return m(".container",[m("h1",e.settings.forum_name),m("hr"),m("#route-outlet","Current route will be rendered here."),m("hr"),m("p","Forum footer goes here.")])}}}(Misago.prototype),function(t){"use strict";t.Conf=function(t){t.settings=t.get(t.preloaded_data,"SETTINGS",{})}}(Misago.prototype),function(t){"use strict";t.has=function(t,e){return void 0!==t?t.hasOwnProperty(e):!1},t.get=function(e,i,r){return t.has(e,i)?e[i]:void 0!==r?r:void 0},t.pop=function(e,i,r){var s=t.get(e,i,r);return t.has(e,i)&&delete e[i],s}}(Misago.prototype),function(t){"use strict";t.OrderedList=function(e){this.is_ordered=!1,this._items=e||[],this.add=function(e,i,r){this._items.push({key:e,item:i,after:t.get(r,"after"),before:t.get(r,"before")})},this.get=function(t,e){for(var i=0;i<this._items.length;i++)if(this._items[i].key===t)return this._items[i].item;return e},this.has=function(t){return void 0!==this.get(t)},this.values=function(){for(var t=[],e=0;e<this._items.length;e++)t.push(this._items[e].item);return t},this.order=function(t){return this.is_ordered||(this._items=this._order(this._items),this.is_ordered=!0),t||"undefined"==typeof t?this.values():this._items},this._order=function(t){function e(t){var e=-1;-1===s.indexOf(t.key)&&(t.after?(e=s.indexOf(t.after),-1!==e&&(e+=1)):t.before&&(e=s.indexOf(t.before)),-1!==e&&(r.splice(e,0,t),s.splice(e,0,t.key)))}var i=[];t.forEach(function(t){i.push(t.key)});var r=[],s=[];t.forEach(function(t){t.after||t.before||(r.push(t),s.push(t.key))});for(var o=200;o>0&&i.length!==s.length;)o-=1,t.forEach(e);return r}}}(Misago.prototype);
 //# sourceMappingURL=/misago.js.map

+ 1 - 1
misago/static/misago/js/misago.js.map

@@ -1 +1 @@
-{"version":3,"sources":["misago.js"],"names":["window","Misago","ns","prototype","self","this","preloaded_data","SETTINGS","_services","addService","name","factory","order","push","item","after","get","before","_initServices","services","ordered_services","OrderedList","forEach","service_instance","Conf","component","arguments_array","i","arguments","length","m","apply","undefined","_outlet","init","outlet","mount","ForumLayout","destroy","view","ctrl","_","settings","forum_name","has","obj","key","hasOwnProperty","value","pop","returnValue","items","is_ordered","_items","add","values","values_only","_order","unordered","insertItem","insertAt","ordering","indexOf","ordered","splice","index","iterations"],"mappings":"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","file":"misago.js","sourcesContent":["/* global -Misago */\n/* exported Misago */\n(function () {\n  'use strict';\n\n  window.Misago = function() {\n\n    var ns = Misago.prototype;\n    var self = this;\n\n    // Preloaded data\n    this.preloaded_data = {\n      // Empty settings\n      SETTINGS: {}\n    };\n\n    // Services\n    this._services = [];\n    this.addService = function(name, factory, order) {\n      this._services.push({\n        name: name,\n        item: factory,\n        after: this.get(order, 'after'),\n        before: this.get(order, 'before')\n      });\n    };\n\n    this._initServices = function(services) {\n      var ordered_services = new ns.OrderedList(services).order(false);\n      ordered_services.forEach(function (item) {\n        var service_instance = item.item(self);\n        if (service_instance) {\n          self[item.name] = service_instance;\n        }\n      });\n    };\n\n    // Register core services\n    this.addService('Conf', ns.Conf);\n\n    // Component factory\n    this.component = function() {\n      var arguments_array = [];\n      for (var i = 0; i < arguments.length; i += 1) {\n        arguments_array.push(arguments[i]);\n      }\n\n      if (arguments_array[arguments_array.length - 1] !== this) {\n        arguments_array.push(this);\n      }\n\n      return m.component.apply(undefined, arguments_array);\n    };\n\n    // App ini/destory\n    this._outlet = null;\n    this.init = function(outlet) {\n      this._initServices(this._services);\n      if (outlet) {\n        this._outlet = outlet;\n        m.mount(outlet, this.component(ns.ForumLayout));\n      }\n    };\n\n    this.destroy = function() {\n      // unmount components if they are mounted\n      if (this._outlet) {\n        m.mount(this._outlet, null);\n      }\n    };\n  };\n}());\n\n(function (ns) {\n  'use strict';\n\n  ns.ForumLayout = {\n    view: function(ctrl, _) {\n      return m('.container', [\n        m('h1', _.settings.forum_name),\n        m('hr'),\n        m('#route-outlet', 'Current route will be rendered here.'),\n        m('hr'),\n        m('p', 'Forum footer goes here.')\n      ]);\n    }\n  };\n}(Misago.prototype));\n\n(function (_) {\n  'use strict';\n\n  _.Conf = function(_) {\n    _.settings = _.get(_.preloaded_data, 'SETTINGS', {});\n  };\n}(Misago.prototype));\n\n(function (ns) {\n  'use strict';\n\n  ns.has = function(obj, key) {\n    if (obj !== undefined) {\n      return obj.hasOwnProperty(key);\n    } else {\n      return false;\n    }\n  };\n\n  ns.get = function(obj, key, value) {\n    if (ns.has(obj, key)) {\n      return obj[key];\n    } else if (value !== undefined) {\n      return value;\n    } else {\n      return undefined;\n    }\n  };\n\n  ns.pop = function(obj, key, value) {\n    var returnValue = ns.get(obj, key, value);\n    if (ns.has(obj, key)) {\n      delete obj[key];\n    }\n    return returnValue;\n  };\n}(Misago.prototype));\n\n(function (ns) {\n  'use strict';\n\n  ns.OrderedList = function(items) {\n    this.is_ordered = false;\n    this._items = items || [];\n\n    this.add = function(key, item, order) {\n      this._items.push({\n        key: key,\n        item: item,\n        after: ns.get(order, 'after'),\n        before: ns.get(order, 'before')\n      });\n    };\n\n    this.get = function(key, value) {\n      for (var i = 0; i < this._items.length; i++) {\n        if (this._items[i].key === key) {\n          return this._items[i].item;\n        }\n      }\n\n      return value;\n    };\n\n    this.has = function(key) {\n      return this.get(key) !== undefined;\n    };\n\n    this.values = function() {\n      var values = [];\n      for (var i = 0; i < this._items.length; i++) {\n        values.push(this._items[i].item);\n      }\n      return values;\n    };\n\n    this.order = function(values_only) {\n      if (!this.is_ordered) {\n        this._items = this._order(this._items);\n        this.is_ordered = true;\n      }\n\n      if (values_only || typeof values_only === 'undefined') {\n        return this.values();\n      } else {\n        return this._items;\n      }\n    };\n\n    this._order = function(unordered) {\n      // Index of unordered items\n      var index = [];\n      unordered.forEach(function (item) {\n        index.push(item.key);\n      });\n\n      // Ordered items\n      var ordered = [];\n      var ordering = [];\n\n      // First pass: register items that\n      // don't specify their order\n      unordered.forEach(function (item) {\n        if (!item.after && !item.before) {\n          ordered.push(item);\n          ordering.push(item.key);\n        }\n      });\n\n      // Second pass: keep iterating items\n      // until we hit iterations limit or finish\n      // ordering list\n      function insertItem(item) {\n        var insertAt = -1;\n        if (ordering.indexOf(item.key) === -1) {\n          if (item.after) {\n            insertAt = ordering.indexOf(item.after);\n            if (insertAt !== -1) {\n              insertAt += 1;\n            }\n          } else if (item.before) {\n            insertAt = ordering.indexOf(item.before);\n          }\n\n          if (insertAt !== -1) {\n            ordered.splice(insertAt, 0, item);\n            ordering.splice(insertAt, 0, item.key);\n          }\n        }\n      }\n\n      var iterations = 200;\n      while (iterations > 0 && index.length !== ordering.length) {\n        iterations -= 1;\n        unordered.forEach(insertItem);\n      }\n\n      return ordered;\n    };\n  };\n} (Misago.prototype));\n"],"sourceRoot":"/source/"}
+{"version":3,"sources":["misago.js"],"names":["window","Misago","ns","Object","getPrototypeOf","this","self","preloaded_data","SETTINGS","_services","addService","name","factory","order","push","item","after","get","before","_initServices","services","ordered_services","OrderedList","forEach","undefined","service_instance","_destroyServices","reverse","destroy","registerCoreServices","Conf","component","arguments_array","i","arguments","length","m","apply","_outlet","init","outlet","mount","ForumLayout","view","ctrl","_","settings","forum_name","prototype","has","obj","key","hasOwnProperty","value","pop","returnValue","items","is_ordered","_items","add","values","values_only","_order","unordered","insertItem","insertAt","ordering","indexOf","ordered","splice","index","iterations"],"mappings":"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","file":"misago.js","sourcesContent":["/* global -Misago */\n/* exported Misago */\n(function () {\n  'use strict';\n\n  window.Misago = function() {\n\n    var ns = Object.getPrototypeOf(this);\n    var self = this;\n\n    // Preloaded data\n    this.preloaded_data = {\n      // Empty settings\n      SETTINGS: {}\n    };\n\n    // Services\n    this._services = [];\n    this.addService = function(name, factory, order) {\n      this._services.push({\n        name: name,\n        item: factory,\n        after: this.get(order, 'after'),\n        before: this.get(order, 'before')\n      });\n    };\n\n    this._initServices = function(services) {\n      var ordered_services = new ns.OrderedList(services).order(false);\n      ordered_services.forEach(function (item) {\n        var factory = null;\n        if (item.item.factory !== undefined) {\n          factory = item.item.factory;\n        } else {\n          factory = item.item;\n        }\n\n        var service_instance = factory(self);\n        if (service_instance) {\n          self[item.name] = service_instance;\n        }\n      });\n    };\n\n    this._destroyServices = function(services) {\n      var ordered_services = new ns.OrderedList(services).order();\n      ordered_services.reverse();\n      ordered_services.forEach(function (item) {\n        if (item.destroy !== undefined) {\n          item.destroy(self);\n        }\n      });\n    };\n\n    this.registerCoreServices = function() {\n      this.addService('Conf', ns.Conf);\n    };\n\n    // Component factory\n    this.component = function() {\n      var arguments_array = [];\n      for (var i = 0; i < arguments.length; i += 1) {\n        arguments_array.push(arguments[i]);\n      }\n\n      if (arguments_array[arguments_array.length - 1] !== this) {\n        arguments_array.push(this);\n      }\n\n      return m.component.apply(undefined, arguments_array);\n    };\n\n    // App ini/destory\n    this._outlet = null;\n    this.init = function(outlet) {\n      this._initServices(this._services);\n      if (outlet) {\n        this._outlet = outlet;\n        m.mount(outlet, this.component(ns.ForumLayout));\n      }\n    };\n\n    this.destroy = function() {\n      // run destructors for services\n      this._destroyServices()\n\n      // unmount components if they are mounted\n      if (this._outlet) {\n        m.mount(this._outlet, null);\n      }\n    };\n  };\n}());\n\n(function (ns) {\n  'use strict';\n\n  ns.ForumLayout = {\n    view: function(ctrl, _) {\n      return m('.container', [\n        m('h1', _.settings.forum_name),\n        m('hr'),\n        m('#route-outlet', 'Current route will be rendered here.'),\n        m('hr'),\n        m('p', 'Forum footer goes here.')\n      ]);\n    }\n  };\n}(Misago.prototype));\n\n(function (_) {\n  'use strict';\n\n  _.Conf = function(_) {\n    _.settings = _.get(_.preloaded_data, 'SETTINGS', {});\n  };\n}(Misago.prototype));\n\n(function (ns) {\n  'use strict';\n\n  ns.has = function(obj, key) {\n    if (obj !== undefined) {\n      return obj.hasOwnProperty(key);\n    } else {\n      return false;\n    }\n  };\n\n  ns.get = function(obj, key, value) {\n    if (ns.has(obj, key)) {\n      return obj[key];\n    } else if (value !== undefined) {\n      return value;\n    } else {\n      return undefined;\n    }\n  };\n\n  ns.pop = function(obj, key, value) {\n    var returnValue = ns.get(obj, key, value);\n    if (ns.has(obj, key)) {\n      delete obj[key];\n    }\n    return returnValue;\n  };\n}(Misago.prototype));\n\n(function (ns) {\n  'use strict';\n\n  ns.OrderedList = function(items) {\n    this.is_ordered = false;\n    this._items = items || [];\n\n    this.add = function(key, item, order) {\n      this._items.push({\n        key: key,\n        item: item,\n        after: ns.get(order, 'after'),\n        before: ns.get(order, 'before')\n      });\n    };\n\n    this.get = function(key, value) {\n      for (var i = 0; i < this._items.length; i++) {\n        if (this._items[i].key === key) {\n          return this._items[i].item;\n        }\n      }\n\n      return value;\n    };\n\n    this.has = function(key) {\n      return this.get(key) !== undefined;\n    };\n\n    this.values = function() {\n      var values = [];\n      for (var i = 0; i < this._items.length; i++) {\n        values.push(this._items[i].item);\n      }\n      return values;\n    };\n\n    this.order = function(values_only) {\n      if (!this.is_ordered) {\n        this._items = this._order(this._items);\n        this.is_ordered = true;\n      }\n\n      if (values_only || typeof values_only === 'undefined') {\n        return this.values();\n      } else {\n        return this._items;\n      }\n    };\n\n    this._order = function(unordered) {\n      // Index of unordered items\n      var index = [];\n      unordered.forEach(function (item) {\n        index.push(item.key);\n      });\n\n      // Ordered items\n      var ordered = [];\n      var ordering = [];\n\n      // First pass: register items that\n      // don't specify their order\n      unordered.forEach(function (item) {\n        if (!item.after && !item.before) {\n          ordered.push(item);\n          ordering.push(item.key);\n        }\n      });\n\n      // Second pass: keep iterating items\n      // until we hit iterations limit or finish\n      // ordering list\n      function insertItem(item) {\n        var insertAt = -1;\n        if (ordering.indexOf(item.key) === -1) {\n          if (item.after) {\n            insertAt = ordering.indexOf(item.after);\n            if (insertAt !== -1) {\n              insertAt += 1;\n            }\n          } else if (item.before) {\n            insertAt = ordering.indexOf(item.before);\n          }\n\n          if (insertAt !== -1) {\n            ordered.splice(insertAt, 0, item);\n            ordering.splice(insertAt, 0, item.key);\n          }\n        }\n      }\n\n      var iterations = 200;\n      while (iterations > 0 && index.length !== ordering.length) {\n        iterations -= 1;\n        unordered.forEach(insertItem);\n      }\n\n      return ordered;\n    };\n  };\n} (Misago.prototype));\n"],"sourceRoot":"/source/"}

+ 1 - 1
misago/templates/misago/preloaded_data.js

@@ -1,2 +1,2 @@
-{% load misago_json %}{% if DEBUG %}// CSRF Token: {{ csrf_token }}{% endif %}
+{% load misago_json %}
 misago.preloaded_data = {{ preloaded_ember_data|as_json }};