Browse Source

- Admin Panel / Layout / Custom Product Name now changes webpage title.

Thanks to xet7 !

Related #1196
Lauri Ojansivu 6 months ago
parent
commit
dbb1a86ca3

+ 2 - 0
client/components/settings/settingBody.js

@@ -155,6 +155,8 @@ BlazeComponent.extendComponent({
       this.setLoading(false);
     }
 
+    DocHead.setTitle(productName);
+
     saveMailServerInfo();
 
   },

+ 20 - 0
client/lib/utils.js

@@ -145,6 +145,26 @@ Utils = {
     });
   },
 
+  manageCustomUI(){
+    Meteor.call('getCustomUI', (err, data) => {
+      if (err && err.error[0] === 'var-not-exist'){
+        Session.set('customUI', false); // siteId || address server not defined
+      }
+      if (!err){
+        Utils.setCustomUI(data);
+      }
+    });
+  },
+
+  setCustomUI(data){
+    const currentBoard = Boards.findOne(Session.get('currentBoard'));
+    if (currentBoard) {
+      DocHead.setTitle(`${currentBoard.title  } - ${  data.productName}`);
+    } else {
+      DocHead.setTitle(`${data.productName}`);
+    }
+  },
+
   setMatomo(data){
     window._paq = window._paq || [];
     window._paq.push(['setDoNotTrack', data.doNotTrack]);

+ 16 - 11
config/router.js

@@ -14,6 +14,7 @@ FlowRouter.route('/', {
     Filter.reset();
     EscapeActions.executeAll();
 
+    Utils.manageCustomUI();
     Utils.manageMatomo();
 
     BlazeLayout.render('defaultLayout', {
@@ -40,6 +41,7 @@ FlowRouter.route('/b/:id/:slug', {
       EscapeActions.executeUpTo('popup-close');
     }
 
+    Utils.manageCustomUI();
     Utils.manageMatomo();
 
     BlazeLayout.render('defaultLayout', {
@@ -57,6 +59,7 @@ FlowRouter.route('/b/:boardId/:slug/:cardId', {
     Session.set('currentBoard', params.boardId);
     Session.set('currentCard', params.cardId);
 
+    Utils.manageCustomUI();
     Utils.manageMatomo();
 
     BlazeLayout.render('defaultLayout', {
@@ -122,6 +125,7 @@ FlowRouter.route('/setting', {
     },
   ],
   action() {
+    Utils.manageCustomUI();
     BlazeLayout.render('defaultLayout', {
       headerBar: 'settingHeaderBar',
       content: 'setting',
@@ -199,20 +203,21 @@ _.each(redirections, (newPath, oldPath) => {
 // using the `kadira:dochead` package. Currently we only use it to display the
 // board title if we are in a board page (see #364) but we may want to support
 // some <meta> tags in the future.
-const appTitle = 'Wekan';
+//const appTitle = Utils.manageCustomUI();
 
 // XXX The `Meteor.startup` should not be necessary -- we don't need to wait for
 // the complete DOM to be ready to call `DocHead.setTitle`. But the problem is
 // that the global variable `Boards` is undefined when this file loads so we
 // wait a bit until hopefully all files are loaded. This will be fixed in a
 // clean way once Meteor will support ES6 modules -- hopefully in Meteor 1.3.
-Meteor.isClient && Meteor.startup(() => {
-  Tracker.autorun(() => {
-    const currentBoard = Boards.findOne(Session.get('currentBoard'));
-    const titleStack = [appTitle];
-    if (currentBoard) {
-      titleStack.push(currentBoard.title);
-    }
-    DocHead.setTitle(titleStack.reverse().join(' - '));
-  });
-});
+//Meteor.isClient && Meteor.startup(() => {
+//  Tracker.autorun(() => {
+
+//    const currentBoard = Boards.findOne(Session.get('currentBoard'));
+//    const titleStack = [appTitle];
+//    if (currentBoard) {
+//      titleStack.push(currentBoard.title);
+//    }
+//    DocHead.setTitle(titleStack.reverse().join(' - '));
+//  });
+//});

+ 14 - 1
models/settings.js

@@ -74,7 +74,7 @@ if (Meteor.isServer) {
     if(!setting){
       const now = new Date();
       const domain = process.env.ROOT_URL.match(/\/\/(?:www\.)?(.*)?(?:\/)?/)[1];
-      const from = `Wekan <wekan@${domain}>`;
+      const from = `Boards Support <support@${domain}>`;
       const defaultSetting = {disableRegistration: false, mailServer: {
         username: '', password: '', host: '', port: '', enableTLS: false, from,
       }, createdAt: now, modifiedAt: now};
@@ -210,6 +210,19 @@ if (Meteor.isServer) {
       };
     },
 
+    getCustomUI(){
+      const setting = Settings.findOne({});
+      if (!setting.productName) {
+        return {
+          productName: 'Wekan',
+        };
+      } else {
+        return {
+          productName: `${setting.productName}`,
+        };
+      }
+    },
+
     getMatomoConf(){
       return {
         address: getEnvVar('MATOMO_ADDRESS'),

+ 2 - 2
models/trelloCreator.js

@@ -268,7 +268,7 @@ export class TrelloCreator {
       }
       // insert card
       const cardId = Cards.direct.insert(cardToCreate);
-      // keep track of Trello id => WeKan id
+      // keep track of Trello id => Wekan id
       this.cards[card.id] = cardId;
       // log activity
       // Activities.direct.insert({
@@ -431,7 +431,7 @@ export class TrelloCreator {
           sort: checklist.pos,
         };
         const checklistId = Checklists.direct.insert(checklistToCreate);
-        // keep track of Trello id => WeKan id
+        // keep track of Trello id => Wekan id
         this.checklists[checklist.id] = checklistId;
         // Now add the items to the checklistItems
         let counter = 0;

+ 1 - 1
models/wekanCreator.js

@@ -300,7 +300,7 @@ export class WekanCreator {
       }
       // insert card
       const cardId = Cards.direct.insert(cardToCreate);
-      // keep track of Wekan id => WeKan id
+      // keep track of Wekan id => Wekan id
       this.cards[card._id] = cardId;
       // // log activity
       // Activities.direct.insert({