Browse Source

small change in title api

Rafał Pitoń 9 years ago
parent
commit
97f5d18b45

+ 5 - 5
misago/frontend/misago/routes/error-pages.js

@@ -24,7 +24,7 @@
 
 
   Misago.ErrorBannedRoute = Misago.route({
   Misago.ErrorBannedRoute = Misago.route({
     controller: function() {
     controller: function() {
-      this.container.setTitle(gettext('You are banned'));
+      this.container.title.set(gettext('You are banned'));
     },
     },
     error: null,
     error: null,
     view: function() {
     view: function() {
@@ -65,7 +65,7 @@
 
 
   Misago.Error403Route = Misago.route({
   Misago.Error403Route = Misago.route({
     controller: function() {
     controller: function() {
-      this.container.setTitle(gettext('Page not available'));
+      this.container.title.set(gettext('Page not available'));
     },
     },
     error: null,
     error: null,
     view: function() {
     view: function() {
@@ -80,7 +80,7 @@
 
 
   Misago.Error404Route = Misago.route({
   Misago.Error404Route = Misago.route({
     controller: function() {
     controller: function() {
-      this.container.setTitle(gettext('Page not found'));
+      this.container.title.set(gettext('Page not found'));
     },
     },
     view: function() {
     view: function() {
       return errorPage({
       return errorPage({
@@ -94,7 +94,7 @@
 
 
   Misago.Error500Route = Misago.route({
   Misago.Error500Route = Misago.route({
     controller: function() {
     controller: function() {
-      this.container.setTitle(gettext('Application error occured'));
+      this.container.title.set(gettext('Application error occured'));
     },
     },
     view: function() {
     view: function() {
       return errorPage({
       return errorPage({
@@ -108,7 +108,7 @@
 
 
   Misago.Error0Route = Misago.route({
   Misago.Error0Route = Misago.route({
     controller: function() {
     controller: function() {
-      this.container.setTitle(gettext('Lost connection with application'));
+      this.container.title.set(gettext('Lost connection with application'));
     },
     },
     view: function() {
     view: function() {
       return errorPage({
       return errorPage({

+ 3 - 3
misago/frontend/misago/routes/legal.js

@@ -18,9 +18,9 @@
         isReady: false,
         isReady: false,
         init: function(component, _) {
         init: function(component, _) {
           if (this.isReady) {
           if (this.isReady) {
-            _.setTitle(this.title);
+            _.title.set(this.title);
           } else {
           } else {
-            _.setTitle();
+            _.title.set();
             return _.api.one('legal-pages', dashedTypeName);
             return _.api.one('legal-pages', dashedTypeName);
           }
           }
         },
         },
@@ -34,7 +34,7 @@
           m.endComputation();
           m.endComputation();
 
 
           if (component.isActive) {
           if (component.isActive) {
-            _.setTitle(data.title);
+            _.title.set(data.title);
           }
           }
         }
         }
       },
       },

+ 22 - 18
misago/frontend/misago/services/title.js

@@ -2,29 +2,33 @@
   'use strict';
   'use strict';
 
 
   Misago.addService('page-title', function(_) {
   Misago.addService('page-title', function(_) {
-    var setPageTitle = function(_, title) {
-      if (typeof title === 'string') {
-        title = {title: title};
-      }
+    _.title = {
+      forum_name: _.settings.forum_name,
 
 
-      var completeTitle = title.title;
+      set: function(title) {
+        if (title) {
+          this._set_complex(title);
+        } else {
+          document.title = this.forum_name;
+        }
+      },
 
 
-      if (typeof title.page !== 'undefined' && title.page > 1) {
-        completeTitle += ' (' + interpolate(gettext('page %(page)s'), { page:title.page }, true) + ')';
-      }
+      _set_complex: function(title) {
+        if (typeof title === 'string') {
+          title = {title: title};
+        }
 
 
-      if (typeof title.parent !== 'undefined') {
-        completeTitle += ' | ' + title.parent;
-      }
+        var completeTitle = title.title;
 
 
-      document.title = completeTitle + ' | ' + _.settings.forum_name;
-    };
+        if (typeof title.page !== 'undefined' && title.page > 1) {
+          completeTitle += ' (' + interpolate(gettext('page %(page)s'), { page:title.page }, true) + ')';
+        }
+
+        if (typeof title.parent !== 'undefined') {
+          completeTitle += ' | ' + title.parent;
+        }
 
 
-    _.setTitle = function(title) {
-      if (title) {
-        setPageTitle(this, title);
-      } else {
-        document.title = this.settings.forum_name;
+        document.title = completeTitle + ' | ' + this.forum_name;
       }
       }
     };
     };
   });
   });

+ 15 - 15
misago/frontend/test/tests/unit/title.js

@@ -12,57 +12,57 @@
     }
     }
   });
   });
 
 
-  QUnit.test("service sets setTitle method on container", function(assert) {
+  QUnit.test("service sets title.set method on container", function(assert) {
     var service = getMisagoService('page-title');
     var service = getMisagoService('page-title');
 
 
-    var container = {};
+    var container = {settings: {forum_name: 'Lorem Ipsum'}};
     service(container);
     service(container);
 
 
-    assert.ok(container.setTitle, 'setTitle is set on container');
+    assert.ok(container.title.set, 'title.set is set on container');
   });
   });
 
 
-  QUnit.test("setTitle() call with no arguments sets title to forum name", function(assert) {
+  QUnit.test("title.set() call with no arguments sets title to forum name", function(assert) {
     var service = getMisagoService('page-title');
     var service = getMisagoService('page-title');
 
 
     var container = {settings: {forum_name: 'Lorem Ipsum'}};
     var container = {settings: {forum_name: 'Lorem Ipsum'}};
     service(container);
     service(container);
 
 
-    container.setTitle();
-    assert.equal(document.title, 'Lorem Ipsum', 'no argument call for setTitle changed title to Lorem Ipsum');
+    container.title.set();
+    assert.equal(document.title, 'Lorem Ipsum', 'no argument call for title.set changed title to Lorem Ipsum');
   });
   });
 
 
-  QUnit.test("setTitle() call with string argument sets valid title", function(assert) {
+  QUnit.test("title.set() call with string argument sets valid title", function(assert) {
     var service = getMisagoService('page-title');
     var service = getMisagoService('page-title');
 
 
     var container = {settings: {forum_name: 'Lorem Ipsum'}};
     var container = {settings: {forum_name: 'Lorem Ipsum'}};
     service(container);
     service(container);
 
 
-    container.setTitle("Hello!");
+    container.title.set("Hello!");
     assert.equal(document.title, 'Hello! | Lorem Ipsum', 'string argument changed title');
     assert.equal(document.title, 'Hello! | Lorem Ipsum', 'string argument changed title');
   });
   });
 
 
-  QUnit.test("setTitle() call with object argument sets valid title", function(assert) {
+  QUnit.test("title.set() call with object argument sets valid title", function(assert) {
     var service = getMisagoService('page-title');
     var service = getMisagoService('page-title');
 
 
     var container = {settings: {forum_name: 'Lorem Ipsum'}};
     var container = {settings: {forum_name: 'Lorem Ipsum'}};
     service(container);
     service(container);
 
 
-    container.setTitle({title: "Hello!"});
+    container.title.set({title: "Hello!"});
     assert.equal(document.title, 'Hello! | Lorem Ipsum', 'object argument changed title');
     assert.equal(document.title, 'Hello! | Lorem Ipsum', 'object argument changed title');
 
 
-    container.setTitle({title: "User", page: 1});
+    container.title.set({title: "User", page: 1});
     assert.equal(document.title, 'User | Lorem Ipsum', 'object argument with first page changed title');
     assert.equal(document.title, 'User | Lorem Ipsum', 'object argument with first page changed title');
 
 
-    container.setTitle({title: "User", page: 5});
+    container.title.set({title: "User", page: 5});
     assert.equal(document.title, 'User (page 5) | Lorem Ipsum', 'object argument with page changed title');
     assert.equal(document.title, 'User (page 5) | Lorem Ipsum', 'object argument with page changed title');
 
 
-    container.setTitle({title: "User", parent: 'Admins'});
+    container.title.set({title: "User", parent: 'Admins'});
     assert.equal(document.title, 'User | Admins | Lorem Ipsum', 'object argument with parent changed title');
     assert.equal(document.title, 'User | Admins | Lorem Ipsum', 'object argument with parent changed title');
 
 
-    container.setTitle({title: "User", parent: 'Admins', page: 1});
+    container.title.set({title: "User", parent: 'Admins', page: 1});
     assert.equal(document.title, 'User | Admins | Lorem Ipsum', 'object argument with parent and first page changed title');
     assert.equal(document.title, 'User | Admins | Lorem Ipsum', 'object argument with parent and first page changed title');
 
 
-    container.setTitle({title: "User", parent: 'Admins', page: 5});
+    container.title.set({title: "User", parent: 'Admins', page: 5});
     assert.equal(document.title, 'User (page 5) | Admins | Lorem Ipsum', 'object argument with parent and page changed title');
     assert.equal(document.title, 'User (page 5) | Admins | Lorem Ipsum', 'object argument with parent and page changed title');
 
 
   });
   });