mirror of
https://github.com/pierre42100/ComunicWeb
synced 2024-11-22 12:09:21 +00:00
Added incognito mode
This commit is contained in:
parent
f76d9ba9cd
commit
a0d644469d
23
assets/css/components/incognito/ui.css
Normal file
23
assets/css/components/incognito/ui.css
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/**
|
||||||
|
* Incognito mode stylesheet
|
||||||
|
*
|
||||||
|
* @author Pierre HUBERT
|
||||||
|
*/
|
||||||
|
|
||||||
|
#incognito-block {
|
||||||
|
position: fixed;
|
||||||
|
left: 10px;
|
||||||
|
bottom: 54px;
|
||||||
|
text-align: center;
|
||||||
|
background-color: #001F3F;
|
||||||
|
padding: 10px;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
#incognito-block i {
|
||||||
|
font-size: 200%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#incognito-block span {
|
||||||
|
display: block;
|
||||||
|
}
|
@ -33,6 +33,10 @@ ComunicWeb.common.api = {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Enable incognito mode if required
|
||||||
|
if(ComunicWeb.components.incognito.management.isEnabled())
|
||||||
|
params.incognito = true;
|
||||||
|
|
||||||
//Prepare data to send in request
|
//Prepare data to send in request
|
||||||
var count = 0;
|
var count = 0;
|
||||||
var datas = "";
|
var datas = "";
|
||||||
@ -90,7 +94,11 @@ ComunicWeb.common.api = {
|
|||||||
data.append('userToken2', tokens.token2);
|
data.append('userToken2', tokens.token2);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Enable incognito mode if required
|
||||||
|
if(ComunicWeb.components.incognito.management.isEnabled())
|
||||||
|
data.append("incognito", true);
|
||||||
|
|
||||||
//Create request
|
//Create request
|
||||||
var apiXHR = new XMLHttpRequest();
|
var apiXHR = new XMLHttpRequest();
|
||||||
|
@ -1107,7 +1107,35 @@ var ComunicWeb = {
|
|||||||
*/
|
*/
|
||||||
darkTheme: {
|
darkTheme: {
|
||||||
//TODO : implement
|
//TODO : implement
|
||||||
}
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Incognito mode component
|
||||||
|
*/
|
||||||
|
incognito: {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Keyboard catcher
|
||||||
|
*/
|
||||||
|
keyboard: {
|
||||||
|
//TODO : implement
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Incognito management
|
||||||
|
*/
|
||||||
|
management: {
|
||||||
|
//TODO : implement
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UI management
|
||||||
|
*/
|
||||||
|
ui: {
|
||||||
|
//TODO : implement
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -277,6 +277,11 @@ ComunicWeb.common.page = {
|
|||||||
|
|
||||||
//Call the method related to the page
|
//Call the method related to the page
|
||||||
eval(pageInfos.methodHandler + ("(additionnalData, pageTarget);"));
|
eval(pageInfos.methodHandler + ("(additionnalData, pageTarget);"));
|
||||||
|
|
||||||
|
//Propagate information
|
||||||
|
SendEvent("openPage", {
|
||||||
|
page: pageURI
|
||||||
|
});
|
||||||
|
|
||||||
//Success
|
//Success
|
||||||
return true;
|
return true;
|
||||||
|
@ -48,6 +48,16 @@ ComunicWeb.common.system = {
|
|||||||
*/
|
*/
|
||||||
ComunicWeb.common.langs.initLanguages();
|
ComunicWeb.common.langs.initLanguages();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize incognito mode detection
|
||||||
|
*/
|
||||||
|
ComunicWeb.components.incognito.management.init();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Refresh dark theme mode
|
||||||
|
*/
|
||||||
|
ComunicWeb.components.darkTheme.refresh();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* What to do after login refresh
|
* What to do after login refresh
|
||||||
*/
|
*/
|
||||||
@ -81,11 +91,6 @@ ComunicWeb.common.system = {
|
|||||||
}), 25000);
|
}), 25000);
|
||||||
ComunicWeb.common.cacheManager.registerInterval(autoRefresh);
|
ComunicWeb.common.cacheManager.registerInterval(autoRefresh);
|
||||||
|
|
||||||
/**
|
|
||||||
* Refresh dark theme mode
|
|
||||||
*/
|
|
||||||
ComunicWeb.components.darkTheme.refresh();
|
|
||||||
|
|
||||||
//Success
|
//Success
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
@ -682,4 +682,22 @@ function ApplySceditorStyle(textarea){
|
|||||||
|
|
||||||
//Apply new styles to body
|
//Apply new styles to body
|
||||||
iframeDOM.body.className += " sceditor-iframe-body";
|
iframeDOM.body.className += " sceditor-iframe-body";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send a new javascript event
|
||||||
|
*
|
||||||
|
* @param {String} name The name of the event to create
|
||||||
|
* @param {Object} details Information about the event to create
|
||||||
|
*/
|
||||||
|
function SendEvent(name, details){
|
||||||
|
|
||||||
|
var event = new CustomEvent(name, {
|
||||||
|
detail: details,
|
||||||
|
bubbles: true,
|
||||||
|
cancelable: false
|
||||||
|
});
|
||||||
|
|
||||||
|
document.dispatchEvent(event);
|
||||||
|
|
||||||
}
|
}
|
31
assets/js/components/incognito/keyboard.js
Normal file
31
assets/js/components/incognito/keyboard.js
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/**
|
||||||
|
* Incognito mode keyboard catcher
|
||||||
|
*
|
||||||
|
* @author Pierre HUBERT
|
||||||
|
*/
|
||||||
|
|
||||||
|
ComunicWeb.components.incognito.keyboard = {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize incognito mode requests detection
|
||||||
|
*/
|
||||||
|
init: function(){
|
||||||
|
|
||||||
|
//We need to catch keyboard press to check if F6 key is pressed
|
||||||
|
window.addEventListener("keydown", function(e){
|
||||||
|
|
||||||
|
//Filter key
|
||||||
|
if(e.keyCode != 117)
|
||||||
|
return;
|
||||||
|
|
||||||
|
//If incognito mode is enabled, disable it
|
||||||
|
if(ComunicWeb.components.incognito.management.isEnabled())
|
||||||
|
ComunicWeb.components.incognito.management.setEnabled(false);
|
||||||
|
|
||||||
|
//Else we ask user confirmation
|
||||||
|
else
|
||||||
|
ComunicWeb.components.incognito.ui.confirmEnable();
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
59
assets/js/components/incognito/management.js
Normal file
59
assets/js/components/incognito/management.js
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/**
|
||||||
|
* Incognito mode management
|
||||||
|
*
|
||||||
|
* @author Pierre HUBERT
|
||||||
|
*/
|
||||||
|
|
||||||
|
ComunicWeb.components.incognito.management = {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This variable is use to check if incognito mode
|
||||||
|
* has already be initialized or not
|
||||||
|
*/
|
||||||
|
_is_init: false,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specify whether incognito mode should be enabled or not
|
||||||
|
*/
|
||||||
|
_local_storage_name: "incognito_mode",
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize incognito component
|
||||||
|
*/
|
||||||
|
init: function(){
|
||||||
|
|
||||||
|
//This code should be run only once
|
||||||
|
if(this._is_init)
|
||||||
|
return;
|
||||||
|
this._is_init = true;
|
||||||
|
|
||||||
|
log("Initialize incognito mode");
|
||||||
|
|
||||||
|
//Initialize components
|
||||||
|
ComunicWeb.components.incognito.keyboard.init();
|
||||||
|
ComunicWeb.components.incognito.ui.init();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check out whether incognito mode is enabled or not
|
||||||
|
*
|
||||||
|
* @return {Boolean} TRUE if incognito mode is enabled / FALSE else
|
||||||
|
*/
|
||||||
|
isEnabled: function(){
|
||||||
|
return localStorage.getItem(this._local_storage_name) === "true";
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update status of incognito mode
|
||||||
|
*
|
||||||
|
* @param {Boolean} enable TRUE to enable incognito mode / FALSE else
|
||||||
|
*/
|
||||||
|
setEnabled: function(enable){
|
||||||
|
localStorage.setItem(this._local_storage_name, enable ? "true" : "false");
|
||||||
|
|
||||||
|
//Propagate information
|
||||||
|
SendEvent("incognitoStatusChanged", {
|
||||||
|
enabled: enable
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
97
assets/js/components/incognito/ui.js
Normal file
97
assets/js/components/incognito/ui.js
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
/**
|
||||||
|
* Incognito mode management
|
||||||
|
*
|
||||||
|
* @author Pierre HUBERT
|
||||||
|
*/
|
||||||
|
|
||||||
|
ComunicWeb.components.incognito.ui = {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize UI component
|
||||||
|
*/
|
||||||
|
init: function(){
|
||||||
|
|
||||||
|
//Initialize incognito mode updates detection
|
||||||
|
document.addEventListener("incognitoStatusChanged", function(e){
|
||||||
|
ComunicWeb.components.incognito.ui.statusChanged();
|
||||||
|
})
|
||||||
|
|
||||||
|
document.addEventListener("openPage", function(){
|
||||||
|
ComunicWeb.components.incognito.ui.statusChanged();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show confirmation dialog to enable incognito mode
|
||||||
|
*/
|
||||||
|
confirmEnable: function(){
|
||||||
|
|
||||||
|
//Ask user confirmation
|
||||||
|
ComunicWeb.common.messages.confirm(
|
||||||
|
"Are you sure do you want to enable incognito mode? When this mode is enabled, you can use Comunic while appearing as disconnected for your friends...",
|
||||||
|
function(confirm){
|
||||||
|
|
||||||
|
if(!confirm)
|
||||||
|
return;
|
||||||
|
|
||||||
|
//Enable incognito mode
|
||||||
|
ComunicWeb.components.incognito.management.setEnabled(true);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called each time incognito status is updated
|
||||||
|
*/
|
||||||
|
statusChanged: function(){
|
||||||
|
|
||||||
|
var enabled = ComunicWeb.components.incognito.management.isEnabled();
|
||||||
|
var incognitoBlock = byId("incognito-block");
|
||||||
|
|
||||||
|
//Check if incognito mode is disabled
|
||||||
|
if(!enabled){
|
||||||
|
|
||||||
|
if(incognitoBlock != null)
|
||||||
|
//Remove incognito block
|
||||||
|
incognitoBlock.remove();
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Nothing has to done if incognito block is already visible
|
||||||
|
if(incognitoBlock)
|
||||||
|
return;
|
||||||
|
|
||||||
|
//Create incognito block
|
||||||
|
incognitoBlock = createElem2({
|
||||||
|
type: "div",
|
||||||
|
appendTo: document.body,
|
||||||
|
id: "incognito-block",
|
||||||
|
});
|
||||||
|
|
||||||
|
createElem2({
|
||||||
|
type: "i",
|
||||||
|
appendTo: incognitoBlock,
|
||||||
|
class: "fa fa-user-secret",
|
||||||
|
});
|
||||||
|
|
||||||
|
createElem2({
|
||||||
|
type: "span",
|
||||||
|
appendTo: incognitoBlock,
|
||||||
|
innerHTML: "Incognito mode"
|
||||||
|
});
|
||||||
|
|
||||||
|
var disableLink = createElem2({
|
||||||
|
type: "span",
|
||||||
|
appendTo: incognitoBlock,
|
||||||
|
class: "a",
|
||||||
|
innerHTML: "Disable"
|
||||||
|
});
|
||||||
|
|
||||||
|
disableLink.addEventListener("click", function(){
|
||||||
|
ComunicWeb.components.incognito.management.setEnabled(false);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -215,6 +215,9 @@ class Dev {
|
|||||||
"css/components/notifications/dropdown.css",
|
"css/components/notifications/dropdown.css",
|
||||||
"css/components/notifications/ui.css",
|
"css/components/notifications/ui.css",
|
||||||
|
|
||||||
|
//Incognito mode component
|
||||||
|
"css/components/incognito/ui.css",
|
||||||
|
|
||||||
//Pages stylesheets
|
//Pages stylesheets
|
||||||
//User Page
|
//User Page
|
||||||
"css/pages/userPage/main.css",
|
"css/pages/userPage/main.css",
|
||||||
@ -425,6 +428,11 @@ class Dev {
|
|||||||
//Dark theme component
|
//Dark theme component
|
||||||
"js/components/darkTheme.js",
|
"js/components/darkTheme.js",
|
||||||
|
|
||||||
|
//Incognito mode component
|
||||||
|
"js/components/incognito/ui.js",
|
||||||
|
"js/components/incognito/management.js",
|
||||||
|
"js/components/incognito/keyboard.js",
|
||||||
|
|
||||||
//User scripts
|
//User scripts
|
||||||
"js/user/loginTokens.js",
|
"js/user/loginTokens.js",
|
||||||
"js/user/userLogin.js",
|
"js/user/userLogin.js",
|
||||||
|
Loading…
Reference in New Issue
Block a user