Compare commits
39 Commits
Author | SHA1 | Date | |
---|---|---|---|
b0423fad62 | |||
|
efa0e80186 | ||
|
5b1a1c57df | ||
|
d66e7b9aa5 | ||
|
22fb8b0cf9 | ||
|
29ebc61627 | ||
|
127cf24f15 | ||
|
608a9c7d67 | ||
|
670584af80 | ||
|
0370665de4 | ||
|
8328b75118 | ||
|
415720c7b7 | ||
|
5d0cb4026c | ||
|
0fd0970a42 | ||
|
b9fd444c51 | ||
|
939a07b231 | ||
|
c070ffde03 | ||
|
56c39791cd | ||
|
58e89852c3 | ||
|
083a6a5cea | ||
|
a2a216f9c9 | ||
|
3df61ed87a | ||
|
63f5452107 | ||
|
e4db9ee05c | ||
|
bc92cbce63 | ||
|
db5cde70cc | ||
|
f8a0ea7f62 | ||
|
0e70ab2c42 | ||
|
228837da16 | ||
|
dcae32b426 | ||
|
dd14c612e4 | ||
|
0c4977a431 | ||
|
516f7ef01f | ||
|
4d0550934a | ||
|
a25b3aaa22 | ||
|
f0b1b98023 | ||
|
39bacf50bb | ||
|
0e407eb6a6 | ||
|
2a21c833aa |
@ -1,8 +1,11 @@
|
||||
Copy of Working Version of Clipperz
|
||||
|
||||
Original: http://git.whoc.org.uk/git/password-manager.git
|
||||
# ![Clipperz icon][icon] CLIPPERZ - Online Password Manager
|
||||
|
||||
[icon]: ./Icon.png
|
||||
|
||||
##What does Clipperz do?
|
||||
## What does Clipperz do?
|
||||
|
||||
Clipperz is a smart online vault where you can store confidential data without worrying about security. It can be used to save and manage passwords, private notes, burglar alarm codes, credit and debit card details, PINs, software keys, …
|
||||
Since passwords are the most common type of private information that you need to protect, we have added a great deal of functionality to make Clipperz a great [online password manager][home]. Read more on the [Clipperz website][home].
|
||||
@ -28,7 +31,7 @@ As an example, the current PHP backend lacks several critical capabilities such
|
||||
Please note: the actual Clipperz service use a far more robust backend, but the communication protocol between backend and frontend is of course identical.
|
||||
|
||||
[app]: https://clipperz.is/app/
|
||||
[CA]: https://clipperz.is/contributor_agreement/
|
||||
[CA]: https://clipperz.is/open_source/contributor_agreement/
|
||||
[contact]: https://clipperz.is/about/contacts/
|
||||
|
||||
|
||||
@ -61,7 +64,7 @@ Please [download][CA] and review the Contributor Agreement for a complete unders
|
||||
## Building
|
||||
In order to build the deployable version, you need to invoke the following command:
|
||||
|
||||
git clone git@github.com:clipperz/password-manager.git
|
||||
git clone https://github.com/clipperz/password-manager.git
|
||||
cd password-manager
|
||||
./scripts/build install --backends php python --frontends delta
|
||||
|
||||
|
@ -438,6 +438,11 @@ class message(HandlerMixin):
|
||||
result['oldestUsedEncryptedVersion'] = oldest_encryption_version
|
||||
result['versions'] = record_versions
|
||||
result['currentVersion'] = record.current_record_version.reference
|
||||
record.current_record_version.access()
|
||||
record.access()
|
||||
db.session.add(record)
|
||||
db.session.add(record_version)
|
||||
db.session.commit()
|
||||
return jsonify({'result': result})
|
||||
|
||||
@login_required
|
||||
@ -659,6 +664,15 @@ class message(HandlerMixin):
|
||||
result['result'] = 'done'
|
||||
return jsonify({'result': result})
|
||||
|
||||
@login_required
|
||||
def getCertificatesStatus(self, parameters, request):
|
||||
"""
|
||||
Provides support for BTC Certificate feature.
|
||||
|
||||
No idea how it works.
|
||||
"""
|
||||
return jsonify({'result': {}})
|
||||
|
||||
|
||||
class logout(HandlerMixin):
|
||||
|
||||
|
@ -104,8 +104,12 @@ class RecordVersion(db.Model):
|
||||
self.version = self.record.version
|
||||
self.previous_version_key = recordVersionData['previousVersionKey']
|
||||
self.update_date = datetime.datetime.utcnow()
|
||||
self.access_date = datetime.datetime.utcnow()
|
||||
|
||||
self.record.update(someData['record'], self)
|
||||
|
||||
def access(self):
|
||||
self.access_date = datetime.datetime.now()
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@ -144,9 +148,13 @@ class Record(db.Model):
|
||||
self.data = data['data']
|
||||
self.api_version = data['version']
|
||||
self.update_date = datetime.datetime.now()
|
||||
self.access_date = datetime.datetime.now()
|
||||
self.current_record_version = record_version
|
||||
self.version += 1
|
||||
|
||||
def access(self):
|
||||
self.access_date = datetime.datetime.now()
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"request.path": "../index.php",
|
||||
"dump.path": "../dump.php",
|
||||
"dump.path": "/../dump.php?frontend=",
|
||||
"should.pay.toll": "false"
|
||||
}
|
||||
|
@ -11,7 +11,22 @@ header('Content-Disposition: attachment; filename=Clipperz_'.date("Ymd").'.html'
|
||||
include "./objects/class.onetimepassword.php";
|
||||
include "./objects/class.onetimepasswordstatus.php";
|
||||
|
||||
$htmlContent = file_get_contents("../index.html");
|
||||
//$htmlContent = file_get_contents("../index.html");
|
||||
switch ($_GET["frontend"]) {
|
||||
case 'beta':
|
||||
$htmlContent = file_get_contents("beta/index.html");
|
||||
break;
|
||||
case 'gamma':
|
||||
$htmlContent = file_get_contents("gamma/index.html");
|
||||
break;
|
||||
case 'delta':
|
||||
$htmlContent = file_get_contents("delta/index.html");
|
||||
break;
|
||||
default:
|
||||
exit ("Invalid Frontend");
|
||||
|
||||
}
|
||||
|
||||
|
||||
session_start();
|
||||
|
||||
|
@ -409,7 +409,11 @@ error_log("message");
|
||||
$recordStats["updateDate"] = $record->update_date;
|
||||
$recordsStats[$record->reference] = $recordStats;
|
||||
}
|
||||
if ( isset( $recordsStats ) ) {
|
||||
$result["recordsStats"] = $recordsStats;
|
||||
} else {
|
||||
$result["recordsStats"] = NULL;
|
||||
}
|
||||
|
||||
$result["statistics"] = $user->statistics;
|
||||
$result["version"] = $user->version;
|
||||
@ -543,7 +547,11 @@ error_log("message");
|
||||
|
||||
$user->Save();
|
||||
|
||||
if (isset( $parameters["parameters"]["records"]["deleted"] ) ) {
|
||||
$recordToDeleteReferenceList = $parameters["parameters"]["records"]["deleted"];
|
||||
} else {
|
||||
$recordToDeleteReferenceList = NULL;
|
||||
}
|
||||
$recordList = array();
|
||||
$c = count($recordToDeleteReferenceList);
|
||||
for ($i=0; $i<$c; $i++) {
|
||||
|
@ -17,19 +17,12 @@
|
||||
$databaseUser = $GLOBALS['configuration']['user'];
|
||||
$databasePassword = $GLOBALS['configuration']['pass'];
|
||||
$databasePort = $GLOBALS['configuration']['port'];
|
||||
$this->connection = mysql_connect ($serverName.":".$databasePort, $databaseUser, $databasePassword);
|
||||
if ($this->connection)
|
||||
{
|
||||
if (!mysql_select_db ($databaseName))
|
||||
$this->connection = mysqli_connect ($serverName, $databaseUser, $databasePassword , $databaseName, $databasePort);
|
||||
if (!$this->connection)
|
||||
{
|
||||
throw new Exception('I cannot find the specified database "'.$databaseName.'". Please edit configuration.php.');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception('I cannot connect to the database. Please edit configuration.php with your database configuration.');
|
||||
}
|
||||
}
|
||||
|
||||
public static function Connect()
|
||||
{
|
||||
@ -43,19 +36,19 @@
|
||||
|
||||
public static function Reader($query, $connection)
|
||||
{
|
||||
$cursor = mysql_query($query, $connection);
|
||||
$cursor = mysqli_query($connection, $query);
|
||||
return $cursor;
|
||||
}
|
||||
|
||||
public static function Read($cursor)
|
||||
{
|
||||
return mysql_fetch_assoc($cursor);
|
||||
return mysqli_fetch_assoc($cursor);
|
||||
}
|
||||
|
||||
public static function NonQuery($query, $connection)
|
||||
{
|
||||
mysql_query($query, $connection);
|
||||
$result = mysql_affected_rows($connection);
|
||||
mysqli_query($connection, $query);
|
||||
$result = mysqli_affected_rows($connection);
|
||||
if ($result == -1)
|
||||
{
|
||||
return false;
|
||||
@ -66,14 +59,14 @@
|
||||
|
||||
public static function Query($query, $connection)
|
||||
{
|
||||
$result = mysql_query($query, $connection);
|
||||
return mysql_num_rows($result);
|
||||
$result = mysqli_query($connection, $query);
|
||||
return mysqli_num_rows($result);
|
||||
}
|
||||
|
||||
public static function InsertOrUpdate($query, $connection)
|
||||
{
|
||||
$result = mysql_query($query, $connection);
|
||||
return intval(mysql_insert_id($connection));
|
||||
$result = mysqli_query($connection, $query);
|
||||
return intval(mysqli_insert_id($connection));
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
@ -92,10 +92,10 @@ class POG_Base
|
||||
return $objectList;
|
||||
}
|
||||
|
||||
private function CreateObjects($mysql_result, $objectClass, $lazyLoad = true)
|
||||
private function CreateObjects($mysqli_result, $objectClass, $lazyLoad = true)
|
||||
{
|
||||
$objectList = array();
|
||||
while ($row = mysql_fetch_assoc($mysql_result))
|
||||
while ($row = mysqli_fetch_assoc($mysqli_result))
|
||||
{
|
||||
$pog_object = new $objectClass();
|
||||
$this->PopulateObjectAttributes($row, $pog_object);
|
||||
|
@ -164,24 +164,26 @@ if(count($_POST) > 0 && $_SESSION['diagnosticsSuccessful']==false)
|
||||
if ($errors == 0)
|
||||
{
|
||||
AddTrace('File Structure....OK!');
|
||||
if (!mysql_connect ($GLOBALS['configuration']['host'].":".$GLOBALS['configuration']['port'], $GLOBALS['configuration']['user'], $GLOBALS['configuration']['pass']))
|
||||
#if (!mysql_connect ($GLOBALS['configuration']['host'].":".$GLOBALS['configuration']['port'], $GLOBALS['configuration']['user'], $GLOBALS['configuration']['pass']))
|
||||
if (!mysqli_connect ($GLOBALS['configuration']['host'], $GLOBALS['configuration']['user'], $GLOBALS['configuration']['pass'],$GLOBALS['configuration']['db'], $GLOBALS['configuration']['port']))
|
||||
{
|
||||
$errors++;
|
||||
AddError('Cannot connect to the specified database server. Edit configuration.php');
|
||||
AddError('Cannot find the specified database "'.$GLOBALS['configuration']['db'].'". Edit configuration.php');
|
||||
}
|
||||
if (isset($GLOBALS['configuration']['db_encoding']) && $GLOBALS['configuration']['db_encoding'] == 1 && !Base64::IsBase64FunctionInstalled())
|
||||
{
|
||||
$errors++;
|
||||
AddError('$configuration[db_encoding] needs to be set to 0 until you install the base64 plugin. Set db_encoding to 0 by editing configuration.php, run setup again and go to the "Manage Plugins" tab. Install the base64 plugin. Then you can set db_encoding = 1');
|
||||
}
|
||||
if ($errors == 0)
|
||||
{
|
||||
if (!@mysql_select_db ($GLOBALS['configuration']['db']))
|
||||
{
|
||||
$errors++;
|
||||
AddError('Cannot find the specified database "'.$GLOBALS['configuration']['db'].'". Edit configuration.php');
|
||||
}
|
||||
}
|
||||
# if ($errors == 0)
|
||||
# {
|
||||
# if (!@mysql_select_db ($GLOBALS['configuration']['db']))
|
||||
# {
|
||||
# $errors++;
|
||||
# AddError('Cannot find the specified database "'.$GLOBALS['configuration']['db'].'". Edit configuration.php');
|
||||
# }
|
||||
# }
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -276,10 +276,10 @@
|
||||
{
|
||||
$link = '';
|
||||
$content = file_get_contents($objectFilePath);
|
||||
$contentParts = split("<b>",$content);
|
||||
$contentParts = explode("<b>",$content);
|
||||
if (isset($contentParts[1]))
|
||||
{
|
||||
$contentParts2 = split("</b>",$contentParts[1]);
|
||||
$contentParts2 = explode("</b>",$contentParts[1]);
|
||||
}
|
||||
if (isset($contentParts2[0]))
|
||||
{
|
||||
@ -287,8 +287,8 @@
|
||||
}
|
||||
if (isset($className))
|
||||
{
|
||||
$linkParts1 = split("\*\/", $contentParts[1]);
|
||||
$linkParts2 = split("\@link", $linkParts1[0]);
|
||||
$linkParts1 = explode("\*\/", $contentParts[1]);
|
||||
$linkParts2 = explode("\@link", $linkParts1[0]);
|
||||
if (isset($linkParts2[1]))
|
||||
{
|
||||
$link = $linkParts2[1];
|
||||
@ -313,10 +313,10 @@
|
||||
function GetObjectName($objectFilePath)
|
||||
{
|
||||
$content = file_get_contents($objectFilePath);
|
||||
$contentParts = split("<b>",$content);
|
||||
$contentParts = explode("<b>",$content);
|
||||
if (isset($contentParts[1]))
|
||||
{
|
||||
$contentParts2 = split("</b>",$contentParts[1]);
|
||||
$contentParts2 = explode("</b>",$contentParts[1]);
|
||||
}
|
||||
if (isset($contentParts2[0]))
|
||||
{
|
||||
@ -593,10 +593,10 @@
|
||||
|
||||
//extract sql
|
||||
$content = file_get_contents($objectFilePath);
|
||||
$contentParts = split("<b>",$content);
|
||||
$contentParts = explode("<b>",$content);
|
||||
if (isset($contentParts[1]))
|
||||
{
|
||||
$contentParts2 = split("</b>",$contentParts[1]);
|
||||
$contentParts2 = explode("</b>",$contentParts[1]);
|
||||
}
|
||||
if (isset($contentParts2[0]))
|
||||
{
|
||||
@ -604,8 +604,8 @@
|
||||
}
|
||||
if (isset($className))
|
||||
{
|
||||
$sqlParts = split(";",$contentParts[0]);
|
||||
$sqlPart = split("CREATE",$sqlParts[0]);
|
||||
$sqlParts = explode(";",$contentParts[0]);
|
||||
$sqlPart = explode("CREATE",$sqlParts[0]);
|
||||
$sql = "CREATE ".$sqlPart[1].";";
|
||||
|
||||
//execute sql
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright 2008-2015 Clipperz Srl
|
||||
# Copyright 2008-2018 Clipperz Srl
|
||||
#
|
||||
# This file is part of Clipperz, the online password manager.
|
||||
# For further information about its features and functionalities please
|
||||
|
@ -13,7 +13,7 @@
|
||||
<script>
|
||||
Clipperz_IEisBroken = false;
|
||||
Clipperz_normalizedNewLine = '\n';
|
||||
Clipperz_dumpUrl = "@dump.path@/beta";
|
||||
Clipperz_dumpUrl = "@dump.path@beta";
|
||||
</script>
|
||||
|
||||
<!--[if IE]><script>
|
||||
|
@ -354,7 +354,8 @@ Clipperz.PM.Proxy.Offline.DataStore.prototype = MochiKit.Base.update(null, {
|
||||
this.set_C(someParameters.parameters.C);
|
||||
this.set_b(new Clipperz.Crypto.BigInt(randomBytes, 16));
|
||||
v = new Clipperz.Crypto.BigInt(this.userData()['v'], 16);
|
||||
this.set_B((Clipperz.Crypto.SRP.k().multiply(v)).add(Clipperz.Crypto.SRP.g().powerModule(this.b(), Clipperz.Crypto.SRP.n())));
|
||||
//this.set_B((Clipperz.Crypto.SRP.k().multiply(v)).add(Clipperz.Crypto.SRP.g().powerModule(this.b(), Clipperz.Crypto.SRP.n())));
|
||||
this.set_B((Clipperz.Crypto.SRP.k().multiply(v)).add(Clipperz.Crypto.SRP.g().powerModule(this.b(), Clipperz.Crypto.SRP.n())).module(Clipperz.Crypto.SRP.n()));
|
||||
|
||||
this.set_A(someParameters.parameters.A);
|
||||
|
||||
@ -363,7 +364,7 @@ Clipperz.PM.Proxy.Offline.DataStore.prototype = MochiKit.Base.update(null, {
|
||||
|
||||
nextTollRequestType = 'CONNECT';
|
||||
} else if (someParameters.message == "credentialCheck") {
|
||||
var v, u, s, S, A, K, M1;
|
||||
var v, u, s, S, A, K, M1, KK;
|
||||
var stringHash = function (aValue) {
|
||||
return Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(aValue)).toHexString().substring(2);
|
||||
};
|
||||
@ -373,9 +374,11 @@ Clipperz.PM.Proxy.Offline.DataStore.prototype = MochiKit.Base.update(null, {
|
||||
A = new Clipperz.Crypto.BigInt(this.A(), 16);
|
||||
u = new Clipperz.Crypto.BigInt(Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(A.asString(10) + this.B().asString(10))).toHexString(), 16);
|
||||
s = new Clipperz.Crypto.BigInt(this.userData()['s'], 16);
|
||||
S = (A.multiply(v.powerModule(u, Clipperz.Crypto.SRP.n()))).powerModule(this.b(), Clipperz.Crypto.SRP.n());
|
||||
//S = (A.multiply(v.powerModule(u, Clipperz.Crypto.SRP.n()))).powerModule(this.b(), Clipperz.Crypto.SRP.n());
|
||||
S = v.powerModule(u, Clipperz.Crypto.SRP.n()).multiply(A).module(Clipperz.Crypto.SRP.n()).powerModule(this.b(), Clipperz.Crypto.SRP.n())
|
||||
|
||||
K = stringHash(S.asString(10));
|
||||
KK = new Clipperz.Crypto.BigInt(K,16);
|
||||
|
||||
M1 = stringHash(
|
||||
"597626870978286801440197562148588907434001483655788865609375806439877501869636875571920406529" +
|
||||
@ -383,7 +386,7 @@ Clipperz.PM.Proxy.Offline.DataStore.prototype = MochiKit.Base.update(null, {
|
||||
s.asString(10) +
|
||||
A.asString(10) +
|
||||
this.B().asString(10) +
|
||||
K
|
||||
KK.asString(10)
|
||||
);
|
||||
if (someParameters.parameters.M1 == M1) {
|
||||
var M2;
|
||||
|
@ -4,7 +4,7 @@ Copyright 2008-2015 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
refer to http://www.clipperz.com.
|
||||
refer to http://www.clipperz.is.
|
||||
|
||||
* Clipperz is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU Affero General Public License as published
|
||||
@ -22,19 +22,19 @@ refer to http://www.clipperz.com.
|
||||
*/
|
||||
|
||||
Clipperz.PM.Strings.Languages['fr-FR'.toLowerCase()] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], {
|
||||
'clipperzServiceDescription': "<h2>Gardez le pour vous!</h2> <ul> <li> <h3>Clipperz est:</h3> <ul> <li> <p>un gestionnaire de mots de passe sécurisé</p> </li> <li> <p>une solution fiable d’authentification unique</p> </li> <li> <p>une chambre forte numérique pour vos données confidentielles</p> </li> </ul> </li> <li> <h3>Avec Clipperz vous pouvez:</h3> <ul> <li> <p>enregistrer et gérer vos mots de passe et autres informations d'identification en ligne</p> </li> <li> <p>vous identifier sur vos sites web sans avoir besoin de saisir votre nom d’utilisateur ou votre mot de passe</p> </li> <li> <p>protéger toutes vos données sensibles: codes d’alarmes, PINs (téléphone portable), carte de crédits, …</p> </li> <li> <p>partager certaines données confidentielles avec vos proches et vos associés (bientôt disponible!)</p> </li> </ul> </li> <li> <h3>Les avantages de Clipperz:</h3> <ul> <li> <p>c'est gratuit et totalement anonyme</p> </li> <li> <p>accéder à vos données depuis n’importe quel ordinateur</p> </li> <li> <p>vous n'avez besoin d'aucun logiciel et rien n'est à installer sur votre poste</p> </li> <li> <p>cela vous évite de garder des mots de passe sur votre PC ou sur des bouts de papier</p> </li> </ul> </li> <li> <h3>La sécurité de Clipperz:</h3> <ul> <li> <p>vos mots de passe sont localement chiffrés par votre navigateur avant d’être téléchargé à Clipperz</p> </li> <li> <p>la clé de cryptage est une phrase secrète détenue uniquement par vous même</p> </li> <li> <p>héberge vos données sensibles dans des formulaires cryptés et ne peuvent être consultées directement en clair</p> </li> <li> <p>est développé sur des standard de cryptage réputé sans aucune fantaisie ni de bricolage fait maison</p> </li> <li> <p>vous pouvez consulter le code source autant que vous le souhaitez</p> </li> </ul> </li> <li> <a href=\"http://www.clipperz.com\" target=\"_blank\">Plus d’informations</a> </li> </ul> ",
|
||||
'clipperzServiceDescription': "<h2>Gardez le pour vous!</h2> <ul> <li> <h3>Clipperz est:</h3> <ul> <li> <p>un gestionnaire de mots de passe sécurisé</p> </li> <li> <p>une solution fiable d’authentification unique</p> </li> <li> <p>une chambre forte numérique pour vos données confidentielles</p> </li> </ul> </li> <li> <h3>Avec Clipperz vous pouvez:</h3> <ul> <li> <p>enregistrer et gérer vos mots de passe et autres informations d'identification en ligne</p> </li> <li> <p>vous identifier sur vos sites web sans avoir besoin de saisir votre nom d’utilisateur ou votre mot de passe</p> </li> <li> <p>protéger toutes vos données sensibles: codes d’alarmes, PINs (téléphone portable), cartes de crédit, …</p> </li> <li> <p>partager certaines données confidentielles avec vos proches et vos associés (bientôt disponible!)</p> </li> </ul> </li> <li> <h3>Les avantages de Clipperz:</h3> <ul> <li> <p>c'est gratuit et totalement anonyme</p> </li> <li> <p>accéder à vos données depuis n’importe quel ordinateur</p> </li> <li> <p>vous n'avez besoin d'aucun logiciel et rien n'est à installer sur votre poste</p> </li> <li> <p>cela vous évite de garder des mots de passe sur votre PC ou sur des bouts de papier</p> </li> </ul> </li> <li> <h3>La sécurité de Clipperz:</h3> <ul> <li> <p>vos mots de passe sont localement chiffrés par votre navigateur avant d’être téléchargé à Clipperz</p> </li> <li> <p>la clé de chiffrement est une phrase secrète détenue uniquement par vous même</p> </li> <li> <p>héberge vos données sensibles dans des formulaires chiffrés et ne peuvent être consultées directement en clair</p> </li> <li> <p>est développé sur des standard de chiffrement réputés, sans aucune fantaisie ni de bricolage fait maison</p> </li> <li> <p>vous pouvez consulter le code source autant que vous le souhaitez</p> </li> </ul> </li> <li> <a href=\"http://www.clipperz.is\" target=\"_blank\">Plus d’informations</a> </li> </ul> ",
|
||||
'loginFormTitle': "identifiez-vous avec votre compte Clipperz",
|
||||
'loginFormUsernameLabel': "nom d’utilisateur",
|
||||
'loginFormPassphraseLabel': "phrase secrète",
|
||||
'loginFormDontHaveAnAccountLabel': "vous n’avez pas de compte?",
|
||||
'loginFormDontHaveAnAccountLabel': "vous n’avez pas de compte ?",
|
||||
'loginFormCreateOneLabel': "créez votre compte",
|
||||
'loginFormForgotYourCredentialsLabel': "vous avez oublié votre certificat?",
|
||||
'loginFormAarghThatsBadLabel': "c’est fort dommage pour vous!",
|
||||
'loginFormAfraidOfMaliciousScriptsLabel': "vous avez peur des script malicieux?",
|
||||
'loginFormForgotYourCredentialsLabel': "vous avez oublié votre certificat ?",
|
||||
'loginFormAarghThatsBadLabel': "c’est fort dommage pour vous !",
|
||||
'loginFormAfraidOfMaliciousScriptsLabel': "vous avez peur des script malicieux ?",
|
||||
'loginFormVerifyTheCodeLabel': "vérifiez le code",
|
||||
'loginFormButtonLabel': "S’identifer",
|
||||
'loginPanelSwithLanguageDescription': "<p>Sélectionnez votre langue préféré</p> ",
|
||||
'browserCompatibilityDescription': "<p>Have a better and safer Clipperz experience with Firefox. However Clipperz works just fine also with Opera and MS Internet Explorer!</p> ",
|
||||
'loginPanelSwithLanguageDescription': "<p>Sélectionnez votre langue préférée</p> ",
|
||||
'browserCompatibilityDescription': "<p>Pour une utilisation optimale de Clipperz nous vous conseillons Firefox. Toutefois Clipperz fonctionne aussi bien avec Opera et MS Internet Explorer !</p> ",
|
||||
'loginMessagePanelInitialTitle': "En cours d’identification ...",
|
||||
'loginMessagePanelInitialButtonLabel': "Annuler",
|
||||
'loginMessagePanelConnectedTitle': "Connecté",
|
||||
@ -57,19 +57,19 @@ Clipperz.PM.Strings.Languages['fr-FR'.toLowerCase()] = MochiKit.Base.merge(Clipp
|
||||
'userLoginPanelLoadingUserDataMessageTitle': "Utilisateur identifié",
|
||||
'userLoginPanelLoadingUserDataMessageText': "Téléchargement des cartes d’en-têtes chiffrés depuis Clipperz",
|
||||
'userLoginPanelDecryptingUserDataMessageTitle': "Utilisateur identifié",
|
||||
'userLoginPanelDecryptingUserDataMessageText': "Décryptage local des en-têtes chiffrés",
|
||||
'userLoginPanelDecryptingUserDataMessageText': "Déchiffrement local des en-têtes chiffrés",
|
||||
'userLoginPanelDecryptingUserStatisticsMessageTitle': "Utilisateur identifié",
|
||||
'userLoginPanelDecryptingUserStatisticsMessageText': "Décryptage local des statistiques",
|
||||
'userLoginPanelDecryptingUserStatisticsMessageText': "Déchiffrement local des statistiques",
|
||||
'splashAlertTitle': "Bienvenue sur Clipperz!",
|
||||
'splashAlertText': "<p>Conseils de sécurité</p> <ul> <li> <p>Le stockage de vos mots de passe sur Clipperz est aussi sécurisé que la phrase que vous avez sélectionnée pour les protéger. Personne ne peux y accéder tant que personne ne connait votre phrase secrète.</p> </li> <li> <p>Si vous allez utiliser Clipperz pour sauvegarder des informations sensibles et critiques assurez-vous d’utiliser une phrase secrète compliquée. Plus elle sera longue mieux ce sera!</p> </li> <li> <p>Clipperz ne sera pas capable de récupérer votre phrase secrète!</p> </li> </ul> <p>Pour toute autre information, veuillez vous référer au site <a href=\"http://www.clipperz.com\" target=\"_blank\">Clipperz</a>.</p> ",
|
||||
'splashAlertText': "<p>Conseils de sécurité</p> <ul> <li> <p>Le stockage de vos mots de passe sur Clipperz est aussi sécurisé que la phrase que vous avez sélectionnée pour les protéger. Personne ne peux y accéder tant que personne ne connait votre phrase secrète.</p> </li> <li> <p>Si vous allez utiliser Clipperz pour sauvegarder des informations sensibles et critiques assurez-vous d’utiliser une phrase secrète compliquée. Plus elle sera longue mieux ce sera !</p> </li> <li> <p>Clipperz ne sera pas capable de récupérer votre phrase secrète!</p> </li> </ul> <p>Pour toute autre information, veuillez vous référer au site <a href=\"http://www.clipperz.is\" target=\"_blank\">Clipperz</a>.</p> ",
|
||||
'splashAlertCloseButtonLabel': "Ok",
|
||||
'registrationFormTitle': "créer votre compte",
|
||||
'registrationFormUsernameLabel': "nom d’utilisateur",
|
||||
'registrationFormPassphraseLabel': "phrase secrète",
|
||||
'registrationFormRetypePassphraseLabel': "re-saisissez votre phrase secrète",
|
||||
'registrationFormSafetyCheckLabel': "J’accepte que Clipperz ne pourra pas récupérer ma phrase secrète.",
|
||||
'registrationFormTermsOfServiceCheckLabel': "J’ai lu et j’accepte les <a href='https://www.clipperz.com/terms_service' target='_blank'>Conditions d’Utilisation du Service</a>.",
|
||||
'registrationFormDoYouAlreadyHaveAnAccountLabel': "avez-vous déjà un compte?",
|
||||
'registrationFormTermsOfServiceCheckLabel': "J’ai lu et j’accepte les <a href='https://www.clipperz.is/terms_service' target='_blank'>Conditions d’Utilisation du Service</a>.",
|
||||
'registrationFormDoYouAlreadyHaveAnAccountLabel': "avez-vous déjà un compte ?",
|
||||
'registrationFormSimplyLoginLabel': "identifiez-vous",
|
||||
'registrationFormButtonLabel': "S’inscrire",
|
||||
'registrationFormWarningMessageNotMatchingPassphrases': "Vos phrases secrètes ne correspondent pas, veuillez les saisir à nouveau.",
|
||||
@ -119,18 +119,18 @@ Clipperz.PM.Strings.Languages['fr-FR'.toLowerCase()] = MochiKit.Base.merge(Clipp
|
||||
'changePasswordFormProgressDialogConnectedMessageTitle': "Connecté",
|
||||
'changePasswordFormProgressDialogConnectedMessageText': "Terminé",
|
||||
'changePasswordFormProgressDialogErrorMessageTitle': "Erreur",
|
||||
'changePasswordFormProgressDialogErrorMessageText': "Changement de identifiants échoué!",
|
||||
'changePasswordFormProgressDialogErrorMessageText': "Changement de identifiants échoué !",
|
||||
'changeCredentialsPanelEncryptingDataMessageTitle': "Changement de votre phrase secrète",
|
||||
'changeCredentialsPanelEncryptingDataMessageText': "Cryptage local des identifiants",
|
||||
'changeCredentialsPanelCreatingNewCredentialsMessageTitle': "Modifier votre phrase secrète",
|
||||
'changeCredentialsPanelCreatingNewCredentialsMessageText': "Mettre à jour vos identifiants",
|
||||
'changeCredentialsPanelSendingNewCredentialsToTheServerMessageTitle': "Modifier votre phrase secrète",
|
||||
'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText': "Téléchargement de vos identifiants sur Clipperz.com",
|
||||
'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText': "Téléchargement de vos identifiants sur Clipperz.is",
|
||||
'changeCredentialsPanelDoneMessageTitle': "Modifier votre phrase secrète",
|
||||
'changeCredentialsPanelDoneMessageText': "Terminé",
|
||||
'manageOTPTabLabel': "Mettre à jour votre phrase secrète à usage unique",
|
||||
'manageOTPTabTitle': "Mettre à jour votre phrase secrète à usage unique",
|
||||
'manageOTPTabDescription': "<p>Une phrase secrète à usage unique fonctionne comme votre phrase secrète habituelle, mais elle ne peut être utilisé qu'une seule fois.</p> <p>Si la phrase secrète est utilisé de nouveau et que vous tenté de vous identifier à nouveau, vous serez rejeté et le processus d'identification échouera.</p> <p>Juste après une identification correcte, votre phrase secrète à usage unique sera effacée pour interdire tout accès frauduleux.</p> <p>Les phrases secrètes à usage unique sont un excellent choix si vous craignez qu'un logiciel espion ne vole vos données après avoir infecté votre machine.</p> <p> <b>Il est fortement recommandé d'utiliser des phrases secrètes à usage unique lorsque vous accédez à Clipperz depuis un terminal public, comme un cybercafé ou une borne Internet.</b> </p> ",
|
||||
'manageOTPTabDescription': "<p>Une phrase secrète à usage unique fonctionne comme votre phrase secrète habituelle, mais elle ne peut être utilisée qu'une seule fois.</p> <p>Si la phrase secrète est utilisée de nouveau et que vous tentez de vous identifier à nouveau, vous serez rejeté et le processus d'identification échouera.</p> <p>Juste après une identification correcte, votre phrase secrète à usage unique sera effacée pour interdire tout accès frauduleux.</p> <p>Les phrases secrètes à usage unique sont un excellent choix si vous craignez qu'un logiciel espion ne vole vos données après avoir infecté votre machine.</p> <p> <b>Il est fortement recommandé d'utiliser des phrases secrètes à usage unique lorsque vous accédez à Clipperz depuis un terminal public, comme un cybercafé ou une borne Internet.</b> </p> ",
|
||||
'accountPreferencesLabel': "Préférences",
|
||||
'accountPreferencesTabTitle': "Préférences",
|
||||
'accountPreferencesLanguageTitle': "Choix de la langue",
|
||||
@ -147,18 +147,18 @@ Clipperz.PM.Strings.Languages['fr-FR'.toLowerCase()] = MochiKit.Base.merge(Clipp
|
||||
'deleteAccountTabTitle': "Supprimer votre compte",
|
||||
'deleteAccountFormUsernameLabel': "nom d’utilisateur",
|
||||
'deleteAccountFormPassphraseLabel': "phrase secrète",
|
||||
'deleteAccountFormSafetyCheckboxLabel': "Je sais que toute mes données seront supprimés et que cette action sera irréversible.",
|
||||
'deleteAccountFormSafetyCheckboxLabel': "Je sais que toute mes données seront supprimées et que cette action sera irréversible.",
|
||||
'deleteAccountFormSubmitLabel': "Supprimer mon compte",
|
||||
'deleteAccountFormWrongUsernameWarning': "Nom d’utilisateur incorrect",
|
||||
'deleteAccountFormWrongPassphraseWarning': "Phrase secrète incorrect",
|
||||
'deleteAccountFormWrongPassphraseWarning': "Phrase secrète incorrecte",
|
||||
'deleteAccountFormSafetyCheckWarning': "Veuillez lire et cocher la case-à-cocher ci-dessous.",
|
||||
'accountPanelDeletingAccountPanelConfirmationTitle': "ATTENTION",
|
||||
'accountPanelDeleteAccountPanelConfirmationText': "Êtes-vous sûr de vouloir supprimer ce compte?",
|
||||
'accountPanelDeleteAccountPanelConfirmationText': "Êtes-vous sûr de vouloir supprimer ce compte ?",
|
||||
'accountPanelDeleteAccountPanelConfirmButtonLabel': "Oui",
|
||||
'accountPanelDeleteAccountPanelDenyButtonLabel': "Non",
|
||||
'offlineCopyTabLabel': "Copie locale",
|
||||
'offlineCopyTabTitle': "Copie locale",
|
||||
'offlineCopyTabDescription': "<p>D'un seul click, vous pouvez télécharger toutes vos données chiffrées des serveurs Clipperz sur votre disque dur, créant ainsi une version déconnecté de Clipperz utilisable lorsque vous n'êtes pas connectés à Internet.</p> <p>Cette version en lecture seule est aussi sécurisée que la version en lecture-écriture, et n'expose pas vos données à un risque plus élevé. Elles partagent en effet le même code et la même architecture de sécurité.</p> <ol> <li> <p>Cliquez sur le liens ci-dessous pour lancer le téléchargement.</p> </li> <li> <p>Votre navigateur vous demandera que faire du fichier “Clipperz_YYYYMMDD.html”. Sauvez le sur votre disque dur.</p> </li> <li> <p>Puis double-cliquez sur le fichier téléchargé pour lancer la version déconnectée dans votre navigateur.</p> </li> <li> <p>Utilisez vos nom d’utilisateur et phrase secrète habituels.</p> </li> </ol> ",
|
||||
'offlineCopyTabDescription': "<p>D'un seul clic, vous pouvez télécharger toutes vos données chiffrées des serveurs Clipperz sur votre disque dur, créant ainsi une version déconnectée de Clipperz utilisable lorsque vous n'êtes pas connecté à Internet.</p> <p>Cette version en lecture seule est aussi sécurisée que la version en lecture-écriture, et n'expose pas vos données à un risque plus élevé. Elles partagent en effet le même code et la même architecture de sécurité.</p> <ol> <li> <p>Cliquez sur le liens ci-dessous pour lancer le téléchargement.</p> </li> <li> <p>Votre navigateur vous demandera que faire du fichier “Clipperz_YYYYMMDD.html”. Sauvez le sur votre disque dur.</p> </li> <li> <p>Puis double-cliquez sur le fichier téléchargé pour lancer la version déconnectée dans votre navigateur.</p> </li> <li> <p>Utilisez vos nom d’utilisateur et phrase secrète habituels.</p> </li> </ol> ",
|
||||
'offlineCopyDownloadLinkLabel': "Télécharger",
|
||||
'sharingTabLabel': "Partager",
|
||||
'sharingTabTitle': "Partager",
|
||||
@ -168,7 +168,7 @@ Clipperz.PM.Strings.Languages['fr-FR'.toLowerCase()] = MochiKit.Base.merge(Clipp
|
||||
'importTabDescription': "<p> <b>Prochainement disponible ...</b> </p> ",
|
||||
'printingTabLabel': "Exporter",
|
||||
'printingTabTitle': "Exporter",
|
||||
'printingTabDescription': "<p> <b>Version d’impression</b> </p> <p>En cliquant sur ce bouton vous ouvrirez une fenêtre contenant vos en-têtes cryptés dans un format d’impression.</p> <p>Si vous imprimez pour des raisons de sauvegarde personnel, veuillez vous tourner vers une solution plus sécurisé comme la version “Copie locale”.</p> ",
|
||||
'printingTabDescription': "<p> <b>Version d’impression</b> </p> <p>En cliquant sur ce bouton vous ouvrirez une fenêtre contenant vos en-têtes chiffrés dans un format d’impression.</p> <p>Si vous imprimez pour des raisons de sauvegarde personnelle, veuillez vous tourner vers une solution plus sécurisé comme la version “Copie locale”.</p> ",
|
||||
'printingLinkLabel': "Version imprimable",
|
||||
'contactsTabLabel': "Contacts",
|
||||
'contactsTabTitle': "Contacts",
|
||||
@ -178,20 +178,20 @@ Clipperz.PM.Strings.Languages['fr-FR'.toLowerCase()] = MochiKit.Base.merge(Clipp
|
||||
'bookmarkletTabTitle': "Bookmarklet",
|
||||
'paswordGeneratorTabDescription': "<p> </p> ",
|
||||
'passwordGeneratorTabButtonLabel': " Générer un mot de passe",
|
||||
'bookmarkletTabDescription': "<p>Un bookmarklet est un outil “clique unique” simple qui peut exécuter des tâches très utiles. Il peut être sauvegardé et utilisé comme un signet de page Web normal.</p> <p>Le bookmarklet Clipperz vous aidera à rapidement créer de nouvelles cartes et des nouveaux “accès directs” avec vos cartes existantes.</p> <p> <b>Notez s’il vous plaît que le bookmarklet n’inclut pas d’informations liées à votre compte (par exemple votre nom d’utilisateur ou votre phrase secrète), le bookmarklet est un outil général contenant le même code pour chaque utilisateur Clipperz.</b> </p> <div> <p>Pour installer le bookmarklet <b>glissez & déposez</b> le lien ci-dessous dans votre bar de navigation.</p> </div> ",
|
||||
'bookmarkletTabDescription': "<p>Un bookmarklet est un outil “clic unique” simple qui peut exécuter des tâches très utiles. Il peut être sauvegardé et utilisé comme un signet de page Web normal.</p> <p>Le bookmarklet Clipperz vous aidera à rapidement créer de nouvelles cartes et des nouveaux “accès directs” avec vos cartes existantes.</p> <p> <b>Notez s’il vous plaît que le bookmarklet n’inclut pas d’informations liées à votre compte (par exemple votre nom d’utilisateur ou votre phrase secrète), le bookmarklet est un outil général contenant le même code pour chaque utilisateur Clipperz.</b> </p> <div> <p>Pour installer le bookmarklet <b>glissez & déposez</b> le lien ci-dessous dans votre barre de navigation.</p> </div> ",
|
||||
'bookmarkletTabBookmarkletTitle': "Ajouter à Clipperz",
|
||||
'bookmarkletTabInstructions': "<h3>Comment créer une carte comprenant un lien de “accès direct” à un service en ligne</h3> <ol> <li> <p>Ouvrir la page Web où le site affiche un formulaire d’identification. (C’est la page où vous entrez d’habitude vos informations d'identification)</p> </li> <li> <p>Lancer le bookmarklet en cliquant dessus : une fenêtre contextuelle apparait alors sur la page Web.</p> </li> <li> <p>Copier dans le presse-papiers le contenu du grand secteur de texte dans le menu contextuel. (Ctrl-C)</p> </li> <li> <p>Entrer dans votre compte Clipperz et cliquer sur <b>“Ajouter une nouvelle carte”</b>.</p> </li> <li> <p>Coller le presse-papiers dans la zone de texte et rajouter un titre (facultatif). (Ctrl-V)</p> </li> <li> <p>Cliquer sur le bouton <b>“Créer”</b>, repassez en revu les détails et cliquer <b>“Sauver”</b>. De plus amples informations sont disponibles <a href=\"http://www.clipperz.com/support/user_guide/bookmarklet\" target=\"_blank\">ici</a>.</p> </li> </ol> <h3>Comment ajouter un lien de “accès direct” à une carte existante</h3> <ol> <li> <p>Idem que précédemment.</p> </li> <li> <p>Idem que précédemment..</p> </li> <li> <p>Idem que précédemment.</p> </li> <li> <p>Entrer dans votre compte Clipperz et sélectionner la carte crypté qui contient les identifiants pour le service web que vous venez tout juste de visiter et cliquer sur <b>“Modifier”</b>.</p> </li> <li> <p>Coller le presse-papier dans la zone de texte <b>“Accès directs”</b>. (ctrl-V)</p> </li> <li> <p>Cliquer sur <b>“Ajouter un accès direct”</b>, repassez en revu les détails et cliquer <b>“Sauver”</b>.</p> </li> </ol> ",
|
||||
'bookmarkletTabInstructions': "<h3>Comment créer une carte comprenant un lien de “accès direct” à un service en ligne</h3> <ol> <li> <p>Ouvrir la page Web où le site affiche un formulaire d’identification. (C’est la page où vous entrez d’habitude vos informations d'identification)</p> </li> <li> <p>Lancer le bookmarklet en cliquant dessus : une fenêtre contextuelle apparait alors sur la page Web.</p> </li> <li> <p>Copier dans le presse-papiers le contenu du grand secteur de texte dans le menu contextuel. (Ctrl-C)</p> </li> <li> <p>Entrer dans votre compte Clipperz et cliquer sur <b>“Ajouter une nouvelle carte”</b>.</p> </li> <li> <p>Coller le presse-papiers dans la zone de texte et rajouter un titre (facultatif). (Ctrl-V)</p> </li> <li> <p>Cliquer sur le bouton <b>“Créer”</b>, repassez en revu les détails et cliquer <b>“Sauver”</b>. De plus amples informations sont disponibles <a href=\"http://www.clipperz.is/support/user_guide/bookmarklet\" target=\"_blank\">ici</a>.</p> </li> </ol> <h3>Comment ajouter un lien de “accès direct” à une carte existante</h3> <ol> <li> <p>Idem que précédemment.</p> </li> <li> <p>Idem que précédemment..</p> </li> <li> <p>Idem que précédemment.</p> </li> <li> <p>Entrer dans votre compte Clipperz et sélectionner la carte chiffrée qui contient les identifiants pour le service web que vous venez tout juste de visiter et cliquer sur <b>“Modifier”</b>.</p> </li> <li> <p>Coller le presse-papier dans la zone de texte <b>“Accès directs”</b>. (ctrl-V)</p> </li> <li> <p>Cliquer sur <b>“Ajouter un accès direct”</b>, repassez en revu les détails et cliquer <b>“Sauver”</b>.</p> </li> </ol> ",
|
||||
'mainPanelDirectLoginBlockLabel': "Accès directs",
|
||||
'directLinkReferenceShowButtonLabel': "voir",
|
||||
'mainPanelDirectLoginBlockDescription': "<p>Ajouter une “accès direct” pour vous identifier sans avoir besoin de taper vos identifiants de connexions!</p> <p>Les “accès directs” augmente considérablement la sécurité de vos mots passes dans la mesure où vous pouvez:</p> <ul> <li> <p>adopter et saisir des mots de passe complexes;</p> </li> <li> <p>ne réutilisez le même mot de passe et ne mettez plus de mots de passe facile à deviner.</p> </li> </ul> <p>Simple et rapide à configurer avec le Clipperz <b>bookmarklet</b>.</p> <a href=\"http://www.clipperz.com/support/user_guide/direct_logins\" target=\"_blank\">Pour en savoir plus sur les “accès directs”</a> ",
|
||||
'mainPanelDirectLoginBlockDescription': "<p>Ajouter une “accès direct” pour vous identifier sans avoir besoin de taper vos identifiants de connexions!</p> <p>Les “accès directs” augmentent considérablement la sécurité de vos mots passes dans la mesure où vous pouvez :</p> <ul> <li> <p>adopter et saisir des mots de passe complexes;</p> </li> <li> <p>ne pas réutiliser le même mot de passe et ne plus utiliser de mots de passe facile à deviner.</p> </li> </ul> <p>Simple et rapide à configurer avec le <b>bookmarklet</b> Clipperz.</p> <a href=\"http://www.clipperz.is/support/user_guide/direct_logins\" target=\"_blank\">Pour en savoir plus sur les “accès directs”</a> ",
|
||||
'mainPanelRecordsBlockLabel': "Cartes",
|
||||
'mainPanelAddRecordButtonLabel': "Ajouter une nouvelle carte",
|
||||
'mainPanelRemoveRecordButtonLabel': "Supprimer une carte",
|
||||
'mainPanelRecordFilterBlockAllLabel': "tous",
|
||||
'mainPanelRecordFilterBlockTagsLabel': "tags",
|
||||
'mainPanelRecordFilterBlockSearchLabel': "chercher",
|
||||
'recordDetailNoRecordAtAllTitle': "Bienvenue sur Clipperz!",
|
||||
'recordDetailNoRecordAtAllDescription': "<h5>Commencez par ajouter des cartes à votre compte.</h5> <p>Les cartes sont des formulaires flexibles ou vous pouvez enregistrer vos mots de passe et autres informations confidentielles.</p> <p>Par exemple, une carte peut contenir les informations d\"identification pour un site web, la combinaison de votre antivol de bicyclette, les détails de votre carte bancaire, ...</p> <h5>N'oubliez pas le bookmarklet!</h5> <p>Avant de commencer, installez le bookmarklet “Ajouter à Clipperz”: il rends la création de carte plus facile et amusante.</p> <p>Allez à l'onglet “outils” pour découvrir comment l'installer et l'utiliser.</p> <p> </p> <p>Ensuite, cliquez tout simplement sur le bouton “Ajouter une nouvelle carte” et profitez de votre compte Clipperz.</p> <p> </p> <a href=\"http://www.clipperz.com/support/user_guide/managing_cards\" target=\"_blank\">En savoir plus sur la création et la gestion des cartes.</a> ",
|
||||
'recordDetailNoRecordAtAllTitle': "Bienvenue sur Clipperz !",
|
||||
'recordDetailNoRecordAtAllDescription': "<h5>Commencez par ajouter des cartes à votre compte.</h5> <p>Les cartes sont des formulaires flexibles ou vous pouvez enregistrer vos mots de passe et autres informations confidentielles.</p> <p>Par exemple, une carte peut contenir les informations d'identification pour un site web, la combinaison de votre antivol de bicyclette, les détails de votre carte bancaire, ...</p> <h5>N'oubliez pas le bookmarklet !</h5> <p>Avant de commencer, installez le bookmarklet “Ajouter à Clipperz”: il rend la création de carte plus facile et amusante.</p> <p>Allez à l'onglet “outils” pour découvrir comment l'installer et l'utiliser.</p> <p> </p> <p>Ensuite, cliquez tout simplement sur le bouton “Ajouter une nouvelle carte” et profitez de votre compte Clipperz.</p> <p> </p> <a href=\"http://www.clipperz.is/support/user_guide/managing_cards\" target=\"_blank\">En savoir plus sur la création et la gestion des cartes.</a> ",
|
||||
'newRecordWizardTitleBox': "<h5>Choisissez un modèle</h5> <p>Les cartes sont des formulaires flexibles ou vous pouvez enregistrer vos mots de passe et autres informations confidentielles.</p> <p>Commencez par choisir un des modèles ci-dessous. Vous pourrez toujours adapter vos cartes plus tard en ajoutant ou supprimant des champs.</p> ",
|
||||
'newRecordWizardBookmarkletConfigurationTitle': "Accès directs",
|
||||
'newRecordWizardBookmarkletConfigurationDescriptionConfig': "<p>Collez ici le code de configuration généré par le bookmarlet Clipperz.</p> <p>Cela créera une nouvelle carte avec un accès direct à votre site web.</p> ",
|
||||
@ -238,7 +238,7 @@ Clipperz.PM.Strings.Languages['fr-FR'.toLowerCase()] = MochiKit.Base.merge(Clipp
|
||||
'description': "<p>Clipperz peux aussi être utilisé comme un nouveau carnet d'adresse privé. Utilisez ce modèle pour ajouter des contacts facilement.</p> ",
|
||||
'fields': {
|
||||
'TXT': "Nom",
|
||||
'TXT': "Adresse eMail",
|
||||
'TXT': "Adresse email",
|
||||
'TXT': "Téléphone",
|
||||
'TXT': "Mobile",
|
||||
'ADDR': "Adresse"
|
||||
@ -256,23 +256,23 @@ Clipperz.PM.Strings.Languages['fr-FR'.toLowerCase()] = MochiKit.Base.merge(Clipp
|
||||
},
|
||||
'recordFieldTypologies': {
|
||||
'TXT': {
|
||||
'description': "simple text field",
|
||||
'description': "un simple champ de texte",
|
||||
'shortDescription': "texte"
|
||||
},
|
||||
'PWD': {
|
||||
'description': "simple text field, with default status set to hidden",
|
||||
'description': "un simple champ de texte dont le contenu sera caché par défaut",
|
||||
'shortDescription': "mot de passe"
|
||||
},
|
||||
'URL': {
|
||||
'description': "simple text field in edit mode, that became an active url in view mode",
|
||||
'description': "un champ de teste en mode édition, qui devient une adresse web active en mode vue",
|
||||
'shortDescription': "adresse de site web"
|
||||
},
|
||||
'DATE': {
|
||||
'description': "a value set with a calendar helper",
|
||||
'description': "un champ avec un calendrier pour aider à la saisie de dates",
|
||||
'shortDescription': "date"
|
||||
},
|
||||
'ADDR': {
|
||||
'description': "just like the URL, but the active link points to Google Maps (or similar service) passing the address value as argument",
|
||||
'description': "comme l'adresse de site web, sauf que l'adresse entrée donnera un lien vers Google Maps (ou un service similaire) en passant l'adresse comme paramètre",
|
||||
'shortDescription': "adresse"
|
||||
},
|
||||
'CHECK': {
|
||||
@ -303,7 +303,7 @@ Clipperz.PM.Strings.Languages['fr-FR'.toLowerCase()] = MochiKit.Base.merge(Clipp
|
||||
'deleteRecordPanelCollectRecordDataMessageText': "Mise à jour de la liste des cartes",
|
||||
'deleteRecordPanelEncryptUserDataMessageTitle': "Supprimer la carte",
|
||||
'deleteRecordPanelEncryptUserDataMessageText': "Chiffrement local des en-têtes de carte",
|
||||
'deleteRecordPanelSendingDataToTheServerMessageTitle': "Supprimer la carteDelete card",
|
||||
'deleteRecordPanelSendingDataToTheServerMessageTitle': "Supprimer la carte",
|
||||
'deleteRecordPanelSendingDataToTheServerMessageText': "Transmission des en-têtes chiffrées à Clipperz",
|
||||
'deleteRecordPanelUpdatingTheInterfaceMessageTitle': "Supprimer la carte",
|
||||
'deleteRecordPanelUpdatingTheInterfaceMessageText': "Mise à jour de l'interface",
|
||||
@ -325,20 +325,20 @@ Clipperz.PM.Strings.Languages['fr-FR'.toLowerCase()] = MochiKit.Base.merge(Clipp
|
||||
'recordDetailPasswordFieldUnscrambleLabel': "en clair",
|
||||
'recordDetailDirectLoginBlockTitle': "Accès directs",
|
||||
'recordDetailNewDirectLoginDescription': "<p>Configuration de l'accès direct</p> ",
|
||||
'recordDetailDirectLoginBlockNoDirectLoginConfiguredDescription': "<p>Cette carte contient-elle des informations d'identification pour un service en ligne?</p> <p>Utilisez le bookmarklet pour configurer un “accès direct” depuis Clipperz en un seul click!</p> ",
|
||||
'recordDetailDirectLoginBlockNoDirectLoginConfiguredDescription': "<p>Cette carte contient-elle des informations d'identification pour un service en ligne ?</p> <p>Utilisez le bookmarklet pour configurer un “accès direct” depuis Clipperz en un seul clic !</p> ",
|
||||
'recordDetailAddNewDirectLoginButtonLabel': "Ajouter un accès direct",
|
||||
'recordDetailEditButtonLabel': "Modifier",
|
||||
'recordDetailSaveButtonLabel': "Sauver",
|
||||
'recordDetailCancelButtonLabel': "Annuler",
|
||||
'newRecordTitleLabel': "_nouvelle carte_",
|
||||
'recordSaveChangesPanelCollectRecordInfoMessageTitle': "Enregistrement de la carte",
|
||||
'recordSaveChangesPanelCollectRecordInfoMessageText': "Updating card headers",
|
||||
'recordSaveChangesPanelCollectRecordInfoMessageText': "Mise à jour des entêtes de la carte",
|
||||
'recordSaveChangesPanelEncryptUserDataMessageTitle': "Sauvegarde de la carte",
|
||||
'recordSaveChangesPanelEncryptUserDataMessageText': "Cryptage local des en-têtes chiffrés",
|
||||
'recordSaveChangesPanelEncryptUserDataMessageText': "Chiffrement local des en-têtes",
|
||||
'recordSaveChangesPanelEncryptRecordDataMessageTitle': "Sauvegarde de la carte",
|
||||
'recordSaveChangesPanelEncryptRecordDataMessageText': "Cryptage local des en-têtes chiffrés",
|
||||
'recordSaveChangesPanelEncryptRecordDataMessageText': "Chiffrement local des en-têtes",
|
||||
'recordSaveChangesPanelEncryptRecordVersionDataMessageTitle': "Sauvegarde de la carte",
|
||||
'recordSaveChangesPanelEncryptRecordVersionDataMessageText': "Cryptage local des données de version de la carte",
|
||||
'recordSaveChangesPanelEncryptRecordVersionDataMessageText': "Chiffrement local des données de version de la carte",
|
||||
'recordSaveChangesPanelSendingDataToTheServerMessageTitle': "Sauvegarde de la carte",
|
||||
'recordSaveChangesPanelSendingDataToTheServerMessageText': "Téléchargement des cartes d’en-têtes chiffrés depuis Clipperz",
|
||||
'recordSaveChangesPanelUpdatingTheInterfaceMessageTitle': "Sauvegarde de la carte",
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -4,28 +4,28 @@
|
||||
{
|
||||
"icon": {
|
||||
"paths": [
|
||||
"M108.018 534.899l148.392 76.747h576.168l-190.68-98.62h-385.488l-208.41-107.792v98.62l7.467 3.858z",
|
||||
"M48.001 63.785v242.833l208.41 107.788h576.168l-536.16-277.295h593.28v768.365h-768.387v-166.462l135.098 69.865h576.168l-207.951-107.554h-368.217l-208.41-107.799v385.279h915.005v-915.020z"
|
||||
"M429.696 257.6c54.88 0 68.608 27.424 105.152 22.848 36.576-4.576 4.576-68.576-27.424-114.272s-105.12-22.848-160 9.152c-54.848 32-346.272 209.152-346.272 209.152h254.848c0-0.032 118.848-126.88 173.696-126.88zM0 417.568v416c0 35.328 28.64 64 64 64 0 0 246.72 0 514.656 0 48.064 0 92-149.344 141.344-149.344 42.848 0 75.072 149.344 117.312 149.344 284.576 0 538.656 0 538.656 0 35.36 0 64.032-28.672 64.032-64v-416h-1440zM576 705.6c0 52.992-43.008 96-96 96h-288c-53.024 0-96-43.008-96-96v-96c0-53.024 42.976-96 96-96h288c52.992 0 96 42.976 96 96v96zM1344 705.6c0 52.992-43.008 96-96 96h-288c-53.024 0-96-43.008-96-96v-96c0-53.024 42.976-96 96-96h288c52.992 0 96 42.976 96 96v96zM905.12 280.448c36.576 4.576 50.272-22.848 105.152-22.848 54.848 0 173.728 126.848 173.728 126.848h254.848c0 0-291.424-177.152-346.272-209.152-54.88-32-128-54.848-160-9.152s-64 109.728-27.456 114.304z"
|
||||
],
|
||||
"attrs": [],
|
||||
"isMulticolor": false,
|
||||
"grid": 0,
|
||||
"width": 1440,
|
||||
"tags": [
|
||||
"CLIPPERZ_SOLO_LOGO-nero"
|
||||
"3d glasses",
|
||||
"glasses"
|
||||
],
|
||||
"width": 1024
|
||||
"grid": 32
|
||||
},
|
||||
"attrs": [],
|
||||
"properties": {
|
||||
"order": 42,
|
||||
"id": 0,
|
||||
"prevSize": 32,
|
||||
"code": 59650,
|
||||
"name": "CLIPPERZ_SOLO_LOGO-nero",
|
||||
"ligatures": "clipperz"
|
||||
"code": 59649,
|
||||
"name": "3dglasses",
|
||||
"ligatures": "preview"
|
||||
},
|
||||
"setIdx": 0,
|
||||
"setId": 13,
|
||||
"setIdx": 1,
|
||||
"setId": 12,
|
||||
"iconIdx": 0
|
||||
},
|
||||
{
|
||||
@ -100,39 +100,12 @@
|
||||
"prevSize": 32,
|
||||
"code": 58884,
|
||||
"name": "logo",
|
||||
"ligatures": "qibberz"
|
||||
"ligatures": "clipperz"
|
||||
},
|
||||
"setIdx": 8,
|
||||
"setId": 4,
|
||||
"iconIdx": 1
|
||||
},
|
||||
{
|
||||
"icon": {
|
||||
"paths": [
|
||||
"M429.696 257.6c54.88 0 68.608 27.424 105.152 22.848 36.576-4.576 4.576-68.576-27.424-114.272s-105.12-22.848-160 9.152c-54.848 32-346.272 209.152-346.272 209.152h254.848c0-0.032 118.848-126.88 173.696-126.88zM0 417.568v416c0 35.328 28.64 64 64 64 0 0 246.72 0 514.656 0 48.064 0 92-149.344 141.344-149.344 42.848 0 75.072 149.344 117.312 149.344 284.576 0 538.656 0 538.656 0 35.36 0 64.032-28.672 64.032-64v-416h-1440zM576 705.6c0 52.992-43.008 96-96 96h-288c-53.024 0-96-43.008-96-96v-96c0-53.024 42.976-96 96-96h288c52.992 0 96 42.976 96 96v96zM1344 705.6c0 52.992-43.008 96-96 96h-288c-53.024 0-96-43.008-96-96v-96c0-53.024 42.976-96 96-96h288c52.992 0 96 42.976 96 96v96zM905.12 280.448c36.576 4.576 50.272-22.848 105.152-22.848 54.848 0 173.728 126.848 173.728 126.848h254.848c0 0-291.424-177.152-346.272-209.152-54.88-32-128-54.848-160-9.152s-64 109.728-27.456 114.304z"
|
||||
],
|
||||
"attrs": [],
|
||||
"isMulticolor": false,
|
||||
"width": 1440,
|
||||
"tags": [
|
||||
"3d glasses",
|
||||
"glasses"
|
||||
],
|
||||
"grid": 32
|
||||
},
|
||||
"attrs": [],
|
||||
"properties": {
|
||||
"order": 1,
|
||||
"id": 0,
|
||||
"prevSize": 32,
|
||||
"code": 59649,
|
||||
"name": "3dglasses",
|
||||
"ligatures": "preview"
|
||||
},
|
||||
"setIdx": 1,
|
||||
"setId": 12,
|
||||
"iconIdx": 0
|
||||
},
|
||||
{
|
||||
"icon": {
|
||||
"paths": [
|
||||
@ -374,6 +347,36 @@
|
||||
"setId": 0,
|
||||
"iconIdx": 208
|
||||
},
|
||||
{
|
||||
"icon": {
|
||||
"paths": [
|
||||
"M810 896v-598h-468v598h468zM810 214q34 0 60 25t26 59v598q0 34-26 60t-60 26h-468q-34 0-60-26t-26-60v-598q0-34 26-59t60-25h468zM682 42v86h-512v598h-84v-598q0-34 25-60t59-26h512z"
|
||||
],
|
||||
"attrs": [
|
||||
{}
|
||||
],
|
||||
"isMulticolor": false,
|
||||
"tags": [
|
||||
"content_copy"
|
||||
],
|
||||
"defaultCode": 57457,
|
||||
"grid": 24
|
||||
},
|
||||
"attrs": [
|
||||
{}
|
||||
],
|
||||
"properties": {
|
||||
"order": 43,
|
||||
"id": 113,
|
||||
"prevSize": 24,
|
||||
"code": 57457,
|
||||
"name": "content_copy",
|
||||
"ligatures": "copy"
|
||||
},
|
||||
"setIdx": 4,
|
||||
"setId": 9,
|
||||
"iconIdx": 113
|
||||
},
|
||||
{
|
||||
"icon": {
|
||||
"paths": [
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
@ -1242,7 +1242,7 @@ Clipperz.log("Warning: Record.fieldWithLabel('" + aLabel + "') is returning more
|
||||
Clipperz.Async.collectAll,
|
||||
Clipperz.Async.or
|
||||
]
|
||||
}, {trace:true});
|
||||
}, {trace:false});
|
||||
deferredResult.addCallback(MochiKit.Base.values);
|
||||
deferredResult.addCallback(MochiKit.Base.bind(function(someValues) {
|
||||
return MochiKit.Iter.some(someValues, MochiKit.Base.operator.identity);
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
@ -836,13 +836,15 @@ Clipperz.log("Warning: User.recordWithLabel('" + aLabel + "') is returning more
|
||||
var user = this;
|
||||
|
||||
return Clipperz.Async.callbacks("User.cloneRecord", [
|
||||
MochiKit.Base.method(this, 'hasPendingChanges'),
|
||||
Clipperz.Async.deferredIf("User has pending changes", [
|
||||
MochiKit.Async.fail
|
||||
], [
|
||||
// MochiKit.Base.method(this, 'hasPendingChanges'),
|
||||
// Clipperz.Async.deferredIf("User has pending changes", [
|
||||
/// MochiKit.Async.fail
|
||||
// ], [
|
||||
// MochiKit.Base.method(user, 'createNewRecord'),
|
||||
// MochiKit.Base.methodcaller('setUpWithRecord', aRecord),
|
||||
// ])
|
||||
MochiKit.Base.method(user, 'createNewRecord'),
|
||||
MochiKit.Base.methodcaller('setUpWithRecord', aRecord),
|
||||
])
|
||||
], {trace:false});
|
||||
},
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
@ -434,7 +434,8 @@ Clipperz.Base.extend(Clipperz.PM.Proxy.Offline.DataStore, Object, {
|
||||
randomBytes = Clipperz.Crypto.Base.generateRandomSeed();
|
||||
aConnection['b'] = new Clipperz.Crypto.BigInt(randomBytes, 16);
|
||||
v = new Clipperz.Crypto.BigInt(aConnection['userData']['v'], 16);
|
||||
aConnection['B'] = (Clipperz.Crypto.SRP.k().multiply(v)).add(Clipperz.Crypto.SRP.g().powerModule(aConnection['b'], Clipperz.Crypto.SRP.n()));
|
||||
//aConnection['B'] = (Clipperz.Crypto.SRP.k().multiply(v)).add(Clipperz.Crypto.SRP.g().powerModule(aConnection['b'], Clipperz.Crypto.SRP.n()));
|
||||
aConnection['B'] = ((Clipperz.Crypto.SRP.k().multiply(v)).add(Clipperz.Crypto.SRP.g().powerModule(aConnection['b'], Clipperz.Crypto.SRP.n())).module(Clipperz.Crypto.SRP.n()));
|
||||
|
||||
aConnection['A'] = someParameters.parameters.A;
|
||||
|
||||
@ -443,7 +444,7 @@ Clipperz.Base.extend(Clipperz.PM.Proxy.Offline.DataStore, Object, {
|
||||
|
||||
nextTollRequestType = 'CONNECT';
|
||||
} else if (someParameters.message == "credentialCheck") {
|
||||
var v, u, s, S, A, K, M1;
|
||||
var v, u, s, S, A, K, M1, KK;
|
||||
var stringHash = function (aValue) {
|
||||
return Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(aValue)).toHexString().substring(2);
|
||||
};
|
||||
@ -452,9 +453,11 @@ Clipperz.Base.extend(Clipperz.PM.Proxy.Offline.DataStore, Object, {
|
||||
A = new Clipperz.Crypto.BigInt(aConnection['A'], 16);
|
||||
u = new Clipperz.Crypto.BigInt(Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(A.asString(10) + aConnection['B'].asString(10))).toHexString(), 16);
|
||||
s = new Clipperz.Crypto.BigInt(aConnection['userData']['s'], 16);
|
||||
S = (A.multiply(v.powerModule(u, Clipperz.Crypto.SRP.n()))).powerModule(aConnection['b'], Clipperz.Crypto.SRP.n());
|
||||
//S = (A.multiply(v.powerModule(u, Clipperz.Crypto.SRP.n()))).powerModule(aConnection['b'], Clipperz.Crypto.SRP.n());
|
||||
S = v.powerModule(u, Clipperz.Crypto.SRP.n()).multiply(A).module(Clipperz.Crypto.SRP.n()).powerModule(aConnection['b'], Clipperz.Crypto.SRP.n());
|
||||
|
||||
K = stringHash(S.asString(10));
|
||||
KK = new Clipperz.Crypto.BigInt(K,16);
|
||||
|
||||
M1 = stringHash(
|
||||
"597626870978286801440197562148588907434001483655788865609375806439877501869636875571920406529" +
|
||||
@ -462,7 +465,7 @@ Clipperz.Base.extend(Clipperz.PM.Proxy.Offline.DataStore, Object, {
|
||||
s.asString(10) +
|
||||
A.asString(10) +
|
||||
aConnection['B'].asString(10) +
|
||||
K
|
||||
KK.asString(10)
|
||||
);
|
||||
if (someParameters.parameters.M1 == M1) {
|
||||
var M2;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
@ -107,20 +107,26 @@ Clipperz.PM.Toll.prototype = MochiKit.Base.update(null, {
|
||||
var deferredResult;
|
||||
var result;
|
||||
var payment;
|
||||
var i;
|
||||
var startTime;
|
||||
var currentTime;
|
||||
var elapsedTime;
|
||||
|
||||
currentTime = (new Date()).getMilliseconds();
|
||||
startTime = currentTime;
|
||||
|
||||
result = null;
|
||||
payment = aPayment;
|
||||
i = 0;
|
||||
elapsedTime = currentTime - startTime;
|
||||
|
||||
while ((result == null) && (i < Clipperz.PM.Toll.numberOfCloseLoopIterations)) {
|
||||
while ((result == null) && (elapsedTime < Clipperz.PM.Toll.maxTimeForCloseLoopIterations)) {
|
||||
if (Clipperz.ByteArray.prefixMatchingBits(aTargetValue, Clipperz.Crypto.SHA.sha256(payment)) > aCost) {
|
||||
result = payment;
|
||||
} else {
|
||||
payment.increment();
|
||||
}
|
||||
|
||||
i ++;
|
||||
currentTime = (new Date()).getMilliseconds();
|
||||
elapsedTime = currentTime - startTime;
|
||||
}
|
||||
|
||||
if (result == null) {
|
||||
@ -137,8 +143,7 @@ Clipperz.PM.Toll.prototype = MochiKit.Base.update(null, {
|
||||
var toll;
|
||||
|
||||
toll = this;
|
||||
deferredResult = new Clipperz.Async.Deferred("Toll.deferredPay");
|
||||
//deferredResult.addLog("--->>> deferredPay - " + this.cost());
|
||||
deferredResult = new Clipperz.Async.Deferred("Toll.deferredPay", {trace:false});
|
||||
deferredResult.addMethod(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'getRandomBytes', 32);
|
||||
deferredResult.addMethod(toll, 'innerDeferredPay', new Clipperz.ByteArray("0x" + this.targetValue()), this.cost());
|
||||
deferredResult.addCallback(MochiKit.Base.bind(function(aPayment) {
|
||||
@ -151,7 +156,6 @@ Clipperz.PM.Toll.prototype = MochiKit.Base.update(null, {
|
||||
|
||||
return result;
|
||||
}, this));
|
||||
//deferredResult.addLog("<<<--- deferredPay - " + this.cost());
|
||||
deferredResult.callback();
|
||||
|
||||
return deferredResult;
|
||||
@ -185,5 +189,5 @@ Clipperz.PM.Toll.validate = function(aTargetValue, aToll, aCost) {
|
||||
return result;
|
||||
};
|
||||
|
||||
Clipperz.PM.Toll.numberOfCloseLoopIterations = 50;
|
||||
Clipperz.PM.Toll.pauseBetweenEachCloseLoop = 0.5;
|
||||
Clipperz.PM.Toll.maxTimeForCloseLoopIterations = 500; // milliseconds
|
||||
Clipperz.PM.Toll.pauseBetweenEachCloseLoop = 0.1; // seconds
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
@ -34,7 +34,7 @@ Clipperz.PM.UI.AttachmentController = function(someParameters) {
|
||||
this.LATEST_ENCRYPTION_VERSION = '1.0'; // Versions aren't handled completely yet!
|
||||
|
||||
this.fileQueue = [];
|
||||
this.notifications = [];
|
||||
// this.notifications = [];
|
||||
this.operationsCount = null;
|
||||
|
||||
this.encryptedDocument = null;
|
||||
@ -56,19 +56,20 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
/*
|
||||
notifyUpdate: function() {
|
||||
MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'updateAttachmentQueueInfo', this.getQueueInfo(), this.getNotificationsInfo());
|
||||
// MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'updateAttachmentQueueInfo', this.getQueueInfo(), this.getNotificationsInfo());
|
||||
MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'updateNotifications');
|
||||
},
|
||||
|
||||
*/
|
||||
getQueueInfo: function() {
|
||||
return this.fileQueue;
|
||||
},
|
||||
|
||||
/*
|
||||
getNotificationsInfo: function() {
|
||||
return this.notifications;
|
||||
},
|
||||
|
||||
*/
|
||||
//=========================================================================
|
||||
// Entry points
|
||||
//=========================================================================
|
||||
@ -164,7 +165,7 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
|
||||
|
||||
var count = this.updateOperationsCount();
|
||||
|
||||
this.notifyUpdate();
|
||||
// this.notifyUpdate();
|
||||
|
||||
processNextElements = true;
|
||||
for (i in this.fileQueue) {
|
||||
@ -209,7 +210,7 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
|
||||
case 'WAITING_SAVE':
|
||||
this.saveFile(currentElement['reference'], currentElement['decryptedArray'], currentElement['meta']['name'], currentElement['meta']['type']);
|
||||
processNextElements = false;
|
||||
Clipperz.Sound.beep();
|
||||
// Clipperz.Sound.beep();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -247,7 +248,6 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
|
||||
|
||||
addFileToQueue: function(someParameters) {
|
||||
this.fileQueue.push(someParameters);
|
||||
this.addNotification(someParameters);
|
||||
|
||||
this.dispatchQueueOperations();
|
||||
},
|
||||
@ -268,6 +268,10 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
|
||||
|
||||
MochiKit.Base.update(this.fileQueue[queuePosition], someParameters);
|
||||
|
||||
if ((someParameters['status'] == 'DONE') || (someParameters['status'] == 'FAILED')) {
|
||||
this.addNotification(this.fileQueue[queuePosition], someParameters['status']);
|
||||
}
|
||||
|
||||
this.dispatchQueueOperations();
|
||||
},
|
||||
|
||||
@ -293,13 +297,38 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
|
||||
// Notifications
|
||||
//=========================================================================
|
||||
|
||||
addNotification: function(aQueueElement) {
|
||||
this.notifications.push({
|
||||
'id': this.randomId(),
|
||||
'queueElement': aQueueElement
|
||||
})
|
||||
},
|
||||
addNotification: function(aQueueElement, aStatus) {
|
||||
//console.log("ADD ATTACHMENT NOTIFICATION", aQueueElement);
|
||||
var messagePrefix = "";
|
||||
var message;
|
||||
var filename;
|
||||
var level;
|
||||
|
||||
if (aStatus == 'DONE') {
|
||||
level = 'info';
|
||||
if (aQueueElement['process'] == 'DOWNLOAD') {
|
||||
messagePrefix = "downloaded attachment ";
|
||||
} else if (aQueueElement['process'] == 'UPLOAD') {
|
||||
messagePrefix = "uploaded attachment ";
|
||||
}
|
||||
} else if (aStatus == 'FAILED') {
|
||||
level = 'error';
|
||||
if (aQueueElement['process'] == 'DOWNLOAD') {
|
||||
messagePrefix = "error downloading attachment ";
|
||||
} else if (aQueueElement['process'] == 'UPLOAD') {
|
||||
messagePrefix = "error uploading attachment ";
|
||||
}
|
||||
} else {
|
||||
level = 'warning';
|
||||
messagePrefix = "???";
|
||||
}
|
||||
|
||||
filename = aQueueElement['meta']['name'];
|
||||
message = messagePrefix + filename;
|
||||
|
||||
MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'addNotification', {'message':message, 'level':level});
|
||||
},
|
||||
/*
|
||||
removeNotification: function(aNotificationId) {
|
||||
var i, position;
|
||||
|
||||
@ -314,14 +343,15 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
|
||||
this.notifications.splice(position, 1);
|
||||
}
|
||||
|
||||
this.notifyUpdate();
|
||||
// this.notifyUpdate();
|
||||
},
|
||||
|
||||
*/
|
||||
/*
|
||||
randomId: function() {
|
||||
return Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32).toHexString().substring(2);
|
||||
return Clipperz.Crypto.randomKey();
|
||||
// return Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32).toHexString().substring(2);
|
||||
},
|
||||
|
||||
|
||||
*/
|
||||
//=========================================================================
|
||||
// Queue Processing: READ
|
||||
//=========================================================================
|
||||
@ -432,6 +462,7 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
|
||||
'status': 'DONE',
|
||||
'requestProgress': 1,
|
||||
}),
|
||||
// add notification
|
||||
], {trace:false});
|
||||
},
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
@ -34,7 +34,9 @@ Clipperz.PM.UI.Components.ButtonClass = React.createClass({
|
||||
'handler': React.PropTypes.func.isRequired,
|
||||
'className': React.PropTypes.string,
|
||||
'badgeTopContent': React.PropTypes.number,
|
||||
'badgeTopLevel': React.PropTypes.string,
|
||||
'badgeBottomContent': React.PropTypes.number,
|
||||
'badgeBottomLevel': React.PropTypes.string,
|
||||
},
|
||||
|
||||
//=========================================================================
|
||||
@ -52,18 +54,18 @@ Clipperz.PM.UI.Components.ButtonClass = React.createClass({
|
||||
|
||||
badgeTop = null;
|
||||
if (this.props['badgeTopContent']) {
|
||||
badgeTop = React.DOM.span({'className': 'badge top'}, this.props['badgeTopContent']);
|
||||
badgeTop = React.DOM.span({'className': Clipperz.PM.UI.Components.classNames('badge', 'top', this.props['badgeTopLevel'])}, this.props['badgeTopContent']);
|
||||
};
|
||||
|
||||
badgeBottom = null;
|
||||
if (this.props['badgeBottomContent']) {
|
||||
badgeBottom = React.DOM.span({'className': 'badge bottom'}, this.props['badgeBottomContent']);
|
||||
badgeBottom = React.DOM.span({'className': Clipperz.PM.UI.Components.classNames('badge', 'bottom', this.props['badgeBottomLevel'])}, this.props['badgeBottomContent']);
|
||||
};
|
||||
|
||||
|
||||
return React.DOM.div({className:Clipperz.PM.UI.Components.classNames(classes), onClick:this.props['handler']}, [
|
||||
React.DOM.div({className:this.props['eventName']}, [
|
||||
React.DOM.h3({className:'label'}, this.props['label']),
|
||||
return React.DOM.div({'className':Clipperz.PM.UI.Components.classNames(classes), onClick:this.props['handler']}, [
|
||||
React.DOM.div({'className':this.props['eventName']}, [
|
||||
React.DOM.h3({'className':'label'}, this.props['label']),
|
||||
badgeTop,
|
||||
badgeBottom,
|
||||
])
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
@ -63,33 +63,66 @@ Clipperz.PM.UI.Components.CardToolbarClass = React.createClass({
|
||||
|
||||
//============================================================================
|
||||
|
||||
renderWithSidePanels: function () {
|
||||
notificationCounter: function () {
|
||||
var result;
|
||||
|
||||
// console.log("CARD TOOLBAR NOTIFICATIONS", this.props['notifications']);
|
||||
|
||||
if (this.props['notifications']) {
|
||||
result = this.props['notifications'].length;
|
||||
} else {
|
||||
result = null;
|
||||
}
|
||||
/*
|
||||
var attachmentDownloadNotificationNumber = MochiKit.Base.filter(function(anElement) {
|
||||
return anElement['queueElement']['process'] == 'DOWNLOAD';
|
||||
}, this.props['attachmentQueueInfo']['notifications']).length;
|
||||
|
||||
var attachmentUploadNotificationNumber = this.props['attachmentQueueInfo']['notifications'].length - attachmentDownloadNotificationNumber;
|
||||
|
||||
// attachmentDownloadNotificationNumber = 2;
|
||||
// attachmentUploadNotificationNumber = 3;
|
||||
/*
|
||||
var verifyingCertificateNotificationNumber = this.props['certificateQueueInfo'] ? MochiKit.Base.filter(function (anCertificationInfo) {
|
||||
return anCertificationInfo['status'] == 'requested';
|
||||
}, this.props['certificateQueueInfo']).length : 0;
|
||||
var verifiedCertificateNotificationNumber = this.props['certificateQueueInfo'] ? MochiKit.Base.filter(function (anCertificationInfo) {
|
||||
return anCertificationInfo['status'] == 'published';
|
||||
}, this.props['certificateQueueInfo']).length : 0;
|
||||
*/
|
||||
return result;
|
||||
},
|
||||
|
||||
notificationLevel: function () {
|
||||
var result = 'info';
|
||||
var i, c;
|
||||
|
||||
c = this.props['notifications'].length;
|
||||
for (i=0; i<c; i++) {
|
||||
var level;
|
||||
|
||||
level = this.props['notifications'][i]['level'];
|
||||
if (level == 'error') {
|
||||
result = 'error';
|
||||
} else if ((level == 'warning') && (result == 'info')) {
|
||||
result = 'warning';
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
},
|
||||
|
||||
renderWithSidePanels: function () {
|
||||
return [
|
||||
React.DOM.div({className:'selectionToggle'}, [
|
||||
Clipperz.PM.UI.Components.Button({eventName:'selectionToggleButton', label:"tags", handler:this.selectionToggleHandler})
|
||||
Clipperz.PM.UI.Components.Button({'eventName':'selectionToggleButton', 'label':"tags", 'handler':this.selectionToggleHandler})
|
||||
]),
|
||||
this.renderWithoutSidePanels(),
|
||||
|
||||
// TODO: validate and adjust names
|
||||
React.DOM.div({className:'settingsToggle'}, [
|
||||
Clipperz.PM.UI.Components.Button({eventName:'certificateQueueToggleButton', label:"certificate", handler:this.certificateQueueToggleHandler, badgeTopContent:verifyingCertificateNotificationNumber, badgeBottomContent:verifiedCertificateNotificationNumber}),
|
||||
Clipperz.PM.UI.Components.Button({eventName:'attachmentQueueToggleButton', label:"\u2191\u2193", handler:this.attachmentQueueToggleHandler, badgeTopContent:attachmentDownloadNotificationNumber, badgeBottomContent:attachmentUploadNotificationNumber}),
|
||||
Clipperz.PM.UI.Components.Button({eventName:'settingsToggleButton', label:"menu", handler:this.settingsToggleHandler})
|
||||
React.DOM.div({'className':'settingsToggle'}, [
|
||||
// Clipperz.PM.UI.Components.Button({eventName:'certificateQueueToggleButton', label:"certificate", handler:this.certificateQueueToggleHandler, badgeTopContent:verifyingCertificateNotificationNumber, badgeBottomContent:verifiedCertificateNotificationNumber}),
|
||||
// Clipperz.PM.UI.Components.Button({eventName:'attachmentQueueToggleButton', label:"\u2191\u2193", handler:this.attachmentQueueToggleHandler, badgeTopContent:attachmentDownloadNotificationNumber, badgeBottomContent:attachmentUploadNotificationNumber}),
|
||||
Clipperz.PM.UI.Components.Button({'eventName':'settingsToggleButton', 'label':"menu", 'handler':this.settingsToggleHandler, 'badgeTopContent':this.notificationCounter(), 'badgeTopLevel':this.notificationLevel()})
|
||||
])
|
||||
];
|
||||
},
|
||||
@ -102,36 +135,36 @@ Clipperz.PM.UI.Components.CardToolbarClass = React.createClass({
|
||||
//console.log("CARD TOOLBAR", this.props['filter']['type']);
|
||||
|
||||
if (this.props['filter']['type'] == 'RECENT') {
|
||||
result = [React.DOM.div({className:'clipperz'}, [React.DOM.span({className:'logo recent'}, "recent")])];
|
||||
result = [React.DOM.div({'className':'clipperz'}, [React.DOM.span({'className':'logo recent'}, "recent")])];
|
||||
} else if (this.props['filter']['type'] == 'WITH_ATTACHMENTS') {
|
||||
result = [React.DOM.div({className:'clipperz'}, [React.DOM.span({className:'logo withAttachments'}, "attachment")])];
|
||||
result = [React.DOM.div({'className':'clipperz'}, [React.DOM.span({'className':'logo withAttachments'}, "attachment")])];
|
||||
} else if (this.props['filter']['type'] == 'TAG') {
|
||||
result = [React.DOM.div({className:'clipperz'}, [
|
||||
React.DOM.span({className:'logo tag'}, "tag"),
|
||||
React.DOM.span({className:'value'}, this.props['filter']['value'])
|
||||
result = [React.DOM.div({'className':'clipperz'}, [
|
||||
React.DOM.span({'className':'logo tag'}, "tag"),
|
||||
React.DOM.span({'className':'value'}, this.props['filter']['value'])
|
||||
])];
|
||||
} else if (this.props['filter']['type'] == 'UNTAGGED') {
|
||||
result = [React.DOM.div({className:'clipperz'}, [
|
||||
React.DOM.span({className:'logo tag'}, "tag"),
|
||||
React.DOM.span({className:'value'}, "untagged")
|
||||
result = [React.DOM.div({'className':'clipperz'}, [
|
||||
React.DOM.span({'className':'logo tag'}, "tag"),
|
||||
React.DOM.span({'className':'value'}, "untagged")
|
||||
])];
|
||||
} else if (this.props['filter']['type'] == 'SEARCH') {
|
||||
result = [React.DOM.div({className:'clipperz'}, [
|
||||
React.DOM.span({className:'logo search'}, "search"),
|
||||
React.DOM.span({className:'value'}, this.props['filter']['value'])
|
||||
result = [React.DOM.div({'className':'clipperz'}, [
|
||||
React.DOM.span({'className':'logo search'}, "search"),
|
||||
React.DOM.span({'className':'value'}, this.props['filter']['value'])
|
||||
])];
|
||||
} else {
|
||||
result = [React.DOM.div({className:'clipperz'}, [React.DOM.span({className:'logo clipperz'}, "clipperz")])];
|
||||
result = [React.DOM.div({'className':'clipperz'}, [React.DOM.span({'className':'logo clipperz'}, "clipperz")])];
|
||||
}
|
||||
} else {
|
||||
result = [React.DOM.div({className:'clipperz'}, [React.DOM.span({className:'logo clipperz'}, "clipperz")])];
|
||||
result = [React.DOM.div({'className':'clipperz'}, [React.DOM.span({'className':'logo clipperz'}, "clipperz")])];
|
||||
}
|
||||
|
||||
return result;
|
||||
},
|
||||
|
||||
render: function () {
|
||||
return React.DOM.div({className:'cardToolbar ' + this.props['style']}, [
|
||||
return React.DOM.div({'className':'cardToolbar ' + this.props['style']}, [
|
||||
React.DOM.header({}, this.props['enableSidePanels'] ? this.renderWithSidePanels() : this.renderWithoutSidePanels()),
|
||||
Clipperz.PM.UI.Components.AccountStatus(MochiKit.Base.update(this.props['accountInfo'], this.props['proxyInfo'])),
|
||||
Clipperz.PM.UI.Components.MessageBox(this.props['messageBox']),
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
@ -66,7 +66,7 @@ Clipperz.PM.UI.Components.Cards.CertificateRendererClass = React.createClass({
|
||||
];
|
||||
};
|
||||
|
||||
return React.DOM.svg({'viewBox':'0 0 600 ' + height, 'width':'100%', 'height':height, 'fill':'currentcolor'}, [
|
||||
return React.DOM.svg({'viewBox':'0 0 630 ' + height, 'width':'100%', 'height':height, 'fill':'currentcolor'}, [
|
||||
arrow(0, height/2),
|
||||
React.DOM.rect({'x':arrowLength, 'y':0, 'width':rectWidth, 'height':height, 'fill':'blue', 'opacity':0.3}),
|
||||
React.DOM.rect({'x':arrowLength, 'y':0, 'width':rectWidth, 'height':height, 'fill':'none', 'stroke':'black', 'strokeWidth':1, 'opacity':1}),
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
@ -65,7 +65,7 @@ Clipperz.PM.UI.Components.Cards.CommandToolbarClass = React.createClass({
|
||||
'archive': { 'label': archiveLabel, 'broadcastEvent': 'toggleArchiveCard', 'enabled': this.isFeatureEnabled('EDIT_CARD')},
|
||||
// 'share': { 'label': "share", 'broadcastEvent': 'shareCard' },
|
||||
'clone': { 'label': "clone", 'broadcastEvent': 'cloneCard', 'enabled': this.isFeatureEnabled('ADD_CARD')},
|
||||
'register': { 'label': "register", 'broadcastEvent': 'createCertificate', 'enabled': this.isFeatureEnabled('REGISTER_CARD') && !this.isCardCertified()},
|
||||
// 'register': { 'label': "register", 'broadcastEvent': 'createCertificate', 'enabled': this.isFeatureEnabled('REGISTER_CARD') && !this.isCardCertified()},
|
||||
'edit': { 'label': "edit", 'broadcastEvent': 'editCard', 'enabled': this.isFeatureEnabled('EDIT_CARD') && !this.isCardCertified()}
|
||||
};
|
||||
},
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
@ -306,6 +306,33 @@ Clipperz.PM.UI.Components.Cards.ViewClass = React.createClass({
|
||||
return result;
|
||||
},
|
||||
|
||||
onClickOnFieldValue: function (event) {
|
||||
var succeeded;
|
||||
var element;
|
||||
|
||||
element = event.target;
|
||||
|
||||
// event.target.focus();
|
||||
// event.target.select();
|
||||
// event.target.selectionStart = 0;
|
||||
// event.target.selectionEnd = event.target.value.length;
|
||||
// event.stopPropagation();
|
||||
// event.preventDefault();
|
||||
|
||||
element.focus();
|
||||
element.setSelectionRange(0, element.value.length);
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
|
||||
// selectedText = element.value;
|
||||
|
||||
succeeded = document.execCommand('copy');
|
||||
if (succeeded === true) {
|
||||
window.getSelection().removeAllRanges();
|
||||
MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'copyFieldValueFeedback');
|
||||
}
|
||||
},
|
||||
|
||||
//............................................................................
|
||||
|
||||
renderField: function (aField) {
|
||||
@ -331,10 +358,10 @@ Clipperz.PM.UI.Components.Cards.ViewClass = React.createClass({
|
||||
React.DOM.div({'className':'fieldValues'}, [
|
||||
React.DOM.div({'className':'fieldLabel'}, aField['label']),
|
||||
Clipperz.PM.UI.Components.Cards.TextArea({
|
||||
// React.DOM.textarea({
|
||||
'readOnly': true,
|
||||
// 'onMouseUp': function(e) { e.target.focus(); e.target.select(); e.stopPropagation(); e.preventDefault();},
|
||||
'onClick': function(e) { e.target.focus(); e.target.select(); e.target.selectionStart = 0; e.target.selectionEnd = e.target.value.length; e.stopPropagation(); e.preventDefault(); },
|
||||
// 'onClick': function(e) { e.target.focus(); e.target.select(); e.target.selectionStart = 0; e.target.selectionEnd = e.target.value.length; e.stopPropagation(); e.preventDefault(); },
|
||||
'onClick': this.onClickOnFieldValue,
|
||||
'className':Clipperz.PM.UI.Components.classNames(cardFieldValueClasses),
|
||||
'value': aField['value'],
|
||||
'rows': 1
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
Copyright 2008-2015 Clipperz Srl
|
||||
Copyright 2008-2018 Clipperz Srl
|
||||
|
||||
This file is part of Clipperz, the online password manager.
|
||||
For further information about its features and functionalities please
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user