Compare commits

..

No commits in common. "master" and "master-GE" have entirely different histories.

193 changed files with 2582 additions and 7239 deletions

View File

@ -1,11 +1,8 @@
Copy of Working Version of Clipperz
Original: http://git.whoc.org.uk/git/password-manager.git
# ![Clipperz icon][icon] CLIPPERZ - Online Password Manager # ![Clipperz icon][icon] CLIPPERZ - Online Password Manager
[icon]: ./Icon.png [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, … 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]. 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].
@ -31,7 +28,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. 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/ [app]: https://clipperz.is/app/
[CA]: https://clipperz.is/open_source/contributor_agreement/ [CA]: https://clipperz.is/contributor_agreement/
[contact]: https://clipperz.is/about/contacts/ [contact]: https://clipperz.is/about/contacts/
@ -64,7 +61,7 @@ Please [download][CA] and review the Contributor Agreement for a complete unders
## Building ## Building
In order to build the deployable version, you need to invoke the following command: In order to build the deployable version, you need to invoke the following command:
git clone https://github.com/clipperz/password-manager.git git clone git@github.com:clipperz/password-manager.git
cd password-manager cd password-manager
./scripts/build install --backends php python --frontends delta ./scripts/build install --backends php python --frontends delta

View File

@ -438,11 +438,6 @@ class message(HandlerMixin):
result['oldestUsedEncryptedVersion'] = oldest_encryption_version result['oldestUsedEncryptedVersion'] = oldest_encryption_version
result['versions'] = record_versions result['versions'] = record_versions
result['currentVersion'] = record.current_record_version.reference 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}) return jsonify({'result': result})
@login_required @login_required
@ -664,15 +659,6 @@ class message(HandlerMixin):
result['result'] = 'done' result['result'] = 'done'
return jsonify({'result': result}) 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): class logout(HandlerMixin):

View File

@ -104,12 +104,8 @@ class RecordVersion(db.Model):
self.version = self.record.version self.version = self.record.version
self.previous_version_key = recordVersionData['previousVersionKey'] self.previous_version_key = recordVersionData['previousVersionKey']
self.update_date = datetime.datetime.utcnow() self.update_date = datetime.datetime.utcnow()
self.access_date = datetime.datetime.utcnow()
self.record.update(someData['record'], self) self.record.update(someData['record'], self)
def access(self):
self.access_date = datetime.datetime.now()
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
@ -148,13 +144,9 @@ class Record(db.Model):
self.data = data['data'] self.data = data['data']
self.api_version = data['version'] self.api_version = data['version']
self.update_date = datetime.datetime.now() self.update_date = datetime.datetime.now()
self.access_date = datetime.datetime.now()
self.current_record_version = record_version self.current_record_version = record_version
self.version += 1 self.version += 1
def access(self):
self.access_date = datetime.datetime.now()
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------

View File

@ -1,5 +1,5 @@
{ {
"request.path": "../index.php", "request.path": "../index.php",
"dump.path": "/../dump.php?frontend=", "dump.path": "../dump.php",
"should.pay.toll": "false" "should.pay.toll": "false"
} }

View File

