فهرست منبع

[add] settings style
[bugfix] hide service add when switching setting page
[bugfix] lazy load hljs du not reset head dom any more
[add] login style
[refactor] moved login style to style
[add] cgu style

isundil 8 سال پیش
والد
کامیت
6cba5778a0
9فایلهای تغییر یافته به همراه44 افزوده شده و 28 حذف شده
  1. 4 2
      cli/lang/en.js
  2. 4 2
      cli/lang/fr.js
  3. 1 1
      cli/uiSettings.js
  4. 5 2
      cli/workflow.js
  5. 0 5
      srv/public/login.css
  6. 5 5
      srv/public/mimouchat.min.js
  7. 18 4
      srv/public/style.css
  8. 5 5
      srv/src/template/index.js
  9. 2 2
      srv/src/template/login.js

+ 4 - 2
cli/lang/en.js

@@ -46,12 +46,14 @@ lang["en"] = {
         "fileUploadCancel": "Cancel",
         "neterror": "Cannot connect to chat !",
 
-        "setting-menu-services": "services",
-        "settings-services-title": "services",
+        "settingTitle": "Settings",
+        "setting-menu-services": "Services",
+        "settings-services-title": "Services",
         "setting-menu-display": "Display",
         "settings-display-title": "Display",
         "setting-menu-privacy": "Privacy",
         "settings-privacy-title": "Privacy",
+        "settingCommit": "Apply",
 
         "settings-serviceAddButton": "Add a service",
         "settings-serviceListEmpty": "You don't have any service yet. Please add a service to continue.",

+ 4 - 2
cli/lang/fr.js

@@ -46,12 +46,14 @@ lang["fr"] = {
         "fileUploadCancel": "Annuler",
         "neterror": "Impossible de se connecter au chat !",
 
-        "setting-menu-services": "services",
-        "settings-services-title": "services",
+        "settingTitle": "Configuration",
+        "setting-menu-services": "Services",
+        "settings-services-title": "Services",
         "setting-menu-display": "Affichage",
         "settings-display-title": "Affichage",
         "setting-menu-privacy": "Vie privée",
         "settings-privacy-title": "Vie privée",
+        "settingCommit": "Appliquer",
 
         "settings-serviceAddButton": "Ajouter un service",
         "settings-serviceListEmpty": "Vous n'avez pas encore ajouté de service. Ajouter un service pour continuer.",

+ 1 - 1
cli/uiSettings.js

@@ -19,7 +19,7 @@ var Settings = (function() {
             document.getElementById(R.id.settings.wrapper).classList.remove("display-" +currentPage);
             document.getElementById("setting-menu-" +currentPage).classList.remove(R.klass.selected);
 
-            document.getElementById(R.id.settings.services.addSection).classList.remove(R.klass.hidden);
+            document.getElementById(R.id.settings.services.addSection).classList.add(R.klass.hidden);
         }
         document.getElementById(R.id.settings.wrapper).classList.add("display-" +page);
         document.getElementById("setting-menu-" +page).classList.add(R.klass.selected);

+ 5 - 2
cli/workflow.js

@@ -31,11 +31,14 @@ function initHljs() {
     xhr.timeout = 1000 * 60 * 1; // 3 min timeout
     xhr.onreadystatechange = function(e) {
         if (xhr.readyState === 4) {
-            var script = document.createElement("script");
+            var script = document.createElement("script"),
+                link = document.createElement("link");
 
             script.innerHTML = xhr.response;
             script.language = "text/javascript";
-            document.head.innerHTML += '<link href="hljs-androidstudio.css" rel="stylesheet"/>';
+            link.href = "hljs-androidstudio.css";
+            link.rel = "stylesheet";
+            document.head.appendChild(link);
             document.body.appendChild(script);
         }
     };

+ 0 - 5
srv/public/login.css

@@ -1,5 +0,0 @@
-body { text-align: center; display: flex; }
-.services h1 { font-family: Lato; }
-.services { display: inline-block; border: 1px solid #e0e1e2; width: 250px; margin: auto; padding: 14px; }
-.services a { display: block; margin: 5px 0; }
-.services a > * { width: 185px; height: 40px; }

+ 5 - 5
srv/public/mimouchat.min.js

@@ -10,9 +10,9 @@ function ja(a,b,c){var d=0;b.forEach(function(a){d=Math.max(this.push(a,c),d)}.b
 D.prototype.push=function(a,b){for(var c,d=!1,e,f=0,g=this.a.length;f<g;f++)if(c=this.a[f],c.id===a.id){e=c.update(a,b);d=!0;break}d||(c=this.i(a,b),this.a.push(c),e=c.l);for(;this.a.length>this.w;)this.a.shift();if(this.b)for(a=0;a<this.a.length;a++)this.a[a].version<b-this.b&&this.a.splice(a--,1);return e||0};function la(a){return a.a[a.a.length-1]}function ma(a,b){for(var c=0,d=a.a.length;c<d;c++)if(a.a[c].id==b)return a.a[c];return null}function ka(a){a.a.sort(function(a,c){return a.l-c.l})}
 z.prototype=Object.create(v.prototype);z.prototype.constructor=z;A.prototype=Object.create(v.prototype);A.prototype.constructor=A;"undefined"!==typeof module&&(module.I={hb:v,gb:z,jb:A,mb:D});function ia(a){this.id=a;this.j={};this.oa=this.O=null;this.version=0}ia.prototype.update=function(a,b){void 0!==a.name&&(this.name=a.name);void 0!==a.deleted&&(this.Fa=a.deleted);void 0!==a.status&&(this.status=a.status);void 0!==a.presence&&(this.a="away"!==a.presence);void 0!==a.isPresent&&(this.a=a.isPresent);a.isBot&&(this.Va=a.isBot);this.version=Math.max(this.version,b)};"undefined"!==typeof module&&(module.I.eb=ia);function na(){this.a=[]}na.prototype.push=function(a){this.a.push(a)};function oa(a,b){for(var c=0,d=a.a.length;c<d;c++)if(b===pa(a.a[c]))return a.a[c];return null}function qa(a,b){for(var c=0,d=a.a.length;c<d;c++){var e=a.a[c],f;for(f in e.j)if(!0===b(e.j[f],f))return}}function ra(a){for(var b=E.context,c=0,d=b.a.length;c<d&&!0!==a(b.a[c]);c++);}function H(a,b){for(var c=0,d=a.a.length;c<d;c++)if(a.a[c].j[b])return a.a[c];return null}
 function sa(a){for(var b=E.context,c=0,d=b.a.length;c<d;c++){var e=b.a[c].j[a];if(e)return e}return null}function ta(a){for(var b=E.context,c=[],d=0,e=b.a.length;d<e;d++){var f=b.a[d].j,g;for(g in f)a&&!a(f[g],b.a[d],g)||c.push(g)}return c}function I(a){for(var b=E.context,c=0,d=b.a.length;c<d;c++){var e=b.a[c].m[a];if(e)return e}return null}function ua(a){for(var b=E.context,c=0,d=b.a.length;c<d;c++)if(b.a[c].self.id===a)return!0;return!1}"undefined"!==typeof module&&(module.I.ib=na);var J={},K,va=[];function wa(){if(!c){for(var a=0,b=navigator.languages.length;a<b;a++)if(J.hasOwnProperty(navigator.languages[a])){var c=navigator.languages[a];break}c||(c="en")}K=J[c];console.log("Loading language pack: "+c);if(K.c)for(var d in K.c)if(c=document.getElementById(d))c.textContent=K.c[d];va.forEach(function(a){a()})};J.fr={ab:"Utilisateur inconnu",$a:"Channel inconnu",Ka:"Nouveau message",message:"Message",Ja:"Reseau",La:"(visible seulement par vous)",F:"Favoris",j:"Discutions",Na:"Discutions priv\u00e9es",Oa:"Partage sa position GPS",ok:"Ok",Ga:"Annuler",V:function(a){"string"!==typeof a&&(a=parseFloat(a));var b=new Date,c=new Date;a=new Date(a);b.setHours(0,0,0,0);c.setTime(b.getTime());c.setDate(c.getDate()-1);return a.getTime()>b.getTime()?a.toLocaleTimeString():a.getTime()>c.getTime()?"hier, "+a.toLocaleTimeString():
-a.toLocaleString()},ja:function(a,b){return a+"/"+b},c:{fileUploadCancel:"Annuler",neterror:"Impossible de se connecter au chat !","setting-menu-services":"services","settings-services-title":"services","setting-menu-display":"Affichage","settings-display-title":"Affichage","setting-menu-privacy":"Vie priv\u00e9e","settings-privacy-title":"Vie priv\u00e9e","settings-serviceAddButton":"Ajouter un service","settings-serviceListEmpty":"Vous n'avez pas encore ajout\u00e9 de service. Ajouter un service pour continuer.",
+a.toLocaleString()},ja:function(a,b){return a+"/"+b},c:{fileUploadCancel:"Annuler",neterror:"Impossible de se connecter au chat !",settingTitle:"Configuration","setting-menu-services":"Services","settings-services-title":"Services","setting-menu-display":"Affichage","settings-display-title":"Affichage","setting-menu-privacy":"Vie priv\u00e9e","settings-privacy-title":"Vie priv\u00e9e",settingCommit:"Appliquer","settings-serviceAddButton":"Ajouter un service","settings-serviceListEmpty":"Vous n'avez pas encore ajout\u00e9 de service. Ajouter un service pour continuer.",
 "settings-serviceAddConfirm":"Suivant"}};J.fr.D=function(a){return"(edit&eacute; "+J.fr.V(a)+")"};J.en={ab:"Unknown member",$a:"Unknown channel",Ka:"New message",message:"Message",Ja:"Network",La:"(only visible to you)",F:"Starred",j:"Channels",Na:"Direct messages",Oa:"Share your GPS location",ok:"Ok",Ga:"Cancel",V:function(a){"string"!==typeof a&&(a=parseFloat(a));var b=new Date,c=new Date;a=new Date(a);b.setHours(0,0,0,0);c.setTime(b.getTime());c.setDate(c.getDate()-1);return a.getTime()>b.getTime()?a.toLocaleTimeString():a.getTime()>c.getTime()?"yesterday, "+a.toLocaleTimeString():a.toLocaleString()},
-ja:function(a,b){return a+"/"+b},c:{fileUploadCancel:"Cancel",neterror:"Cannot connect to chat !","setting-menu-services":"services","settings-services-title":"services","setting-menu-display":"Display","settings-display-title":"Display","setting-menu-privacy":"Privacy","settings-privacy-title":"Privacy","settings-serviceAddButton":"Add a service","settings-serviceListEmpty":"You don't have any service yet. Please add a service to continue.","settings-serviceAddConfirm":"Next"}};
+ja:function(a,b){return a+"/"+b},c:{fileUploadCancel:"Cancel",neterror:"Cannot connect to chat !",settingTitle:"Settings","setting-menu-services":"Services","settings-services-title":"Services","setting-menu-display":"Display","settings-display-title":"Display","setting-menu-privacy":"Privacy","settings-privacy-title":"Privacy",settingCommit:"Apply","settings-serviceAddButton":"Add a service","settings-serviceListEmpty":"You don't have any service yet. Please add a service to continue.","settings-serviceAddConfirm":"Next"}};
 J.en.D=function(a){return"(edited "+J.en.V(a)+")"};var xa=function(){function a(a){this.text="";this.g=a}function b(b,c,d){this.T=c;this.f=null;this.h=[];this.a=d||"";this.ea="<"===this.a;this.pa="*"===this.a;this.da="_"===this.a;this.fa="~"===this.a||"-"===this.a;this.i=">"===this.a||"&gt;"===this.a;this.W=":"===this.a;this.ra="`"===this.a;this.Ca="```"===this.a;this.sa="\n"===this.a;this.ca=void 0!==d&&-1!==n.A.indexOf(d);this.g=b;this.ga=null;this.b=this.sa||this.ca?c+d.length-1:!1;this.ca&&(this.f=new a(this),this.h.push(this.f),this.f.text=d)}
 function c(a){return"A"<=a&&"Z">=a||"a"<=a&&"z">=a||"0"<=a&&"9">=a||-1!=="\u00e0\u00e8\u00ec\u00f2\u00f9\u00c0\u00c8\u00cc\u00d2\u00d9\u00e1\u00e9\u00ed\u00f3\u00fa\u00fd\u00c1\u00c9\u00cd\u00d3\u00da\u00dd\u00e2\u00ea\u00ee\u00f4\u00fb\u00c2\u00ca\u00ce\u00d4\u00db\u00e3\u00f1\u00f5\u00c3\u00d1\u00d5\u00e4\u00eb\u00ef\u00f6\u00fc\u00ff\u00c4\u00cb\u00cf\u00d6\u00dc\u0178\u00e7\u00c7\u00df\u00d8\u00f8\u00c5\u00e5\u00c6\u00e6\u0153".indexOf(a)}function d(a){a=a||h;for(var c=0,e=a.h.length;c<e;c++){var k=
 a.h[c];if(k instanceof b)if(k.b){if(k=d(k))return k}else return k}return null}function e(a,c){a.g instanceof b&&(a.g.h.splice(a.g.h.indexOf(a)+(c?1:0)),a.g.f=a.g.h[a.g.h.length-1],e(a.g,!0))}function f(a){return a}function g(a){return{link:a,text:a,Ia:!1}}var m,h,n={A:[],U:f,ba:f,$:g};b.prototype.ua=function(){return this.pa&&!!this.b||this.g instanceof b&&this.g.ua()};b.prototype.xa=function(){return this.da&&!!this.b||this.g instanceof b&&this.g.xa()};b.prototype.ya=function(){return this.fa&&!!this.b||
@@ -44,7 +44,7 @@ function bb(){if("Notification"in window)if("granted"===Notification.permission)
 function Q(){var a=document.createDocumentFragment(),b=M.id,c=null,d=0,e=null,f;M.F?document.getElementById("chatSystemContainer").classList.add("starred"):document.getElementById("chatSystemContainer").classList.remove("starred");Ma=[];E.a[b]&&E.a[b].a.forEach(function(b){if(b.i)b.S();else{var g=b.L(),h=!1;c&&c.H===b.H&&b.H?30>Math.abs(d-b.l)&&!(b instanceof z)?e.classList.add("chatmsg-same-ts"):d=b.l:(d=b.l,h=!0);(!c||c.l<=M.B)&&b.l>M.B?g.classList.add("chatmsg-first-unread"):g.classList.remove("chatmsg-first-unread");
 if(b instanceof z)e=c=null,d=0,a.appendChild(g),f=null;else{if(h||!f){var h=I(b.H),n=b.username,k=document.createElement("div"),l=document.createElement("div"),q=document.createElement("span"),r=document.createElement("img");k.Z=document.createElement("span");k.Z.className="chatmsg-author-img-wrapper";r.className="chatmsg-author-img";q.className="chatmsg-author-name";h?(q.textContent=h.name,r.src="api/avatar?user="+h.id):(q.textContent=n||"?",r.src="");k.Z.appendChild(r);l.appendChild(k.Z);l.appendChild(q);
 l.className="chatmsg-author";k.className="chatmsg-authorGroup";k.appendChild(l);k.content=document.createElement("div");k.content.className="chatmsg-author-messages";k.appendChild(k.content);f=k;Ma.push(f);a.appendChild(f)}c=b;e=g;f.content.appendChild(g)}}});b=document.getElementById("chatWindow");b.textContent="";b.appendChild(a);b.scrollTop=b.scrollHeight-b.clientHeight;cb();window.hasFocus&&Ya()}
-function db(a,b){if(a.classList.contains("chatmsg-hover-reply"))V&&(V=null,W()),T!==b&&(T=b,U());else if(a.classList.contains("chatmsg-hover-reaction")){var c=M.id,d=b.id;eb.aa(document.body,P,function(a){a&&Za(c,d,a)})}else a.classList.contains("chatmsg-hover-edit")?(T&&(T=null,U()),V!==b&&(V=b,W())):a.classList.contains("chatmsg-hover-edit")||a.classList.contains("chatmsg-hover-edit")||!a.classList.contains("chatmsg-hover-remove")||(T&&(T=null,U()),V&&(V=null,W()),fb(b))}
+function db(a,b){if(a.classList.contains("chatmsg-hover-reply"))V&&(V=null,W()),T!==b&&(T=b,U());else if(a.classList.contains("chatmsg-hover-reaction")){var c=M.id,d=b.id;eb.aa(document.body,P,function(a){a&&Za(c,d,a)})}else a.classList.contains("chatmsg-hover-edit")?(T&&(T=null,U()),V!==b&&(V=b,W())):a.classList.contains("chatmsg-hover-star")||a.classList.contains("chatmsg-hover-pin")||!a.classList.contains("chatmsg-hover-remove")||(T&&(T=null,U()),V&&(V=null,W()),fb(b))}
 function gb(a){function b(a,b){for(b=b||a.target;b!==a.currentTarget&&b;){if(b.id&&b.classList.contains("chatmsg-item"))return b.id;b=b.parentElement}}for(var c=a.target;c!==a.currentTarget&&c&&!c.classList.contains("chatmsg-hover");){var d;if(c.parentElement&&c.classList.contains("chatmsg-attachment-actions-item")){var e=c.dataset.attachmentIndex,f=c.dataset.actionIndex;if((d=b(a,c))&&void 0!==e&&void 0!==f){d=d.substr(d.lastIndexOf("_")+1);(a=ma(E.a[M.id],d))&&a.o[e]&&a.o[e].actions&&a.o[e].actions[f]&&
 hb(a,a.o[e],a.o[e].actions[f]);break}}if(c.parentElement&&c.parentElement.classList.contains("chatmsg-hover")){if(d=b(a,c))d=d.substr(d.lastIndexOf("_")+1),(a=ma(E.a[M.id],d))&&db(c,a);break}c=c.parentElement}}
 function hb(a,b,c){function d(){var d={actions:[c],attachment_id:b.id,callback_id:b.callback_id,channel_id:e,is_ephemeral:a instanceof A,message_ts:a.id},g=new XMLHttpRequest;g.open("POST","api/attachmentAction?serviceId="+a.H);g.send(JSON.stringify(d))}var e=M.id;c.confirm?La(Ka(new ya(c.confirm.title,c.confirm.text),c.confirm.ok_text,c.confirm.dismiss_text),d).aa():d()}function R(){document.getElementById("msgInput").focus()}
@@ -55,7 +55,7 @@ return!1});document.getElementById("fileUploadCancel").addEventListener("click",
 function(a){a.preventDefault();a=document.getElementById("msgInput");M&&a.value&&lb(a.value)&&(a.value="",T&&(T=null,U()),V&&(V=null,U()),document.getElementById("slashList").textContent="");R();return!1});window.addEventListener("blur",function(){window.hasFocus=!1});window.addEventListener("focus",function(){window.hasFocus=!0;Na=0;M&&Ya();R()});document.getElementById("chatWindow").addEventListener("scroll",cb);var a=0;document.getElementById("msgInput").addEventListener("input",function(){if(M){var b=
 Date.now();a+3E3<b&&(P.self.a||M instanceof t)&&(mb(),a=b);var b=[],c=this.value;if("/"===this.value[0]){var d=c.indexOf(" "),e=-1!==d,d=-1===d?c.length:d,c=c.substr(0,d);if(e){var f=nb.Ha(c);f&&b.push(f)}else b=nb.Ta(c);var f=P?P.i.data:{};for(m in f){var g=f[m];(!e&&g.name.substr(0,d)===c||e&&g.name===c)&&b.push(g)}}b.sort(function(a,b){return a.R.localeCompare(b.R)||a.name.localeCompare(b.name)});var m=document.getElementById("slashList");var d=document.createDocumentFragment();m.textContent="";
 e=0;for(c=b.length;e<c;e++){f=b[e];if(h!==f.R){var h=f.R;d.appendChild(ob(f.R))}d.appendChild(pb(f))}m.appendChild(d)}});window.hasFocus=!0;(function(){var a=document.getElementById("emojiButton");if("makeEmoji"in window){var c=window.makeEmoji("smile");c?a.innerHTML="<span class='emoji-small'>"+c.outerHTML+"</span>":a.style.backgroundImage='url("smile.svg")';(c=window.makeEmoji("paperclip"))?document.getElementById("attachFile").innerHTML="<span class='emoji-small'>"+c.outerHTML+"</span>":document.getElementById("attachFile").style.backgroundImage=
-'url("public/paperclip.svg")';a.addEventListener("click",function(){P&&eb.aa(document.body,P,function(a){a&&(document.getElementById("msgInput").value+=":"+a+":");R()})})}else a.classList.add("hidden")})();qb()});var rb=function(){function a(a){c&&(document.getElementById("settings").classList.remove("display-"+c),document.getElementById("setting-menu-"+c).classList.remove("selected"),document.getElementById("settings-serviceAddSection").classList.remove("hidden"));document.getElementById("settings").classList.add("display-"+a);document.getElementById("setting-menu-"+a).classList.add("selected");c=a}var b=!1,c=null,d={X:"services",display:"display",nb:"privacy"};document.getElementById("settingMenuItems").addEventListener("click",
+'url("public/paperclip.svg")';a.addEventListener("click",function(){P&&eb.aa(document.body,P,function(a){a&&(document.getElementById("msgInput").value+=":"+a+":");R()})})}else a.classList.add("hidden")})();qb()});var rb=function(){function a(a){c&&(document.getElementById("settings").classList.remove("display-"+c),document.getElementById("setting-menu-"+c).classList.remove("selected"),document.getElementById("settings-serviceAddSection").classList.add("hidden"));document.getElementById("settings").classList.add("display-"+a);document.getElementById("setting-menu-"+a).classList.add("selected");c=a}var b=!1,c=null,d={X:"services",display:"display",nb:"privacy"};document.getElementById("settingMenuItems").addEventListener("click",
 function(b){for(var c=b.target;b.currentTarget!==c&&c;c=c.parentNode)if(c.dataset&&c.dataset.target)for(var e in d)if(d[e]===c.dataset.target){a(d[e]);return}});document.getElementById("settings-serviceAddButton").addEventListener("click",function(a){a.preventDefault();document.getElementById("settings-serviceAddSection").classList.remove("hidden");return!1});document.getElementById("settings-serviceAddConfirm").addEventListener("click",function(a){a.preventDefault();document.location.href=document.getElementById("settings-serviceAddServiceList").value;
 return!1});return{display:function(c){b||(document.getElementById("settings").classList.remove("hidden"),b=!0);a(c||d.X);return this},Za:function(){return this},Xa:d}}();function sb(a){if(void 0!==a.latitude&&void 0!==a.longitude&&-90<=a.latitude&&90>=a.latitude&&-180<=a.longitude&&180>=a.longitude){var b=0,c=function(a,b,c,d){return new Promise(function(e,f){var g=new Image;g.addEventListener("load",function(){d.M=g;e(d)});g.addEventListener("error",function(){console.warn("Error loading tile ",{zoom:a,x:b,y:c});f(g)});g.crossOrigin="anonymous";g.src="https://c.tile.openstreetmap.org/"+a+"/"+b+"/"+c+".png"})},d=document.createElement("canvas"),e=document.createElement("canvas");
 d.height=d.width=e.height=e.width=300;var f=d.getContext("2d"),g=e.getContext("2d"),m=function(a,b,c){a=a*Math.PI/180;b=b*Math.PI/180;c=c*Math.PI/180;return Math.abs(6371E3*Math.acos(Math.pow(Math.sin(a),2)+Math.pow(Math.cos(a),2)*Math.cos(c-b)))},h=function(a,d,e,h){g.fillStyle="#808080";g.fillRect(0,0,300,300);f.fillStyle="#808080";f.fillRect(0,0,300,300);var l=Math.pow(2,a),k=(e+180)/360*l,n=(1-Math.log(Math.tan(d*Math.PI/180)+1/Math.cos(d*Math.PI/180))/Math.PI)/2*l,F=Math.floor(k),ba=Math.floor(n),
@@ -90,7 +90,7 @@ function Ya(){var a=M,b=N.indexOf(a);if(a.N>a.B){var c=E.a[a.id];if(c&&(c=c.a[c.
 c.readyState)if(c.response){var a=new Image;a.onload=function(){var c=document.createElement("canvas");c.height=c.width=w;c=c.getContext("2d");c.drawImage(a,0,0,w,w);var c=c.getImageData(0,0,w,w),d=0,e;for(e=0;e<c.width*c.height*4;e+=4)c.data[e]=c.data[e+1]=c.data[e+2]=(c.data[e]+c.data[e+1]+c.data[e+2])/3,c.data[e+3]=50,d+=c.data[e];if(50>d/(c.height*c.width))for(e=0;e<c.width*c.height*4;e+=4)c.data[e]=c.data[e+1]=c.data[e+2]=255-c.data[e];b(c)};a.onerror=function(){b(null)};a.src=window.URL.createObjectURL(c.response)}else b(null)};
 c.open("GET",a,!0);c.send(null)}function e(){var a=h.createLinearGradient(0,0,0,k);a.addColorStop(0,"#4D394B");a.addColorStop(1,"#201820");h.fillStyle=a;h.fillRect(0,0,n,k);return h.getImageData(0,0,n,k)}function f(a,b){for(var c=(a.height-b.height)/2,d=0;d<b.height;d++)for(var e=0;e<b.width;e++){var f=b.data[4*(d*b.width+e)]/255,g=4*((d+c)*a.width+e+c);a.data[g]*=f;a.data[g+1]*=f;a.data[g+2]*=f}return a}function g(a,b,c,d){var e=Math.floor(d);a=[a.data[e*n*4+0],a.data[e*n*4+1],a.data[e*n*4+2]];h.fillStyle=
 "#"+(1.1*a[0]<<16|1.1*a[1]<<8|1.1*a[2]).toString(16);h.beginPath();h.moveTo(c+l/2,d+q);h.lineTo(c-q+l,d+l/2);h.lineTo(c+l/2,d-q+l);h.lineTo(c+q,d+l/2);h.closePath();h.fill();h.putImageData(f(h.getImageData(c+q,d+q,r,r),b),c+q,d+q)}var m=document.createElement("canvas"),h=m.getContext("2d"),n=m.width=250,k=m.height=290,l=(n-40)/3,q=.1*l,r=Math.floor(l-2*q),w=.5*r,x={},y={},C={};return function(b,d,f){if(x[b])f(x[b]);else if(C[b])y[b]?y[b].push(f):y[b]=[f];else{var g=e(),h=[];C[b]=!0;y[b]?y[b].push(f):
-y[b]=[f];for(var k in d)d[k].Fa||d[k].Va||h.push({src:"api/avatar?user="+d[k].id});c(h,function(c){a(g,c);x[b]=m.toDataURL();y[b].forEach(function(a){a(x[b])})})}}}();var X=0,M=null,P=null,T=null,V=null;function jb(){var a=new XMLHttpRequest;a.timeout=6E4;a.onreadystatechange=function(){if(4===a.readyState){var b=document.createElement("script");b.innerHTML=a.response;b.language="text/javascript";document.head.innerHTML+='<link href="hljs-androidstudio.css" rel="stylesheet"/>';document.body.appendChild(b)}};a.open("GET","highlight.pack.js",!0);a.send(null)}
+y[b]=[f];for(var k in d)d[k].Fa||d[k].Va||h.push({src:"api/avatar?user="+d[k].id});c(h,function(c){a(g,c);x[b]=m.toDataURL();y[b].forEach(function(a){a(x[b])})})}}}();var X=0,M=null,P=null,T=null,V=null;function jb(){var a=new XMLHttpRequest;a.timeout=6E4;a.onreadystatechange=function(){if(4===a.readyState){var b=document.createElement("script"),c=document.createElement("link");b.innerHTML=a.response;b.language="text/javascript";c.href="hljs-androidstudio.css";c.rel="stylesheet";document.head.appendChild(c);document.body.appendChild(b)}};a.open("GET","highlight.pack.js",!0);a.send(null)}
 function Db(){var a=M,b=new XMLHttpRequest;b.open("GET","api/hist?room="+a.id,!0);b.onreadystatechange=function(){if(4===b.readyState&&b.response){var c=b.response;try{c=JSON.parse(c)}catch(e){}var d=E.a[a.id];d?d=!!ja(d,c,Date.now()):(E.a[a.id]=new Y(a,100,c,Date.now()),d=!0);d&&(zb(H(E.context,a.id),a,c),a===M&&Q())}};b.send(null)}
 function Eb(a){var b=new XMLHttpRequest;b.timeout=6E4;b.onreadystatechange=function(){if(4===b.readyState)if(b.status){var c=null,d=2===Math.floor(b.status/100);if(d){X&&(X=0,Wa(!0));c=b.response;try{c=JSON.parse(c)}catch(e){c=null}}else X?(X+=Math.floor((X||5)/2),X=Math.min(60,X)):(X=5,Wa(!1));a(d,c)}else X&&(X=0,Wa(!0)),Eb(a)};b.open("GET","api?v="+E.b,!0);b.send(null)}function mb(){var a=new XMLHttpRequest;a.open("POST","api/typing?room="+M.id,!0);a.send(null)}
 function Fb(a,b){a?(b&&E.update(b),qb()):setTimeout(qb,1E3*X)}function qb(){Eb(Fb)}function ib(a){M&&document.getElementById("room_"+M.id).classList.remove("selected");document.getElementById("room_"+a.id).classList.add("selected");document.body.classList.remove("no-room-selected");M=a;P=H(E.context,a.id);Xa();Sa(P.a.id,P.m,function(a){document.getElementById("chatCtx").style.backgroundImage="url("+a+")"});(!E.a[M.id]||100>E.a[M.id].a.length)&&Db()}

+ 18 - 4
srv/public/style.css

@@ -8,10 +8,16 @@
     100% { bottom: 1px; }
 }
 
-body { display: flex; margin: 0; padding: 0; font-family: Lato, sans-serif; height: 100%; }
+body { display: flex; margin: 0; padding: 0; font-family: Lato, sans-serif; height: 100%; background: #eeeef1; }
+h3 { margin: 0; padding: 10px 0; }
 
-.button { border: 1px solid black; border-radius: 3px; background: rgb(250, 251, 253); cursor: pointer; font: 13.3333px Arial; margin: 0 8px 8px 0; padding: 4px 8px; text-align: center; }
-.button-container { margin: 8px 0; padding: 0; }
+.login-services { display: inline-block; border: 1px solid #e0e1e2; width: 250px; margin: auto; padding: 14px; background: #f5f5ff; text-align: center; }
+.login-services h1 { font-family: Lato; }
+.login-services a { display: block; margin: 5px 0; }
+.login-services a > * { width: 185px; height: 40px; }
+
+button, .button { border: 1px solid black; border-radius: 3px; background: rgb(250, 251, 253); cursor: pointer; font: 13.3333px Arial; margin: 0 8px 8px 0; padding: 4px 8px; text-align: center; }
+.button-container { margin: 8px -8px 0 8px; padding: 0; }
 
 .chat-context { display: inline-block; max-height: 100%; width: 250px; overflow-x: hidden; overflow-y: auto; background-color: #4D394B; background-position: bottom; background-repeat: no-repeat; overflow: auto; }
 .chatsystem-container { display: flex; flex-direction: column; flex: 1; overflow: hidden; padding: 0; }
@@ -197,11 +203,19 @@ body { display: flex; margin: 0; padding: 0; font-family: Lato, sans-serif; heig
 .full-width { display: block; width: 100%; }
 
 .maci-wrapper { position: fixed; z-index: 5000; top: 50%; left: 50%; transform: translate(-50%, -50%); margin: auto; }
-.maci-wrapper.fixed-width { width: 500px; }
+.maci-wrapper.fixed-width { border: 1px solid #e0e1e2; width: 100%; max-width: 500px; background: #f5f5ff; }
 .maci-content { margin: 15px; }
+.maci-content header { margin: 10px 0; }
 .maci-content footer { text-align: right; }
 
+.maci-setting { position: fixed; display: flex; flex-direction: column; top: 0; bottom: 0; left: 0; right: 0; max-width: 750px; max-height: 500px; margin: auto; background: #f5f5ff; border: 1px solid #e0e1e2; }
+.settingHead { background: grey; padding: 0 8px; }
+.settingBody { display: flex; margin: 8px; flex: 1; }
+.settingNav { display: inline-block; width: 150px; }
+.settingNav ul { padding: 0; list-style: none; }
+.settingContent { display: inline-block; }
 .settingContent > section { display: none; }
+.settingFooter { display: inline-block; line-height: 42px; min-height: 42px; text-align: right; }
 .maci-setting.display-services .settings-services { display: block; }
 .maci-setting.display-display .settings-display { display: block; }
 .maci-setting.display-privacy .settings-privacy { display: block; }

+ 5 - 5
srv/src/template/index.js

@@ -11,7 +11,7 @@ module.exports.exec = function(req, res) {
                     + `<section class="maci-wrapper fixed-width"><div class="maci-content">
                     <header id="cguHeader">Merci d'accepter les Conditions Generales d'Utilisation suivantes:</header>
                     <textarea id="cguContent" class="full-width"></textarea>
-                    <footer><button id="cguButton">J'accepte les Conditions Generales d'Utilisation</button></footer>
+                    <footer class="button-container"><button id="cguButton">J'accepte les Conditions Generales d'Utilisation</button></footer>
                     </div></section>`
                     +templates.footer(["cgu.min.js"])
             };
@@ -33,11 +33,11 @@ module.exports.exec = function(req, res) {
               <div class="chat-context-roominfo hidden"></div>
           </aside>
           <section id="settings" class="maci-setting hidden">
-              <header>
-                  <div id="settingTitle"></div>
+              <header class="settingHead">
+                  <h3 id="settingTitle"></h3>
                   <div id="settingDiscardClose"></div>
               </header>
-              <div>
+              <div class="settingBody">
                   <aside class="settingNav">
                       <ul id="settingMenuItems">
                           <li id="setting-menu-services" data-target="services"></li>
@@ -47,7 +47,7 @@ module.exports.exec = function(req, res) {
                   </aside>
                   <div class="settingContent">
                       <section class="settings-services">
-                          <h1 id="settings-services-title"></h1>
+                          <h4 id="settings-services-title"></h4>
                           <div class="button-container"><button id="settings-serviceAddButton"></button></div>
                           <div class="hidden" id="settings-serviceAddSection">
                               <select id="settings-serviceAddServiceList">`

+ 2 - 2
srv/src/template/login.js

@@ -113,8 +113,8 @@ function makeLoginPage() {
         +"?client_id=" +config.login.facebook.clientId
         +"&redirect_uri=" +config.login.facebook.redirect_uri) : null;
 
-    return templates.header("Mimou - login", ["login.css"])
-        +`<div class="services"><h1>Login</h1>`
+    return templates.header("Mimou - login", ["style.css"])
+        +`<div class="login-services"><h1>Login</h1>`
         +(googleUri ? `<a href="${googleUri}"><img src="${config.rootUrl}btn_google_connect.png"></a>` : "")
         +(facebookUri ? `<a href="${facebookUri}"><img src="${config.rootUrl}btn_facebook_connect.png"></a>` : "")
         +(slackUri ? `<a href="${slackUri}"><img src="${config.rootUrl}btn_slack_connect.png"></a>` : "")