@ -11,22 +11,7 @@ header('Content-Disposition: attachment; filename=Clipperz_'.date("Ymd").'.html'
include "./objects/class.onetimepassword.php"; include "./objects/class.onetimepassword.php";
include "./objects/class.onetimepasswordstatus.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(); session_start();

View File

@ -409,11 +409,7 @@ error_log("message");
$recordStats["updateDate"] = $record->update_date; $recordStats["updateDate"] = $record->update_date;
$recordsStats[$record->reference] = $recordStats; $recordsStats[$record->reference] = $recordStats;
} }
if ( isset( $recordsStats ) ) { $result["recordsStats"] = $recordsStats;
$result["recordsStats"] = $recordsStats;
} else {
$result["recordsStats"] = NULL;
}
$result["statistics"] = $user->statistics; $result["statistics"] = $user->statistics;
$result["version"] = $user->version; $result["version"] = $user->version;
@ -547,11 +543,7 @@ error_log("message");
$user->Save(); $user->Save();
if (isset( $parameters["parameters"]["records"]["deleted"] ) ) { $recordToDeleteReferenceList = $parameters["parameters"]["records"]["deleted"];
$recordToDeleteReferenceList = $parameters["parameters"]["records"]["deleted"];
} else {
$recordToDeleteReferenceList = NULL;
}
$recordList = array(); $recordList = array();
$c = count($recordToDeleteReferenceList); $c = count($recordToDeleteReferenceList);
for ($i=0; $i<$c; $i++) { for ($i=0; $i<$c; $i++) {

View File

@ -17,10 +17,17 @@
$databaseUser = $GLOBALS['configuration']['user']; $databaseUser = $GLOBALS['configuration']['user'];
$databasePassword = $GLOBALS['configuration']['pass']; $databasePassword = $GLOBALS['configuration']['pass'];
$databasePort = $GLOBALS['configuration']['port']; $databasePort = $GLOBALS['configuration']['port'];
$this->connection = mysqli_connect ($serverName, $databaseUser, $databasePassword , $databaseName, $databasePort); $this->connection = mysql_connect ($serverName.":".$databasePort, $databaseUser, $databasePassword);
if (!$this->connection) if ($this->connection)
{ {
throw new Exception('I cannot find the specified database "'.$databaseName.'". Please edit configuration.php.'); if (!mysql_select_db ($databaseName))
{
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.');
} }
} }
@ -36,19 +43,19 @@
public static function Reader($query, $connection) public static function Reader($query, $connection)
{ {
$cursor = mysqli_query($connection, $query); $cursor = mysql_query($query, $connection);
return $cursor; return $cursor;
} }
public static function Read($cursor) public static function Read($cursor)
{ {
return mysqli_fetch_assoc($cursor); return mysql_fetch_assoc($cursor);
} }
public static function NonQuery($query, $connection) public static function NonQuery($query, $connection)
{ {
mysqli_query($connection, $query); mysql_query($query, $connection);
$result = mysqli_affected_rows($connection); $result = mysql_affected_rows($connection);
if ($result == -1) if ($result == -1)
{ {
return false; return false;
@ -59,14 +66,14 @@
public static function Query($query, $connection) public static function Query($query, $connection)
{ {
$result = mysqli_query($connection, $query); $result = mysql_query($query, $connection);
return mysqli_num_rows($result); return mysql_num_rows($result);
} }
public static function InsertOrUpdate($query, $connection) public static function InsertOrUpdate($query, $connection)
{ {
$result = mysqli_query($connection, $query); $result = mysql_query($query, $connection);
return intval(mysqli_insert_id($connection)); return intval(mysql_insert_id($connection));
} }
} }
?> ?>

View File

@ -92,10 +92,10 @@ class POG_Base
return $objectList; return $objectList;
} }
private function CreateObjects($mysqli_result, $objectClass, $lazyLoad = true) private function CreateObjects($mysql_result, $objectClass, $lazyLoad = true)
{ {
$objectList = array(); $objectList = array();
while ($row = mysqli_fetch_assoc($mysqli_result)) while ($row = mysql_fetch_assoc($mysql_result))
{ {
$pog_object = new $objectClass(); $pog_object = new $objectClass();
$this->PopulateObjectAttributes($row, $pog_object); $this->PopulateObjectAttributes($row, $pog_object);

View File

@ -164,26 +164,24 @@ if(count($_POST) > 0 && $_SESSION['diagnosticsSuccessful']==false)
if ($errors == 0) if ($errors == 0)
{ {
AddTrace('File Structure....OK!'); 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++; $errors++;
AddError('Cannot connect to the specified database server. Edit configuration.php'); 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()) if (isset($GLOBALS['configuration']['db_encoding']) && $GLOBALS['configuration']['db_encoding'] == 1 && !Base64::IsBase64FunctionInstalled())
{ {
$errors++; $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'); 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 ($errors == 0)
# { {
# if (!@mysql_select_db ($GLOBALS['configuration']['db'])) if (!@mysql_select_db ($GLOBALS['configuration']['db']))
# { {
# $errors++; $errors++;
# AddError('Cannot find the specified database "'.$GLOBALS['configuration']['db'].'". Edit configuration.php'); AddError('Cannot find the specified database "'.$GLOBALS['configuration']['db'].'". Edit configuration.php');
# } }
# } }
} }
/** /**

View File

@ -276,10 +276,10 @@
{ {
$link = ''; $link = '';
$content = file_get_contents($objectFilePath); $content = file_get_contents($objectFilePath);
$contentParts = explode("<b>",$content); $contentParts = split("<b>",$content);
if (isset($contentParts[1])) if (isset($contentParts[1]))
{ {
$contentParts2 = explode("</b>",$contentParts[1]); $contentParts2 = split("</b>",$contentParts[1]);
} }
if (isset($contentParts2[0])) if (isset($contentParts2[0]))
{ {
@ -287,8 +287,8 @@
} }
if (isset($className)) if (isset($className))
{ {
$linkParts1 = explode("\*\/", $contentParts[1]); $linkParts1 = split("\*\/", $contentParts[1]);
$linkParts2 = explode("\@link", $linkParts1[0]); $linkParts2 = split("\@link", $linkParts1[0]);
if (isset($linkParts2[1])) if (isset($linkParts2[1]))
{ {
$link = $linkParts2[1]; $link = $linkParts2[1];
@ -313,10 +313,10 @@
function GetObjectName($objectFilePath) function GetObjectName($objectFilePath)
{ {
$content = file_get_contents($objectFilePath); $content = file_get_contents($objectFilePath);
$contentParts = explode("<b>",$content); $contentParts = split("<b>",$content);
if (isset($contentParts[1])) if (isset($contentParts[1]))
{ {
$contentParts2 = explode("</b>",$contentParts[1]); $contentParts2 = split("</b>",$contentParts[1]);
} }
if (isset($contentParts2[0])) if (isset($contentParts2[0]))
{ {
@ -593,10 +593,10 @@
//extract sql //extract sql
$content = file_get_contents($objectFilePath); $content = file_get_contents($objectFilePath);
$contentParts = explode("<b>",$content); $contentParts = split("<b>",$content);
if (isset($contentParts[1])) if (isset($contentParts[1]))
{ {
$contentParts2 = explode("</b>",$contentParts[1]); $contentParts2 = split("</b>",$contentParts[1]);
} }
if (isset($contentParts2[0])) if (isset($contentParts2[0]))
{ {
@ -604,8 +604,8 @@
} }
if (isset($className)) if (isset($className))
{ {
$sqlParts = explode(";",$contentParts[0]); $sqlParts = split(";",$contentParts[0]);
$sqlPart = explode("CREATE",$sqlParts[0]); $sqlPart = split("CREATE",$sqlParts[0]);
$sql = "CREATE ".$sqlPart[1].";"; $sql = "CREATE ".$sqlPart[1].";";
//execute sql //execute sql

View File

@ -1,5 +1,5 @@
# #
# Copyright 2008-2018 Clipperz Srl # Copyright 2008-2015 Clipperz Srl
# #
# This file is part of Clipperz, the online password manager. # This file is part of Clipperz, the online password manager.
# For further information about its features and functionalities please # For further information about its features and functionalities please

View File

@ -13,7 +13,7 @@
<script> <script>
Clipperz_IEisBroken = false; Clipperz_IEisBroken = false;
Clipperz_normalizedNewLine = '\n'; Clipperz_normalizedNewLine = '\n';
Clipperz_dumpUrl = "@dump.path@beta"; Clipperz_dumpUrl = "@dump.path@/beta";
</script> </script>
<!--[if IE]><script> <!--[if IE]><script>

View File

@ -354,8 +354,7 @@ Clipperz.PM.Proxy.Offline.DataStore.prototype = MochiKit.Base.update(null, {
this.set_C(someParameters.parameters.C); this.set_C(someParameters.parameters.C);
this.set_b(new Clipperz.Crypto.BigInt(randomBytes, 16)); this.set_b(new Clipperz.Crypto.BigInt(randomBytes, 16));
v = new Clipperz.Crypto.BigInt(this.userData()['v'], 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); this.set_A(someParameters.parameters.A);
@ -364,7 +363,7 @@ Clipperz.PM.Proxy.Offline.DataStore.prototype = MochiKit.Base.update(null, {
nextTollRequestType = 'CONNECT'; nextTollRequestType = 'CONNECT';
} else if (someParameters.message == "credentialCheck") { } else if (someParameters.message == "credentialCheck") {
var v, u, s, S, A, K, M1, KK; var v, u, s, S, A, K, M1;
var stringHash = function (aValue) { var stringHash = function (aValue) {
return Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(aValue)).toHexString().substring(2); return Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(aValue)).toHexString().substring(2);
}; };
@ -374,11 +373,9 @@ Clipperz.PM.Proxy.Offline.DataStore.prototype = MochiKit.Base.update(null, {
A = new Clipperz.Crypto.BigInt(this.A(), 16); 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); 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 = 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)); K = stringHash(S.asString(10));
KK = new Clipperz.Crypto.BigInt(K,16);
M1 = stringHash( M1 = stringHash(
"597626870978286801440197562148588907434001483655788865609375806439877501869636875571920406529" + "597626870978286801440197562148588907434001483655788865609375806439877501869636875571920406529" +
@ -386,7 +383,7 @@ Clipperz.PM.Proxy.Offline.DataStore.prototype = MochiKit.Base.update(null, {
s.asString(10) + s.asString(10) +
A.asString(10) + A.asString(10) +
this.B().asString(10) + this.B().asString(10) +
KK.asString(10) K
); );
if (someParameters.parameters.M1 == M1) { if (someParameters.parameters.M1 == M1) {
var M2; var M2;

View File

@ -4,7 +4,7 @@ Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please
refer to http://www.clipperz.is. refer to http://www.clipperz.com.
* Clipperz is free software: you can redistribute it and/or modify it * Clipperz is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published under the terms of the GNU Affero General Public License as published
@ -22,19 +22,19 @@ refer to http://www.clipperz.is.
*/ */
Clipperz.PM.Strings.Languages['fr-FR'.toLowerCase()] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], { 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 dauthentification 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 dutilisateur ou votre mot de passe</p> </li> <li> <p>protéger toutes vos données sensibles: codes dalarmes, PINs (téléphone portable), cartes de crédit, &hellip;</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 nimporte 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 dinformations</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 dauthentification 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 dutilisateur ou votre mot de passe</p> </li> <li> <p>protéger toutes vos données sensibles: codes dalarmes, PINs (téléphone portable), carte de crédits, &hellip;</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 nimporte 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 dinformations</a> </li> </ul> ",
'loginFormTitle': "identifiez-vous avec votre compte Clipperz", 'loginFormTitle': "identifiez-vous avec votre compte Clipperz",
'loginFormUsernameLabel': "nom dutilisateur", 'loginFormUsernameLabel': "nom dutilisateur",
'loginFormPassphraseLabel': "phrase secrète", 'loginFormPassphraseLabel': "phrase secrète",
'loginFormDontHaveAnAccountLabel': "vous navez pas de compte ?", 'loginFormDontHaveAnAccountLabel': "vous navez pas de compte?",
'loginFormCreateOneLabel': "créez votre compte", 'loginFormCreateOneLabel': "créez votre compte",
'loginFormForgotYourCredentialsLabel': "vous avez oublié votre certificat ?", 'loginFormForgotYourCredentialsLabel': "vous avez oublié votre certificat?",
'loginFormAarghThatsBadLabel': "cest fort dommage pour vous !", 'loginFormAarghThatsBadLabel': "cest fort dommage pour vous!",
'loginFormAfraidOfMaliciousScriptsLabel': "vous avez peur des script malicieux ?", 'loginFormAfraidOfMaliciousScriptsLabel': "vous avez peur des script malicieux?",
'loginFormVerifyTheCodeLabel': "vérifiez le code", 'loginFormVerifyTheCodeLabel': "vérifiez le code",
'loginFormButtonLabel': "Sidentifer", 'loginFormButtonLabel': "Sidentifer",
'loginPanelSwithLanguageDescription': "<p>Sélectionnez votre langue préférée</p> ", 'loginPanelSwithLanguageDescription': "<p>Sélectionnez votre langue préféré</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> ", 'browserCompatibilityDescription': "<p>Have a better and safer Clipperz experience with Firefox. However Clipperz works just fine also with Opera and MS Internet Explorer!</p> ",
'loginMessagePanelInitialTitle': "En cours didentification ...", 'loginMessagePanelInitialTitle': "En cours didentification ...",
'loginMessagePanelInitialButtonLabel': "Annuler", 'loginMessagePanelInitialButtonLabel': "Annuler",
'loginMessagePanelConnectedTitle': "Connecté", 'loginMessagePanelConnectedTitle': "Connecté",
@ -57,19 +57,19 @@ Clipperz.PM.Strings.Languages['fr-FR'.toLowerCase()] = MochiKit.Base.merge(Clipp
'userLoginPanelLoadingUserDataMessageTitle': "Utilisateur identifié", 'userLoginPanelLoadingUserDataMessageTitle': "Utilisateur identifié",
'userLoginPanelLoadingUserDataMessageText': "Téléchargement des cartes den-têtes chiffrés depuis Clipperz", 'userLoginPanelLoadingUserDataMessageText': "Téléchargement des cartes den-têtes chiffrés depuis Clipperz",
'userLoginPanelDecryptingUserDataMessageTitle': "Utilisateur identifié", 'userLoginPanelDecryptingUserDataMessageTitle': "Utilisateur identifié",
'userLoginPanelDecryptingUserDataMessageText': "Déchiffrement local des en-têtes chiffrés", 'userLoginPanelDecryptingUserDataMessageText': "Décryptage local des en-têtes chiffrés",
'userLoginPanelDecryptingUserStatisticsMessageTitle': "Utilisateur identifié", 'userLoginPanelDecryptingUserStatisticsMessageTitle': "Utilisateur identifié",
'userLoginPanelDecryptingUserStatisticsMessageText': "Déchiffrement local des statistiques", 'userLoginPanelDecryptingUserStatisticsMessageText': "Décryptage local des statistiques",
'splashAlertTitle': "Bienvenue sur Clipperz!", '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 dutiliser 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> ", '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 dutiliser 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> ",
'splashAlertCloseButtonLabel': "Ok", 'splashAlertCloseButtonLabel': "Ok",
'registrationFormTitle': "créer votre compte", 'registrationFormTitle': "créer votre compte",
'registrationFormUsernameLabel': "nom dutilisateur", 'registrationFormUsernameLabel': "nom dutilisateur",
'registrationFormPassphraseLabel': "phrase secrète", 'registrationFormPassphraseLabel': "phrase secrète",
'registrationFormRetypePassphraseLabel': "re-saisissez votre phrase secrète", 'registrationFormRetypePassphraseLabel': "re-saisissez votre phrase secrète",
'registrationFormSafetyCheckLabel': "Jaccepte que Clipperz ne pourra pas récupérer ma phrase secrète.", 'registrationFormSafetyCheckLabel': "Jaccepte que Clipperz ne pourra pas récupérer ma phrase secrète.",
'registrationFormTermsOfServiceCheckLabel': "Jai lu et jaccepte les <a href='https://www.clipperz.is/terms_service' target='_blank'>Conditions dUtilisation du Service</a>.", 'registrationFormTermsOfServiceCheckLabel': "Jai lu et jaccepte les <a href='https://www.clipperz.com/terms_service' target='_blank'>Conditions dUtilisation du Service</a>.",
'registrationFormDoYouAlreadyHaveAnAccountLabel': "avez-vous déjà un compte ?", 'registrationFormDoYouAlreadyHaveAnAccountLabel': "avez-vous déjà un compte?",
'registrationFormSimplyLoginLabel': "identifiez-vous", 'registrationFormSimplyLoginLabel': "identifiez-vous",
'registrationFormButtonLabel': "Sinscrire", 'registrationFormButtonLabel': "Sinscrire",
'registrationFormWarningMessageNotMatchingPassphrases': "Vos phrases secrètes ne correspondent pas, veuillez les saisir à nouveau.", '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é", 'changePasswordFormProgressDialogConnectedMessageTitle': "Connecté",
'changePasswordFormProgressDialogConnectedMessageText': "Terminé", 'changePasswordFormProgressDialogConnectedMessageText': "Terminé",
'changePasswordFormProgressDialogErrorMessageTitle': "Erreur", 'changePasswordFormProgressDialogErrorMessageTitle': "Erreur",
'changePasswordFormProgressDialogErrorMessageText': "Changement de identifiants échoué !", 'changePasswordFormProgressDialogErrorMessageText': "Changement de identifiants échoué!",
'changeCredentialsPanelEncryptingDataMessageTitle': "Changement de votre phrase secrète", 'changeCredentialsPanelEncryptingDataMessageTitle': "Changement de votre phrase secrète",
'changeCredentialsPanelEncryptingDataMessageText': "Cryptage local des identifiants", 'changeCredentialsPanelEncryptingDataMessageText': "Cryptage local des identifiants",
'changeCredentialsPanelCreatingNewCredentialsMessageTitle': "Modifier votre phrase secrète", 'changeCredentialsPanelCreatingNewCredentialsMessageTitle': "Modifier votre phrase secrète",
'changeCredentialsPanelCreatingNewCredentialsMessageText': "Mettre à jour vos identifiants", 'changeCredentialsPanelCreatingNewCredentialsMessageText': "Mettre à jour vos identifiants",
'changeCredentialsPanelSendingNewCredentialsToTheServerMessageTitle': "Modifier votre phrase secrète", 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageTitle': "Modifier votre phrase secrète",
'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText': "Téléchargement de vos identifiants sur Clipperz.is", 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText': "Téléchargement de vos identifiants sur Clipperz.com",
'changeCredentialsPanelDoneMessageTitle': "Modifier votre phrase secrète", 'changeCredentialsPanelDoneMessageTitle': "Modifier votre phrase secrète",
'changeCredentialsPanelDoneMessageText': "Terminé", 'changeCredentialsPanelDoneMessageText': "Terminé",
'manageOTPTabLabel': "Mettre à jour votre phrase secrète à usage unique", 'manageOTPTabLabel': "Mettre à jour votre phrase secrète à usage unique",
'manageOTPTabTitle': "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é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> ", '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> ",
'accountPreferencesLabel': "Préférences", 'accountPreferencesLabel': "Préférences",
'accountPreferencesTabTitle': "Préférences", 'accountPreferencesTabTitle': "Préférences",
'accountPreferencesLanguageTitle': "Choix de la langue", 'accountPreferencesLanguageTitle': "Choix de la langue",
@ -147,18 +147,18 @@ Clipperz.PM.Strings.Languages['fr-FR'.toLowerCase()] = MochiKit.Base.merge(Clipp
'deleteAccountTabTitle': "Supprimer votre compte", 'deleteAccountTabTitle': "Supprimer votre compte",
'deleteAccountFormUsernameLabel': "nom dutilisateur", 'deleteAccountFormUsernameLabel': "nom dutilisateur",
'deleteAccountFormPassphraseLabel': "phrase secrète", 'deleteAccountFormPassphraseLabel': "phrase secrète",
'deleteAccountFormSafetyCheckboxLabel': "Je sais que toute mes données seront supprimées et que cette action sera irréversible.", 'deleteAccountFormSafetyCheckboxLabel': "Je sais que toute mes données seront supprimés et que cette action sera irréversible.",
'deleteAccountFormSubmitLabel': "Supprimer mon compte", 'deleteAccountFormSubmitLabel': "Supprimer mon compte",
'deleteAccountFormWrongUsernameWarning': "Nom dutilisateur incorrect", 'deleteAccountFormWrongUsernameWarning': "Nom dutilisateur incorrect",
'deleteAccountFormWrongPassphraseWarning': "Phrase secrète incorrecte", 'deleteAccountFormWrongPassphraseWarning': "Phrase secrète incorrect",
'deleteAccountFormSafetyCheckWarning': "Veuillez lire et cocher la case-à-cocher ci-dessous.", 'deleteAccountFormSafetyCheckWarning': "Veuillez lire et cocher la case-à-cocher ci-dessous.",
'accountPanelDeletingAccountPanelConfirmationTitle': "ATTENTION", 'accountPanelDeletingAccountPanelConfirmationTitle': "ATTENTION",
'accountPanelDeleteAccountPanelConfirmationText': "Êtes-vous sûr de vouloir supprimer ce compte ?", 'accountPanelDeleteAccountPanelConfirmationText': "Êtes-vous sûr de vouloir supprimer ce compte?",
'accountPanelDeleteAccountPanelConfirmButtonLabel': "Oui", 'accountPanelDeleteAccountPanelConfirmButtonLabel': "Oui",
'accountPanelDeleteAccountPanelDenyButtonLabel': "Non", 'accountPanelDeleteAccountPanelDenyButtonLabel': "Non",
'offlineCopyTabLabel': "Copie locale", 'offlineCopyTabLabel': "Copie locale",
'offlineCopyTabTitle': "Copie locale", 'offlineCopyTabTitle': "Copie locale",
'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 dutilisateur et phrase secrète habituels.</p> </li> </ol> ", '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 dutilisateur et phrase secrète habituels.</p> </li> </ol> ",
'offlineCopyDownloadLinkLabel': "Télécharger", 'offlineCopyDownloadLinkLabel': "Télécharger",
'sharingTabLabel': "Partager", 'sharingTabLabel': "Partager",
'sharingTabTitle': "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> ", 'importTabDescription': "<p> <b>Prochainement disponible ...</b> </p> ",
'printingTabLabel': "Exporter", 'printingTabLabel': "Exporter",
'printingTabTitle': "Exporter", 'printingTabTitle': "Exporter",
'printingTabDescription': "<p> <b>Version dimpression</b> </p> <p>En cliquant sur ce bouton vous ouvrirez une fenêtre contenant vos en-têtes chiffrés dans un format dimpression.</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> ", 'printingTabDescription': "<p> <b>Version dimpression</b> </p> <p>En cliquant sur ce bouton vous ouvrirez une fenêtre contenant vos en-têtes cryptés dans un format dimpression.</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> ",
'printingLinkLabel': "Version imprimable", 'printingLinkLabel': "Version imprimable",
'contactsTabLabel': "Contacts", 'contactsTabLabel': "Contacts",
'contactsTabTitle': "Contacts", 'contactsTabTitle': "Contacts",
@ -178,20 +178,20 @@ Clipperz.PM.Strings.Languages['fr-FR'.toLowerCase()] = MochiKit.Base.merge(Clipp
'bookmarkletTabTitle': "Bookmarklet", 'bookmarkletTabTitle': "Bookmarklet",
'paswordGeneratorTabDescription': "<p> </p> ", 'paswordGeneratorTabDescription': "<p> </p> ",
'passwordGeneratorTabButtonLabel': " Générer un mot de passe", 'passwordGeneratorTabButtonLabel': " Générer un mot de passe",
'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 sil vous plaît que le bookmarklet ninclut pas dinformations liées à votre compte (par exemple votre nom dutilisateur 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> ", '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 sil vous plaît que le bookmarklet ninclut pas dinformations liées à votre compte (par exemple votre nom dutilisateur 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> ",
'bookmarkletTabBookmarkletTitle': "Ajouter à Clipperz", '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 didentification. (Cest la page où vous entrez dhabitude 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 chiffe 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 didentification. (Cest la page où vous entrez dhabitude 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> ",
'mainPanelDirectLoginBlockLabel': "Accès directs", 'mainPanelDirectLoginBlockLabel': "Accès directs",
'directLinkReferenceShowButtonLabel': "voir", '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” 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> ", '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> ",
'mainPanelRecordsBlockLabel': "Cartes", 'mainPanelRecordsBlockLabel': "Cartes",
'mainPanelAddRecordButtonLabel': "Ajouter une nouvelle carte", 'mainPanelAddRecordButtonLabel': "Ajouter une nouvelle carte",
'mainPanelRemoveRecordButtonLabel': "Supprimer une carte", 'mainPanelRemoveRecordButtonLabel': "Supprimer une carte",
'mainPanelRecordFilterBlockAllLabel': "tous", 'mainPanelRecordFilterBlockAllLabel': "tous",
'mainPanelRecordFilterBlockTagsLabel': "tags", 'mainPanelRecordFilterBlockTagsLabel': "tags",
'mainPanelRecordFilterBlockSearchLabel': "chercher", 'mainPanelRecordFilterBlockSearchLabel': "chercher",
'recordDetailNoRecordAtAllTitle': "Bienvenue sur Clipperz !", '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> ", '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> ",
'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> ", '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", '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> ", '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> ", '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': { 'fields': {
'TXT': "Nom", 'TXT': "Nom",
'TXT': "Adresse email", 'TXT': "Adresse eMail",
'TXT': "Téléphone", 'TXT': "Téléphone",
'TXT': "Mobile", 'TXT': "Mobile",
'ADDR': "Adresse" 'ADDR': "Adresse"
@ -256,23 +256,23 @@ Clipperz.PM.Strings.Languages['fr-FR'.toLowerCase()] = MochiKit.Base.merge(Clipp
}, },
'recordFieldTypologies': { 'recordFieldTypologies': {
'TXT': { 'TXT': {
'description': "un simple champ de texte", 'description': "simple text field",
'shortDescription': "texte" 'shortDescription': "texte"
}, },
'PWD': { 'PWD': {
'description': "un simple champ de texte dont le contenu sera caché par défaut", 'description': "simple text field, with default status set to hidden",
'shortDescription': "mot de passe" 'shortDescription': "mot de passe"
}, },
'URL': { 'URL': {
'description': "un champ de teste en mode édition, qui devient une adresse web active en mode vue", 'description': "simple text field in edit mode, that became an active url in view mode",
'shortDescription': "adresse de site web" 'shortDescription': "adresse de site web"
}, },
'DATE': { 'DATE': {
'description': "un champ avec un calendrier pour aider à la saisie de dates", 'description': "a value set with a calendar helper",
'shortDescription': "date" 'shortDescription': "date"
}, },
'ADDR': { 'ADDR': {
'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", 'description': "just like the URL, but the active link points to Google Maps (or similar service) passing the address value as argument",
'shortDescription': "adresse" 'shortDescription': "adresse"
}, },
'CHECK': { 'CHECK': {
@ -303,7 +303,7 @@ Clipperz.PM.Strings.Languages['fr-FR'.toLowerCase()] = MochiKit.Base.merge(Clipp
'deleteRecordPanelCollectRecordDataMessageText': "Mise à jour de la liste des cartes", 'deleteRecordPanelCollectRecordDataMessageText': "Mise à jour de la liste des cartes",
'deleteRecordPanelEncryptUserDataMessageTitle': "Supprimer la carte", 'deleteRecordPanelEncryptUserDataMessageTitle': "Supprimer la carte",
'deleteRecordPanelEncryptUserDataMessageText': "Chiffrement local des en-têtes de carte", 'deleteRecordPanelEncryptUserDataMessageText': "Chiffrement local des en-têtes de carte",
'deleteRecordPanelSendingDataToTheServerMessageTitle': "Supprimer la carte", 'deleteRecordPanelSendingDataToTheServerMessageTitle': "Supprimer la carteDelete card",
'deleteRecordPanelSendingDataToTheServerMessageText': "Transmission des en-têtes chiffrées à Clipperz", 'deleteRecordPanelSendingDataToTheServerMessageText': "Transmission des en-têtes chiffrées à Clipperz",
'deleteRecordPanelUpdatingTheInterfaceMessageTitle': "Supprimer la carte", 'deleteRecordPanelUpdatingTheInterfaceMessageTitle': "Supprimer la carte",
'deleteRecordPanelUpdatingTheInterfaceMessageText': "Mise à jour de l'interface", 'deleteRecordPanelUpdatingTheInterfaceMessageText': "Mise à jour de l'interface",
@ -325,20 +325,20 @@ Clipperz.PM.Strings.Languages['fr-FR'.toLowerCase()] = MochiKit.Base.merge(Clipp
'recordDetailPasswordFieldUnscrambleLabel': "en clair", 'recordDetailPasswordFieldUnscrambleLabel': "en clair",
'recordDetailDirectLoginBlockTitle': "Accès directs", 'recordDetailDirectLoginBlockTitle': "Accès directs",
'recordDetailNewDirectLoginDescription': "<p>Configuration de l'accès direct</p> ", '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 clic !</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> ",
'recordDetailAddNewDirectLoginButtonLabel': "Ajouter un accès direct", 'recordDetailAddNewDirectLoginButtonLabel': "Ajouter un accès direct",
'recordDetailEditButtonLabel': "Modifier", 'recordDetailEditButtonLabel': "Modifier",
'recordDetailSaveButtonLabel': "Sauver", 'recordDetailSaveButtonLabel': "Sauver",
'recordDetailCancelButtonLabel': "Annuler", 'recordDetailCancelButtonLabel': "Annuler",
'newRecordTitleLabel': "_nouvelle carte_", 'newRecordTitleLabel': "_nouvelle carte_",
'recordSaveChangesPanelCollectRecordInfoMessageTitle': "Enregistrement de la carte", 'recordSaveChangesPanelCollectRecordInfoMessageTitle': "Enregistrement de la carte",
'recordSaveChangesPanelCollectRecordInfoMessageText': "Mise à jour des entêtes de la carte", 'recordSaveChangesPanelCollectRecordInfoMessageText': "Updating card headers",
'recordSaveChangesPanelEncryptUserDataMessageTitle': "Sauvegarde de la carte", 'recordSaveChangesPanelEncryptUserDataMessageTitle': "Sauvegarde de la carte",
'recordSaveChangesPanelEncryptUserDataMessageText': "Chiffrement local des en-têtes", 'recordSaveChangesPanelEncryptUserDataMessageText': "Cryptage local des en-têtes chiffrés",
'recordSaveChangesPanelEncryptRecordDataMessageTitle': "Sauvegarde de la carte", 'recordSaveChangesPanelEncryptRecordDataMessageTitle': "Sauvegarde de la carte",
'recordSaveChangesPanelEncryptRecordDataMessageText': "Chiffrement local des en-têtes", 'recordSaveChangesPanelEncryptRecordDataMessageText': "Cryptage local des en-têtes chiffrés",
'recordSaveChangesPanelEncryptRecordVersionDataMessageTitle': "Sauvegarde de la carte", 'recordSaveChangesPanelEncryptRecordVersionDataMessageTitle': "Sauvegarde de la carte",
'recordSaveChangesPanelEncryptRecordVersionDataMessageText': "Chiffrement local des données de version de la carte", 'recordSaveChangesPanelEncryptRecordVersionDataMessageText': "Cryptage local des données de version de la carte",
'recordSaveChangesPanelSendingDataToTheServerMessageTitle': "Sauvegarde de la carte", 'recordSaveChangesPanelSendingDataToTheServerMessageTitle': "Sauvegarde de la carte",
'recordSaveChangesPanelSendingDataToTheServerMessageText': "Téléchargement des cartes den-têtes chiffrés depuis Clipperz", 'recordSaveChangesPanelSendingDataToTheServerMessageText': "Téléchargement des cartes den-têtes chiffrés depuis Clipperz",
'recordSaveChangesPanelUpdatingTheInterfaceMessageTitle': "Sauvegarde de la carte", '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

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please 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.collectAll,
Clipperz.Async.or Clipperz.Async.or
] ]
}, {trace:false}); }, {trace:true});
deferredResult.addCallback(MochiKit.Base.values); deferredResult.addCallback(MochiKit.Base.values);
deferredResult.addCallback(MochiKit.Base.bind(function(someValues) { deferredResult.addCallback(MochiKit.Base.bind(function(someValues) {
return MochiKit.Iter.some(someValues, MochiKit.Base.operator.identity); return MochiKit.Iter.some(someValues, MochiKit.Base.operator.identity);

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please
@ -836,15 +836,13 @@ Clipperz.log("Warning: User.recordWithLabel('" + aLabel + "') is returning more
var user = this; var user = this;
return Clipperz.Async.callbacks("User.cloneRecord", [ return Clipperz.Async.callbacks("User.cloneRecord", [
// MochiKit.Base.method(this, 'hasPendingChanges'), MochiKit.Base.method(this, 'hasPendingChanges'),
// Clipperz.Async.deferredIf("User has pending changes", [ Clipperz.Async.deferredIf("User has pending changes", [
/// MochiKit.Async.fail MochiKit.Async.fail
// ], [ ], [
// MochiKit.Base.method(user, 'createNewRecord'), MochiKit.Base.method(user, 'createNewRecord'),
// MochiKit.Base.methodcaller('setUpWithRecord', aRecord), MochiKit.Base.methodcaller('setUpWithRecord', aRecord),
// ]) ])
MochiKit.Base.method(user, 'createNewRecord'),
MochiKit.Base.methodcaller('setUpWithRecord', aRecord),
], {trace:false}); ], {trace:false});
}, },

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please
@ -434,8 +434,7 @@ Clipperz.Base.extend(Clipperz.PM.Proxy.Offline.DataStore, Object, {
randomBytes = Clipperz.Crypto.Base.generateRandomSeed(); randomBytes = Clipperz.Crypto.Base.generateRandomSeed();
aConnection['b'] = new Clipperz.Crypto.BigInt(randomBytes, 16); aConnection['b'] = new Clipperz.Crypto.BigInt(randomBytes, 16);
v = new Clipperz.Crypto.BigInt(aConnection['userData']['v'], 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; aConnection['A'] = someParameters.parameters.A;
@ -444,7 +443,7 @@ Clipperz.Base.extend(Clipperz.PM.Proxy.Offline.DataStore, Object, {
nextTollRequestType = 'CONNECT'; nextTollRequestType = 'CONNECT';
} else if (someParameters.message == "credentialCheck") { } else if (someParameters.message == "credentialCheck") {
var v, u, s, S, A, K, M1, KK; var v, u, s, S, A, K, M1;
var stringHash = function (aValue) { var stringHash = function (aValue) {
return Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(aValue)).toHexString().substring(2); return Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(aValue)).toHexString().substring(2);
}; };
@ -453,11 +452,9 @@ Clipperz.Base.extend(Clipperz.PM.Proxy.Offline.DataStore, Object, {
A = new Clipperz.Crypto.BigInt(aConnection['A'], 16); 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); 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 = 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)); K = stringHash(S.asString(10));
KK = new Clipperz.Crypto.BigInt(K,16);
M1 = stringHash( M1 = stringHash(
"597626870978286801440197562148588907434001483655788865609375806439877501869636875571920406529" + "597626870978286801440197562148588907434001483655788865609375806439877501869636875571920406529" +
@ -465,7 +462,7 @@ Clipperz.Base.extend(Clipperz.PM.Proxy.Offline.DataStore, Object, {
s.asString(10) + s.asString(10) +
A.asString(10) + A.asString(10) +
aConnection['B'].asString(10) + aConnection['B'].asString(10) +
KK.asString(10) K
); );
if (someParameters.parameters.M1 == M1) { if (someParameters.parameters.M1 == M1) {
var M2; var M2;

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please
@ -104,29 +104,23 @@ Clipperz.PM.Toll.prototype = MochiKit.Base.update(null, {
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
'innerDeferredPay': function (aTargetValue, aCost, aPayment) { 'innerDeferredPay': function (aTargetValue, aCost, aPayment) {
var deferredResult; var deferredResult;
var result; var result;
var payment; var payment;
var startTime; var i;
var currentTime;
var elapsedTime;
currentTime = (new Date()).getMilliseconds();
startTime = currentTime;
result = null; result = null;
payment = aPayment; payment = aPayment;
elapsedTime = currentTime - startTime; i = 0;
while ((result == null) && (elapsedTime < Clipperz.PM.Toll.maxTimeForCloseLoopIterations)) { while ((result == null) && (i < Clipperz.PM.Toll.numberOfCloseLoopIterations)) {
if (Clipperz.ByteArray.prefixMatchingBits(aTargetValue, Clipperz.Crypto.SHA.sha256(payment)) > aCost) { if (Clipperz.ByteArray.prefixMatchingBits(aTargetValue, Clipperz.Crypto.SHA.sha256(payment)) > aCost) {
result = payment; result = payment;
} else { } else {
payment.increment(); payment.increment();
} }
currentTime = (new Date()).getMilliseconds(); i ++;
elapsedTime = currentTime - startTime;
} }
if (result == null) { if (result == null) {
@ -143,7 +137,8 @@ Clipperz.PM.Toll.prototype = MochiKit.Base.update(null, {
var toll; var toll;
toll = this; toll = this;
deferredResult = new Clipperz.Async.Deferred("Toll.deferredPay", {trace:false}); deferredResult = new Clipperz.Async.Deferred("Toll.deferredPay");
//deferredResult.addLog("--->>> deferredPay - " + this.cost());
deferredResult.addMethod(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'getRandomBytes', 32); deferredResult.addMethod(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'getRandomBytes', 32);
deferredResult.addMethod(toll, 'innerDeferredPay', new Clipperz.ByteArray("0x" + this.targetValue()), this.cost()); deferredResult.addMethod(toll, 'innerDeferredPay', new Clipperz.ByteArray("0x" + this.targetValue()), this.cost());
deferredResult.addCallback(MochiKit.Base.bind(function(aPayment) { deferredResult.addCallback(MochiKit.Base.bind(function(aPayment) {
@ -156,6 +151,7 @@ Clipperz.PM.Toll.prototype = MochiKit.Base.update(null, {
return result; return result;
}, this)); }, this));
//deferredResult.addLog("<<<--- deferredPay - " + this.cost());
deferredResult.callback(); deferredResult.callback();
return deferredResult; return deferredResult;
@ -189,5 +185,5 @@ Clipperz.PM.Toll.validate = function(aTargetValue, aToll, aCost) {
return result; return result;
}; };
Clipperz.PM.Toll.maxTimeForCloseLoopIterations = 500; // milliseconds Clipperz.PM.Toll.numberOfCloseLoopIterations = 50;
Clipperz.PM.Toll.pauseBetweenEachCloseLoop = 0.1; // seconds Clipperz.PM.Toll.pauseBetweenEachCloseLoop = 0.5;

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please 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.LATEST_ENCRYPTION_VERSION = '1.0'; // Versions aren't handled completely yet!
this.fileQueue = []; this.fileQueue = [];
// this.notifications = []; this.notifications = [];
this.operationsCount = null; this.operationsCount = null;
this.encryptedDocument = null; this.encryptedDocument = null;
@ -56,20 +56,19 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
}, },
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
/*
notifyUpdate: function() { 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() { getQueueInfo: function() {
return this.fileQueue; return this.fileQueue;
}, },
/*
getNotificationsInfo: function() { getNotificationsInfo: function() {
return this.notifications; return this.notifications;
}, },
*/
//========================================================================= //=========================================================================
// Entry points // Entry points
//========================================================================= //=========================================================================
@ -165,7 +164,7 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
var count = this.updateOperationsCount(); var count = this.updateOperationsCount();
// this.notifyUpdate(); this.notifyUpdate();
processNextElements = true; processNextElements = true;
for (i in this.fileQueue) { for (i in this.fileQueue) {
@ -210,7 +209,7 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
case 'WAITING_SAVE': case 'WAITING_SAVE':
this.saveFile(currentElement['reference'], currentElement['decryptedArray'], currentElement['meta']['name'], currentElement['meta']['type']); this.saveFile(currentElement['reference'], currentElement['decryptedArray'], currentElement['meta']['name'], currentElement['meta']['type']);
processNextElements = false; processNextElements = false;
// Clipperz.Sound.beep(); Clipperz.Sound.beep();
break; break;
} }
} }
@ -248,6 +247,7 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
addFileToQueue: function(someParameters) { addFileToQueue: function(someParameters) {
this.fileQueue.push(someParameters); this.fileQueue.push(someParameters);
this.addNotification(someParameters);
this.dispatchQueueOperations(); this.dispatchQueueOperations();
}, },
@ -268,10 +268,6 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
MochiKit.Base.update(this.fileQueue[queuePosition], someParameters); MochiKit.Base.update(this.fileQueue[queuePosition], someParameters);
if ((someParameters['status'] == 'DONE') || (someParameters['status'] == 'FAILED')) {
this.addNotification(this.fileQueue[queuePosition], someParameters['status']);
}
this.dispatchQueueOperations(); this.dispatchQueueOperations();
}, },
@ -297,38 +293,13 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
// Notifications // Notifications
//========================================================================= //=========================================================================
addNotification: function(aQueueElement, aStatus) { addNotification: function(aQueueElement) {
//console.log("ADD ATTACHMENT NOTIFICATION", aQueueElement); this.notifications.push({
var messagePrefix = ""; 'id': this.randomId(),
var message; 'queueElement': aQueueElement
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) { removeNotification: function(aNotificationId) {
var i, position; var i, position;
@ -343,15 +314,14 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
this.notifications.splice(position, 1); this.notifications.splice(position, 1);
} }
// this.notifyUpdate(); this.notifyUpdate();
}, },
*/
/*
randomId: function() { randomId: function() {
return Clipperz.Crypto.randomKey(); return Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32).toHexString().substring(2);
// return Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32).toHexString().substring(2);
}, },
*/
//========================================================================= //=========================================================================
// Queue Processing: READ // Queue Processing: READ
//========================================================================= //=========================================================================
@ -462,7 +432,6 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
'status': 'DONE', 'status': 'DONE',
'requestProgress': 1, 'requestProgress': 1,
}), }),
// add notification
], {trace:false}); ], {trace:false});
}, },

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please
@ -29,14 +29,12 @@ Clipperz.PM.UI.Components.ButtonClass = React.createClass({
displayName: 'Clipperz.PM.UI.Components.Button', displayName: 'Clipperz.PM.UI.Components.Button',
propTypes: { propTypes: {
'eventName': React.PropTypes.string.isRequired, 'eventName': React.PropTypes.string.isRequired,
'label': React.PropTypes.string.isRequired, 'label': React.PropTypes.string.isRequired,
'handler': React.PropTypes.func.isRequired, 'handler': React.PropTypes.func.isRequired,
'className': React.PropTypes.string, 'className': React.PropTypes.string,
'badgeTopContent': React.PropTypes.number, 'badgeTopContent': React.PropTypes.number,
'badgeTopLevel': React.PropTypes.string, 'badgeBottomContent': React.PropTypes.number,
'badgeBottomContent': React.PropTypes.number,
'badgeBottomLevel': React.PropTypes.string,
}, },
//========================================================================= //=========================================================================
@ -54,18 +52,18 @@ Clipperz.PM.UI.Components.ButtonClass = React.createClass({
badgeTop = null; badgeTop = null;
if (this.props['badgeTopContent']) { if (this.props['badgeTopContent']) {
badgeTop = React.DOM.span({'className': Clipperz.PM.UI.Components.classNames('badge', 'top', this.props['badgeTopLevel'])}, this.props['badgeTopContent']); badgeTop = React.DOM.span({'className': 'badge top'}, this.props['badgeTopContent']);
}; };
badgeBottom = null; badgeBottom = null;
if (this.props['badgeBottomContent']) { if (this.props['badgeBottomContent']) {
badgeBottom = React.DOM.span({'className': Clipperz.PM.UI.Components.classNames('badge', 'bottom', this.props['badgeBottomLevel'])}, this.props['badgeBottomContent']); badgeBottom = React.DOM.span({'className': 'badge bottom'}, this.props['badgeBottomContent']);
}; };
return React.DOM.div({'className':Clipperz.PM.UI.Components.classNames(classes), onClick:this.props['handler']}, [ return React.DOM.div({className:Clipperz.PM.UI.Components.classNames(classes), onClick:this.props['handler']}, [
React.DOM.div({'className':this.props['eventName']}, [ React.DOM.div({className:this.props['eventName']}, [
React.DOM.h3({'className':'label'}, this.props['label']), React.DOM.h3({className:'label'}, this.props['label']),
badgeTop, badgeTop,
badgeBottom, badgeBottom,
]) ])

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please
@ -63,66 +63,33 @@ Clipperz.PM.UI.Components.CardToolbarClass = React.createClass({
//============================================================================ //============================================================================
notificationCounter: function () { renderWithSidePanels: 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) { var attachmentDownloadNotificationNumber = MochiKit.Base.filter(function(anElement) {
return anElement['queueElement']['process'] == 'DOWNLOAD'; return anElement['queueElement']['process'] == 'DOWNLOAD';
}, this.props['attachmentQueueInfo']['notifications']).length; }, this.props['attachmentQueueInfo']['notifications']).length;
var attachmentUploadNotificationNumber = this.props['attachmentQueueInfo']['notifications'].length - attachmentDownloadNotificationNumber; var attachmentUploadNotificationNumber = this.props['attachmentQueueInfo']['notifications'].length - attachmentDownloadNotificationNumber;
// attachmentDownloadNotificationNumber = 2; // attachmentDownloadNotificationNumber = 2;
// attachmentUploadNotificationNumber = 3; // attachmentUploadNotificationNumber = 3;
/*
var verifyingCertificateNotificationNumber = this.props['certificateQueueInfo'] ? MochiKit.Base.filter(function (anCertificationInfo) { var verifyingCertificateNotificationNumber = this.props['certificateQueueInfo'] ? MochiKit.Base.filter(function (anCertificationInfo) {
return anCertificationInfo['status'] == 'requested'; return anCertificationInfo['status'] == 'requested';
}, this.props['certificateQueueInfo']).length : 0; }, this.props['certificateQueueInfo']).length : 0;
var verifiedCertificateNotificationNumber = this.props['certificateQueueInfo'] ? MochiKit.Base.filter(function (anCertificationInfo) { var verifiedCertificateNotificationNumber = this.props['certificateQueueInfo'] ? MochiKit.Base.filter(function (anCertificationInfo) {
return anCertificationInfo['status'] == 'published'; return anCertificationInfo['status'] == 'published';
}, this.props['certificateQueueInfo']).length : 0; }, 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 [ return [
React.DOM.div({className:'selectionToggle'}, [ 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(), this.renderWithoutSidePanels(),
// TODO: validate and adjust names // TODO: validate and adjust names
React.DOM.div({'className':'settingsToggle'}, [ 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:'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:'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()}) Clipperz.PM.UI.Components.Button({eventName:'settingsToggleButton', label:"menu", handler:this.settingsToggleHandler})
]) ])
]; ];
}, },
@ -135,36 +102,36 @@ Clipperz.PM.UI.Components.CardToolbarClass = React.createClass({
//console.log("CARD TOOLBAR", this.props['filter']['type']); //console.log("CARD TOOLBAR", this.props['filter']['type']);
if (this.props['filter']['type'] == 'RECENT') { 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') { } 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') { } else if (this.props['filter']['type'] == 'TAG') {
result = [React.DOM.div({'className':'clipperz'}, [ result = [React.DOM.div({className:'clipperz'}, [
React.DOM.span({'className':'logo tag'}, "tag"), React.DOM.span({className:'logo tag'}, "tag"),
React.DOM.span({'className':'value'}, this.props['filter']['value']) React.DOM.span({className:'value'}, this.props['filter']['value'])
])]; ])];
} else if (this.props['filter']['type'] == 'UNTAGGED') { } else if (this.props['filter']['type'] == 'UNTAGGED') {
result = [React.DOM.div({'className':'clipperz'}, [ result = [React.DOM.div({className:'clipperz'}, [
React.DOM.span({'className':'logo tag'}, "tag"), React.DOM.span({className:'logo tag'}, "tag"),
React.DOM.span({'className':'value'}, "untagged") React.DOM.span({className:'value'}, "untagged")
])]; ])];
} else if (this.props['filter']['type'] == 'SEARCH') { } else if (this.props['filter']['type'] == 'SEARCH') {
result = [React.DOM.div({'className':'clipperz'}, [ result = [React.DOM.div({className:'clipperz'}, [
React.DOM.span({'className':'logo search'}, "search"), React.DOM.span({className:'logo search'}, "search"),
React.DOM.span({'className':'value'}, this.props['filter']['value']) React.DOM.span({className:'value'}, this.props['filter']['value'])
])]; ])];
} else { } 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 { } 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; return result;
}, },
render: function () { 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()), 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.AccountStatus(MochiKit.Base.update(this.props['accountInfo'], this.props['proxyInfo'])),
Clipperz.PM.UI.Components.MessageBox(this.props['messageBox']), Clipperz.PM.UI.Components.MessageBox(this.props['messageBox']),

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please 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 630 ' + height, 'width':'100%', 'height':height, 'fill':'currentcolor'}, [ return React.DOM.svg({'viewBox':'0 0 600 ' + height, 'width':'100%', 'height':height, 'fill':'currentcolor'}, [
arrow(0, height/2), 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':'blue', 'opacity':0.3}),
React.DOM.rect({'x':arrowLength, 'y':0, 'width':rectWidth, 'height':height, 'fill':'none', 'stroke':'black', 'strokeWidth':1, 'opacity':1}), React.DOM.rect({'x':arrowLength, 'y':0, 'width':rectWidth, 'height':height, 'fill':'none', 'stroke':'black', 'strokeWidth':1, 'opacity':1}),

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please
@ -63,9 +63,9 @@ Clipperz.PM.UI.Components.Cards.CommandToolbarClass = React.createClass({
return { return {
'delete': { 'label': "delete", 'broadcastEvent': 'deleteCard', 'enabled': this.isFeatureEnabled('DELETE_CARD')}, 'delete': { 'label': "delete", 'broadcastEvent': 'deleteCard', 'enabled': this.isFeatureEnabled('DELETE_CARD')},
'archive': { 'label': archiveLabel, 'broadcastEvent': 'toggleArchiveCard', 'enabled': this.isFeatureEnabled('EDIT_CARD')}, 'archive': { 'label': archiveLabel, 'broadcastEvent': 'toggleArchiveCard', 'enabled': this.isFeatureEnabled('EDIT_CARD')},
// 'share': { 'label': "share", 'broadcastEvent': 'shareCard' }, // 'share': { 'label': "share", 'broadcastEvent': 'shareCard' },
'clone': { 'label': "clone", 'broadcastEvent': 'cloneCard', 'enabled': this.isFeatureEnabled('ADD_CARD')}, '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()} 'edit': { 'label': "edit", 'broadcastEvent': 'editCard', 'enabled': this.isFeatureEnabled('EDIT_CARD') && !this.isCardCertified()}
}; };
}, },

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please
@ -306,33 +306,6 @@ Clipperz.PM.UI.Components.Cards.ViewClass = React.createClass({
return result; 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) { renderField: function (aField) {
@ -358,10 +331,10 @@ Clipperz.PM.UI.Components.Cards.ViewClass = React.createClass({
React.DOM.div({'className':'fieldValues'}, [ React.DOM.div({'className':'fieldValues'}, [
React.DOM.div({'className':'fieldLabel'}, aField['label']), React.DOM.div({'className':'fieldLabel'}, aField['label']),
Clipperz.PM.UI.Components.Cards.TextArea({ Clipperz.PM.UI.Components.Cards.TextArea({
// React.DOM.textarea({
'readOnly': true, 'readOnly': true,
// 'onMouseUp': function(e) { e.target.focus(); e.target.select(); e.stopPropagation(); e.preventDefault();}, // '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), 'className':Clipperz.PM.UI.Components.classNames(cardFieldValueClasses),
'value': aField['value'], 'value': aField['value'],
'rows': 1 'rows': 1

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please For further information about its features and functionalities please

View File

@ -1,6 +1,6 @@
/* /*
Copyright 2008-2018 Clipperz Srl Copyright 2008-2015 Clipperz Srl
This file is part of Clipperz, the online password manager. This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please 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