26 files changed, 4754 insertions, 5872 deletions
diff --git a/backend/php/properties/php.properties.json b/backend/php/properties/php.properties.json index 32d5084..8ce703a 100644 --- a/backend/php/properties/php.properties.json +++ b/backend/php/properties/php.properties.json @@ -1,4 +1,9 @@ { - "request.path": "../index.php", + "request.path": "index.php", "should.pay.toll": "false" + + "development.settings": { + "url": "http://localhost/php/clipperz" + } + }
\ No newline at end of file diff --git a/backend/php/src/configuration.php b/backend/php/src/configuration.php index 291e3a1..85f680e 100644 --- a/backend/php/src/configuration.php +++ b/backend/php/src/configuration.php @@ -1,36 +1,36 @@ <?php global $configuration; $configuration['soap'] = "http://www.phpobjectgenerator.com/services/soap.php?wsdl"; $configuration['homepage'] = "http://www.phpobjectgenerator.com"; $configuration['revisionNumber'] = ""; $configuration['versionNumber'] = "3.0d"; $configuration['setup_password'] = ''; // to enable automatic data encoding, run setup, go to the manage plugins tab and install the base64 plugin. // then set db_encoding = 1 below. // when enabled, db_encoding transparently encodes and decodes data to and from the database without any // programmatic effort on your part. $configuration['db_encoding'] = 0; // edit the information below to match your database settings -$configuration['db'] = 'clipperz'; // database name +$configuration['db'] = 'clipperz'; // database name $configuration['host'] = 'localhost'; // database host -$configuration['user'] = 'root'; // database user -$configuration['pass'] = 'pass'; // database password +$configuration['user'] = 'clipperz'; // database user +$configuration['pass'] = 'clipperz'; // database password $configuration['port'] = '3306'; // database port //proxy settings - if you are behnd a proxy, change the settings below $configuration['proxy_host'] = false; $configuration['proxy_port'] = false; $configuration['proxy_username'] = false; $configuration['proxy_password'] = false; //plugin settings $configuration['plugins_path'] = dirname(__FILE__).'/plugins'; ?>
\ No newline at end of file diff --git a/backend/php/src/index.php b/backend/php/src/index.php index 214ac01..da7c60c 100644 --- a/backend/php/src/index.php +++ b/backend/php/src/index.php @@ -1,755 +1,918 @@ <?php include "./configuration.php"; include "./objects/class.database.php"; include "./objects/class.user.php"; include "./objects/class.record.php"; include "./objects/class.recordversion.php"; include "./objects/class.onetimepassword.php"; include "./objects/class.onetimepasswordstatus.php"; //----------------------------------------------------------------------------- if ( !function_exists('json_decode') ) { function json_decode($content, $assoc=false) { require_once 'json/JSON.php'; if ( $assoc ) { $json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE); } else { $json = new Services_JSON; } return $json->decode($content); } } if ( !function_exists('json_encode') ) { function json_encode($content) { require_once 'json/JSON.php'; $json = new Services_JSON; return $json->encode($content); } } //----------------------------------------------------------------------------- // 'dec2base', 'base2dec' and 'digits' are functions found on the following // PHP manual page: http://ch2.php.net/manual/en/ref.bc.php // function dec2base($dec, $base, $digits=FALSE) { if ($base<2 or $base>256) { die("Invalid Base: ".$base); } bcscale(0); $value=""; if (!$digits) { $digits = digits($base); } while ($dec > $base-1) { $rest = bcmod($dec, $base); $dec = bcdiv($dec, $base); $value = $digits[$rest].$value; } $value=$digits[intval($dec)].$value; return (string)$value; } //............................................................................. // convert another base value to its decimal value function base2dec($value, $base, $digits=FALSE) { if ($base<2 or $base>256) { die("Invalid Base: ".$base); } bcscale(0); if ($base<37) { $value=strtolower($value); } if (!$digits) { $digits=digits($base); } $size = strlen($value); $dec="0"; for ($loop=0; $loop<$size; $loop++) { $element = strpos($digits, $value[$loop]); $power = bcpow($base, $size-$loop-1); $dec = bcadd($dec, bcmul($element,$power)); } return (string)$dec; } //............................................................................. function digits($base) { if ($base>64) { $digits=""; for ($loop=0; $loop<256; $loop++) { $digits.=chr($loop); } } else { $digits ="0123456789abcdefghijklmnopqrstuvwxyz"; $digits.="ABCDEFGHIJKLMNOPQRSTUVWXYZ-_"; } $digits=substr($digits,0,$base); return (string)$digits; } //----------------------------------------------------------------------------- function clipperz_hash($value) { return hash("sha256", hash("sha256", $value, true)); } //----------------------------------------------------------------------------- function clipperz_randomSeed() { $result; srand((double) microtime()*1000000); $result = ""; while(strlen($result) < 64) { $result = $result.dec2base(rand(), 16); } $result = substr($result, 0, 64); return $result; } //----------------------------------------------------------------------------- function updateUserCredentials($parameters, &$user) { $user->username = $parameters["C"]; $user->srp_s = $parameters["s"]; $user->srp_v = $parameters["v"]; $user->auth_version = $parameters["version"]; } function updateUserData($parameters, &$user) { $user->header = $parameters["header"]; $user->statistics = $parameters["statistics"]; $user->version = $parameters["version"]; - $user->lock = $parameters["lock"]; + if (array_key_exists("lock", $parameters)) { + $user->lock = $parameters["lock"]; + } } function updateRecordData($parameters, &$record, &$recordVersion) { $recordData = $parameters["record"]; $record->reference = $recordData["reference"]; $record->data = $recordData["data"]; $record->version = $recordData["version"]; $recordVersionData = $parameters["currentRecordVersion"]; $recordVersion->reference = $recordVersionData ["reference"]; $recordVersion->data = $recordVersionData ["data"]; $recordVersion->version = $recordVersionData ["version"]; - $recordVersion->previous_version_id = $recordVersionData ["previousVersion"]; + if (array_key_exists("previousVersion", $recordVersionData)) { + $recordVersion->previous_version_id = $recordVersionData ["previousVersion"]; + } $recordVersion->previous_version_key = $recordVersionData ["previousVersionKey"]; } //----------------------------------------------------------------------------- function updateOTPStatus(&$otp, $status) { $otpStatus = new onetimepasswordstatus(); $selectedStatuses = $otpStatus->GetList(array(array("code", "=", $status))); $otpStatus = $selectedStatuses[0]; $otp->SetOnetimepasswordstatus($otpStatus); } function updateOTP($parameters, &$otp, $status) { $otp->reference = $parameters["reference"]; $otp->key = $parameters["key"]; $otp->key_checksum = $parameters["keyChecksum"]; $otp->data = $parameters["data"]; $otp->version = $parameters["version"]; updateOTPStatus($otp, $status); } function resetOTP(&$otp, $status) { $otp->data = ""; updateOTPStatus($otp, $status); $otp->Save(); } //----------------------------------------------------------------------------- function fixOTPStatusTable() { $otpStatus = new onetimepasswordstatus(); $otpStatusList = $otpStatus->GetList(); if (count($otpStatusList) != 4) { $otpStatus->DeleteList(); $otpStatus->code = "ACTIVE"; $otpStatus->name = "Active"; $otpStatus->description = "Active"; $otpStatus->SaveNew(); $otpStatus->code = "REQUESTED"; $otpStatus->name = "Requested"; $otpStatus->description = "Requested"; $otpStatus->SaveNew(); $otpStatus->code = "USED"; $otpStatus->name = "Used"; $otpStatus->description = "Used"; $otpStatus->SaveNew(); $otpStatus->code = "DISABLED"; $otpStatus->name = "Disabled"; $otpStatus->description = "Disabled"; $otpStatus->SaveNew(); } } //----------------------------------------------------------------------------- function arrayContainsValue($array, $value) { $object = NULL; for ($i=0; $i<count($array); $i++) { if ($array[$i] == $value) { $object = $value; } } return !is_null($object); } //----------------------------------------------------------------------------- $result = Array(); session_start(); $method = $_POST['method']; if (get_magic_quotes_gpc()) { $parameters = json_decode(stripslashes($_POST['parameters']), true); } else { $parameters = json_decode($_POST['parameters'], true); } $parameters = $parameters["parameters"]; switch($method) { case "registration": error_log("registration"); $message = $parameters["message"]; if ($message == "completeRegistration") { $user = new user(); updateUserCredentials($parameters["credentials"], $user); updateUserData($parameters["user"], $user); $user->Save(); $result["lock"] = $user->lock; $result["result"] = "done"; } break; case "handshake": error_log("handshake"); $srp_g = "2"; $srp_n = base2dec("115b8b692e0e045692cf280b436735c77a5a9e8a9e7ed56c965f87db5b2a2ece3", 16); $message = $parameters["message"]; //============================================================= if ($message == "connect") { $user= new user(); $_SESSION["C"] = $parameters["parameters"]["C"]; $_SESSION["A"] = $parameters["parameters"]["A"]; $userList = $user->GetList(array(array("username", "=", $_SESSION["C"]))); if (count($userList) == 1) { $currentUser = $userList[ 0 ]; if (array_key_exists("otpId", $_SESSION)) { $otp = new onetimepassword(); $otp = $otp->Get($_SESSION["otpId"]); if ($otp->GetUser()->userId != $currentUser->userId) { throw new Exception("User missmatch between the current session and 'One Time Password' user"); } else if ($otp->GetOnetimepasswordstatus()->code != "REQUESTED") { throw new Exception("Tring to use an 'One Time Password' in the wrong state"); } resetOTP($otp, "USED"); $result["oneTimePassword"] = $otp->reference; } $_SESSION["s"] = $currentUser->srp_s; $_SESSION["v"] = $currentUser->srp_v; $_SESSION["userId"] = $currentUser->userId; } else { $_SESSION["s"] = "112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00"; $_SESSION["v"] = "112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00"; } $_SESSION["b"] = clipperz_randomSeed(); // $_SESSION["b"] = "5761e6c84d22ea3c5649de01702d60f674ccfe79238540eb34c61cd020230c53"; $_SESSION["B"] = dec2base(bcadd(base2dec($_SESSION["v"], 16), bcpowmod($srp_g, base2dec($_SESSION["b"], 16), $srp_n)), 16); $result["s"] = $_SESSION["s"]; $result["B"] = $_SESSION["B"]; //============================================================= } else if ($message == "credentialCheck") { error_log("credentialCheck"); $u = clipperz_hash(base2dec($_SESSION["B"],16)); $A = base2dec($_SESSION["A"], 16); $S = bcpowmod(bcmul($A, bcpowmod(base2dec($_SESSION["v"], 16), base2dec($u, 16), $srp_n)), base2dec($_SESSION["b"], 16), $srp_n); $K = clipperz_hash($S); $M1 = clipperz_hash($A.base2dec($_SESSION["B"],16).$K); //$result["B"] = $_SESSION["B"]; //$result["u"] = $u; //$result["A"] = $A; //$result["S"] = $S; //$result["K"] = $K; //$result["M1"] = $M1; //$result["_M1"] = $parameters["parameters"]["M1"]; if ($M1 == $parameters["parameters"]["M1"]) { $_SESSION["K"] = $K; $M2 = clipperz_hash($A.$M1.$K); $result["M2"] = $M2; $result["connectionId"] = ""; $result["loginInfo"] = array(); $result["loginInfo"]["latest"] = array(); $result["loginInfo"]["current"] = array(); $result["offlineCopyNeeded"] = "false"; $result["lock"] = "----"; } else { $result["error"] = "?"; } //============================================================= } else if ($message == "oneTimePassword") { error_log("oneTimePassword"); //{ // "message":"oneTimePassword", // "version":"0.2", // "parameters":{ // "oneTimePasswordKey":"06dfa7f428081f8b2af98b0895e14e18af90b0ef2ff32828e55cc2ac6b24d29b", // "oneTimePasswordKeyChecksum":"60bcba3f72e56f6bb3f0ff88509b9a0e5ec730dfa71daa4c1e892dbd1b0c360d" // } //} $otp = new onetimepassword(); $otpList = $otp->GetList(array(array("key", "=", $parameters["parameters"]["oneTimePasswordKey"]))); if (count($otpList) == 1) { $currentOtp = $otpList[0]; if ($currentOtp->GetOnetimepasswordstatus()->code == "ACTIVE") { if ($currentOtp->key_checksum == $parameters["parameters"]["oneTimePasswordKeyChecksum"]) { $_SESSION["userId"] = $currentOtp->GetUser()->userId; $_SESSION["otpId"] = $currentOtp->onetimepasswordId; $result["data"] = $currentOtp->data; $result["version"] = $currentOtp->version; resetOTP($currentOtp, "REQUESTED"); } else { resetOTP($currentOtp, "DISABLED"); throw new Exception("The requested One Time Password has been disabled, due to a wrong keyChecksum"); } } else { throw new Exception("The requested One Time Password was not active"); } } else { throw new Exception("The requested One Time Password has not been found"); } //============================================================= } break; case "message": error_log("message"); +//error_log("message: ".json_encode($parameters)); if ($parameters["srpSharedSecret"] == $_SESSION["K"]) { $message = $parameters["message"]; //============================================================= if ($message == "getUserDetails") { //{"message":"getUserDetails", "srpSharedSecret":"f18e5cf7c3a83b67d4db9444af813ee48c13daf4f8f6635397d593e52ba89a08", "parameters":{}} $user = new user(); $user = $user->Get($_SESSION["userId"]); $result["header"] = $user->header; $records = $user->GetRecordList(); foreach ($records as $record) { $recordStats["updateDate"] = $record->update_date; $recordsStats[$record->reference] = $recordStats; } $result["recordsStats"] = $recordsStats; $result["statistics"] = $user->statistics; $result["version"] = $user->version; //============================================================= } else if ($message == "addNewRecords") { /* //{ // "message":"addNewRecords", // "srpSharedSecret":"b58fdf62acebbcb67f63d28c0437f166069f45690c648cd4376a792ae7a325f7", // "parameters":{ // "records":[ // { // "record":{ // "reference":"fda703707fee1fff42443124cd0e705f5bea0ac601758d81b2e832705339a610", // "data":"OBSGtcb6blXq/xaYG.....4EqlQqgAvITN", // "version":"0.3" // }, // "currentRecordVersion":{ // "reference":"83ad301525c18f2afd72b6ac82c0a713382e1ef70ac69935ca7e2869dd4ff980", // "recordReference":"fda703707fee1fff42443124cd0e705f5bea0ac601758d81b2e832705339a610", // "data":"NXJ5jiZhkd0CMiwwntAq....1TjjF+SGfE=", // "version":"0.3", // "previousVersion":"3e174a86afc322271d8af28bc062b0f1bfd7344fad01212cd08b2757c4b199c4", // "previousVersionKey":"kozaaGCzXWr71LbOKu6Z3nz520V..5U85tSBvb+u44twttv54Kw==" // } // } // ], // "user":{ // "header":"{\"reco...ersion\":\"0.1\"}", // "statistics":"rKI6nR6iqggygQJ3SQ58bFUX", // "version":"0.3", // "lock":"----" // } // } //} */ $user = new user(); $record = new record(); $recordVersion = new recordversion(); $user = $user->Get($_SESSION["userId"]); updateUserData($parameters["parameters"]["user"], $user); $recordParameterList = $parameters["parameters"]["records"]; $c = count($recordParameterList); for ($i=0; $i<$c; $i++) { updateRecordData($recordParameterList[$i], $record, $recordVersion); $record->SaveNew(); $recordVersion->SaveNew(); $record->AddRecordversion($recordVersion); $user->AddRecord($record); $record->Save(); $recordVersion->Save(); } $user->Save(); $result["lock"] = $user->lock; $result["result"] = "done"; //============================================================= + } else if ($message == "saveChanges") { + +//{ +// "message":"saveChanges", +// "srpSharedSecret":"edc78508907c942173818f7247fa64869ba80672a7aa8d27b8fa6bfe524fb9c8", +// "parameters":{ +// "records":{ +// "updated":[ +// { +// "currentRecordVersion":{ +// "previousVersionKey":"####", +// "reference":"08c8eb7ec528fbf987bbfb84fe2e960cf9ae937b19fbb5f05d8d90a7039fac6a", +// "data":"WYQ16AjodjsmyZDXa4MKxOju0F…beD/zXlbVb0Zj0ZI/N55bZ", +// "version":"0.3" +// }, +// "record":{ +// "reference":"83de5304f60a808e48a815c6203d7d3f24874d3f40faba420bbc60b376fcc356", +// "data":"B6uBuBE Aly0knvgrUppodDTGZQC…guizL9QvHCWyM bQQBGBVvHZ6LfA==", +// "version":"0.3" +// } +// } +// ], +// "deleted":[ +// +// ] +// }, +// "user":{ +// "header":"{\"rec…sion\":\"0.1\"}", +// "statistics":"e6iXVEM4i8ZatPZFCCads/9F", +// "version":"0.3" +// } +// } +//} + $user = new user(); + $user = $user->Get($_SESSION["userId"]); + updateUserData($parameters["parameters"]["user"], $user); + + $recordToUpdateParameterList = $parameters["parameters"]["records"]["updated"]; + $c = count($recordToUpdateParameterList); + for ($i=0; $i<$c; $i++) { + $recordList = $user->GetRecordList(array(array("reference", "=", $recordToUpdateParameterList [$i]["record"]["reference"]))); + if (count($recordList) == 0) { + $currentRecord = new record(); + $currentVersion = new recordversion(); + $isNewRecord = true; + } else { + $currentRecord = $recordList[0]; + $currentRecordVersions = $currentRecord->GetRecordversionList(); + $currentVersion = $currentRecordVersions[0]; + $isNewRecord = false; + } + + updateRecordData($recordToUpdateParameterList[$i], $currentRecord, $currentVersion); + + if ($isNewRecord == true) { + $currentRecord->SaveNew(); + $currentVersion->SaveNew(); + + $currentRecord->AddRecordversion($currentVersion); + $user->AddRecord($currentRecord); + } + + $currentRecord->Save(); + $currentVersion->Save(); + } + + $user->Save(); + + $recordToDeleteReferenceList = $parameters["parameters"]["records"]["deleted"]; + $recordList = array(); + $c = count($recordToDeleteReferenceList); + for ($i=0; $i<$c; $i++) { + array_push($recordList, array("reference", "=", $recordToDeleteReferenceList[$i])); + } + + $record = new record(); + $record->DeleteList($recordList, true); + + $result["lock"] = $user->lock; + $result["result"] = "done"; + + //============================================================= } else if ($message == "getRecordDetail") { //{ // "message":"getRecordDetail", // "srpSharedSecret":"4c00dcb66a9f2aea41a87e4707c526874e2eb29cc72d2c7086837e53d6bf2dfe", // "parameters":{ // "reference":"740009737139a189cfa2b1019a6271aaa39467b59e259706564b642ff3838d50" // } //} // // result = { // currentVersion:{ // reference:"88943d709c3ea2442d4f58eaaec6409276037e5a37e0a6d167b9dad9e947e854", // accessDate:"Wed, 13 February 2008 14:25:12 UTC", // creationDate:"Tue, 17 April 2007 17:17:52 UTC", // version:"0.2", // data:"xI3WXddQLFtL......EGyKnnAVik", // updateDate:"Tue, 17 April 2007 17:17:52 UTC", // header:"####" // } // reference:"13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551", // oldestUsedEncryptedVersion:"0.2", // accessDate:"Wed, 13 February 2008 14:25:12 UTC", // creationDate:"Wed, 14 March 2007 13:53:11 UTC", // version:"0.2", // updatedDate:"Tue, 17 April 2007 17:17:52 UTC", // data:"0/BjzyY6jeh71h...pAw2++NEyylGhMC5C5f5m8pBApYziN84s4O3JQ3khW/1UttQl4=" // } + + +// # Actual result (causing error in /gamma) +// { +// "result" : { +// "currentVersion" : { +// "reference" : "cb05177f96a832062c6b936d24323cb74a64e2ef1d97ee026cd1003755af7495", +// "data" : "RAnoHmikp7RmiZ2WVyEMW+Ia", +// "header" : "", +// "version" : "0.3", +// "creationDate" : "0000-00-00 00:00:00", +// "updateDate" : "2011-10-09 19:49:11", +// "accessDate" : "2011-10-09 19:49:11" +// }, +// "reference" : "b07e2afa2ba782b9f379649b36ded6de0452b43c27e6b887c7ce4f2a93f44346", +// "data" : "NtK1nkLUabbJQx5uO8ept...ZJ5dkJYYkyh3VQ==", +// "version" : "0.3", +// "creationDate" : "2011-10-09 19:49:11", +// "updateDate" : "Tue, 30 Nov 1999 00:00:00 +0000", +// "accessDate" : "0000-00-00 00:00:00", +// "oldestUsedEncryptedVersion" : "---" +// } +// } + + +// # Response from the online /gamma version +// { +// "result" : { +// "versions" : { +// "e2c193f017ad4f6babf51de59f7550a40596afc0c27373b6a360e426b5bc06de" : { +// "reference" : "e2c193f017ad4f6babf51de59f7550a40596afc0c27373b6a360e426b5bc06de", +// "data" : "s\/3ClggH4uCcf+BkIMqQ...+W0PVt\/MJ3t7s1g0g", +// "creationDate" : "Mon, 10 October 2011 14:42:42 UTC", +// "header" : "####", +// "updateDate" : "Mon, 10 October 2011 14:42:42 UTC", +// "previousVersion" : "a96a6d8b9ac73fcdf874d8a8534ffb2d43da8f5222e96a4a29bd2ae437619463", +// "version" : "0.3", +// "accessDate" : "Mon, 10 October 2011 14:42:42 UTC", +// "previousVersionKey" : "####" +// }, +// [...] +// "a96a6d8b9ac73fcdf874d8a8534ffb2d43da8f5222e96a4a29bd2ae437619463" : { +// "reference" : "a96a6d8b9ac73fcdf874d8a8534ffb2d43da8f5222e96a4a29bd2ae437619463", +// "accessDate" : "Mon, 10 October 2011 14:41:17 UTC", +// "creationDate" : "Mon, 27 October 2008 08:16:14 UTC", +// "version" : "0.3", +// "data" : "m3yhZu81UAjCY6U2Kn...IUCb9suV0fldGOg=", +// "updateDate" : "Mon, 27 October 2008 08:16:14 UTC", +// "header" : "####" +// } +// }, +// "oldestUsedEncryptedVersion" : "0.2", +// "reference" : "36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113", +// "data" : "frlUkTbaOWD9j2ROat...ruWioCK0Mss27oHjPg==", +// "creationDate" : "Wed, 14 March 2007 17:39:35 UTC", +// "version" : "0.3", +// "accessDate" : "Mon, 10 October 2011 14:45:12 UTC", +// "currentVersion" : "e2c193f017ad4f6babf51de59f7550a40596afc0c27373b6a360e426b5bc06de", +// "updatedDate" : "Mon, 10 October 2011 14:45:12 UTC" +// }, +// "toll" : { +// "requestType" : "MESSAGE", +// "targetValue" : "a516c942a3792cc620775a41f8870a6c7b51796d9a94da978a75da6a52eb1e10", +// "cost" : 2 +// } +// } + $record = new record(); $recordList = $record->GetList(array(array("reference", "=", $parameters["parameters"]["reference"]))); $currentRecord = $recordList[0]; $currentRecordVersions = $currentRecord->GetRecordversionList(); $currentVersion = $currentRecordVersions[0]; - - $result["currentVersion"] = array(); - $result["currentVersion"]["reference"] = $currentVersion->reference; - $result["currentVersion"]["data"] = $currentVersion->data; - $result["currentVersion"]["header"] = $currentVersion->header; - $result["currentVersion"]["version"] = $currentVersion->version; - $result["currentVersion"]["creationDate"] = $currentVersion->creation_date; - $result["currentVersion"]["updateDate"] = $currentVersion->update_date; - $result["currentVersion"]["accessDate"] = $currentVersion->access_date; + + $result["versions"] = array(); +// foreach ($currentRecordVersions as $currentVersion) { + $result["versions"][$currentVersion->reference] = array(); + $result["versions"][$currentVersion->reference]["reference"] = $currentVersion->reference; + $result["versions"][$currentVersion->reference]["data"] = $currentVersion->data; + $result["versions"][$currentVersion->reference]["header"] = $currentVersion->header; + $result["versions"][$currentVersion->reference]["version"] = $currentVersion->version; + $result["versions"][$currentVersion->reference]["creationDate"] = $currentVersion->creation_date; + $result["versions"][$currentVersion->reference]["updateDate"] = $currentVersion->update_date; + $result["versions"][$currentVersion->reference]["accessDate"] = $currentVersion->access_date; + +// } + $result["currentVersion"] = $currentVersion->reference; +// $result["currentVersion"] = $currentRecord->currentVersion; // ???? $result["reference"] = $currentRecord->reference; $result["data"] = $currentRecord->data; $result["version"] = $currentRecord->version; $result["creationDate"] = $currentRecord->creation_date; $result["updateDate"] = $currentRecord->update_date; $result["accessDate"] = $currentRecord->access_date; $result["oldestUsedEncryptedVersion"] = "---"; //============================================================= } else if ($message == "updateData") { //{ // "message":"updateData", // "srpSharedSecret":"4e4aadb1d64513ec4dd42f5e8d5b2d4363de75e4424b6bcf178c9d6a246356c5", // "parameters":{ // "records":[ // { // "record":{ // "reference":"740009737139a189cfa2b1019a6271aaa39467b59e259706564b642ff3838d50", // "data":"8hgR0Z+JDrUa812polDJ....JnZUKXNEqKI", // "version":"0.3" // }, // "currentRecordVersion":{ // "reference":"b1d82aeb9a0c4f6584bea68ba80839f43dd6ede79791549e29a1860554b144ee", // "recordReference":"740009737139a189cfa2b1019a6271aaa39467b59e259706564b642ff3838d50", // "data":"2d/UgKxxV+kBPV9GRUE.....VGonDoW0tqefxOJo=", // "version":"0.3", // "previousVersion":"55904195249037394316d3be3f5e78f08073170103bf0e7ab49a911c159cb0be", // "previousVersionKey":"YWiaZeMIVHaIl96OWW+2e8....6d6nHbn6cr2NA/dbQRuC2w==" // } // } // ], // "user":{ // "header":"{\"rec.....sion\":\"0.1\"}", // "statistics":"tt3uU9hWBy8rNnMckgCnxMJh", // "version":"0.3", // "lock":"----" // } // } //} $user = new user(); $user = $user->Get($_SESSION["userId"]); updateUserData($parameters["parameters"]["user"], $user); $user->Save(); $recordParameterList = $parameters["parameters"]["records"]; $c = count($recordParameterList); for ($i=0; $i<$c; $i++) { $recordList = $user->GetRecordList(array(array("reference", "=", $recordParameterList[$i]["record"]["reference"]))); $currentRecord = $recordList[0]; $currentRecordVersions = $currentRecord->GetRecordversionList(); $currentVersion = $currentRecordVersions[0]; updateRecordData($recordParameterList[$i], $currentRecord, $currentVersion); $currentRecord->Save(); $currentVersion->Save(); } $result["lock"] = $user->lock; $result["result"] = "done"; //============================================================= } else if ($message == "deleteRecords") { //{ // "message":"deleteRecords", // "srpSharedSecret":"4a64982f7ee366954ec50b9efea62a902a097ef111410c2aa7c4d5343bd1cdd1", // "parameters":{ // "recordReferences":["46494c81d10b80ab190d41e6806ef63869cfcc7a0ab8fe98cc3f93de4729bb9a"], // "user":{ // "header":"{\"rec...rsion\":\"0.1\"}", // "statistics":"44kOOda0xYZjbcugJBdagBQx", // "version":"0.3", // "lock":"----" // } // } //} $user = new user(); $user = $user->Get($_SESSION["userId"]); $recordReferenceList = $parameters["parameters"]["recordReferences"]; $recordList = array(); $c = count($recordReferenceList); for ($i=0; $i<$c; $i++) { array_push($recordList, array("reference", "=", $recordReferenceList[$i])); } $record = new record(); $record->DeleteList($recordList, true); updateUserData($parameters["parameters"]["user"], $user); $user->Save(); $result["recordList"] = $recordList; $result["lock"] = $user->lock; $result["result"] = "done"; //============================================================= } else if ($message == "deleteUser") { //{"message":"deleteUser", "srpSharedSecret":"e8e4ca6544dca49c95b3647d8358ad54c317048b74d2ac187ac25f719c9bac58", "parameters":{}} $user = new user(); $user->Get($_SESSION["userId"]); $user->Delete(true); $result["result"] = "ok"; //============================================================= } else if ($message == "addNewOneTimePassword") { //{ // "message":"addNewOneTimePassword", // "srpSharedSecret":"96fee4af06c09ce954fe7a9f87970e943449186bebf70bac0af1d6ebb818dabb", // "parameters":{ // "user":{ // "header":"{\"records\":{\"index\":{\"419ea6....rsion\":\"0.1\"}", // "statistics":"rrlwNbDt83rpWT4S72upiVsC", // "version":"0.3", // "lock":"----" // }, // "oneTimePassword":{ // "reference":"29e26f3a2aae61fe5cf58c45296c6df4f3dceafe067ea550b455be345f44123c", // "key":"afb848208758361a96a298b9db08995cf036011747809357a90645bc93fdfa03", // "keyChecksum":"d1599ae443b5a566bfd93c0aeec4c81b42c0506ee09874dae050449580bb3486", // "data":"hsyY8DHksgR52x6c4j7XAtIUeY.....dxsr3XWt7CbGg==", // "version":"0.3" // } // } //} fixOTPStatusTable(); $user = new user(); $user = $user->Get($_SESSION["userId"]); $otp = new onetimepassword(); updateOTP($parameters["parameters"]["oneTimePassword"], $otp, "ACTIVE"); $user->AddOnetimepassword($otp); updateUserData($parameters["parameters"]["user"], $user); $user->Save(); $result["lock"] = $user->lock; $result["result"] = "done"; //============================================================= } else if ($message == "updateOneTimePasswords") { //{ // "message":"updateOneTimePasswords", // "srpSharedSecret":"c78f8ed099ea421f4dd0a4e02dbaf1f7da925f0088188d99399874ff064a3d27", // "parameters":{ // "user":{ // "header":"{\"reco...sion\":\"0.1\"}", // "statistics":"UeRq75RZHzDC7elzrh/+OB5d", // "version":"0.3", // "lock":"----" // }, // "oneTimePasswords":["f5f44c232f239efe48ab81a6236deea1a840d52946f7d4d782dad52b4c5359ce"] // } //} $user = new user(); $user = $user->Get($_SESSION["userId"]); $validOtpReferences = $parameters["parameters"]["oneTimePasswords"]; $otpList = $user->GetOnetimepasswordList(); $c = count($otpList); for ($i=0; $i<$c; $i++) { $currentOtp = $otpList[$i]; if (arrayContainsValue($validOtpReferences, $currentOtp->reference) == false) { $currentOtp->Delete(); } } updateUserData($parameters["parameters"]["user"], $user); $user->Save(); $result["result"] = $user->lock; //============================================================= } else if ($message == "getOneTimePasswordsDetails") { //============================================================= } else if ($message == "getLoginHistory") { $result["result"] = array(); //============================================================= } else if ($message == "upgradeUserCredentials") { //{ // "message":"upgradeUserCredentials", // "srpSharedSecret":"f1c25322e1478c8fb26063e9eef2f6fc25e0460065a31cb718f80bcff8f8a735", // "parameters":{ // "user":{ // "header":"{\"reco...sion\":\"0.1\"}", // "statistics":"s72Xva+w7CLgH+ihwqwXUbyu", // "version":"0.3", // "lock":"----" // }, // "credentials":{ // "C":"57d15a8afbc1ae08103bd991d387ddfd8d26824276476fe709d754f098b6c26d", // "s":"d6735fc0486f391c4f3c947928f9e61a2418e7bed2bc9b25bb43f93acc52f636", // "v":"540c2ebbf941a481b6b2c9026c07fb46e8202e4408ed96864a696deb622baece", // "version":"0.2" // }, // "oneTimePasswords":{ // "923cdc61c4b877b263236124c44d69b459d240453a461cce8ddf7518b423ca94": "1HD6Ta0xsifEDhDwE....9WDK6tvrS6w==", // "fb1573cb9497652a81688a099a524fb116e604c6fbc191cf33406eb8438efa5f": "CocN0cSxLmMRdgNF9....o3xhGUEY68Q==" // } // } //} $user = new user(); $user->Get($_SESSION["userId"]); $otp = new onetimepassword(); updateUserCredentials($parameters["parameters"]["credentials"], $user); updateUserData($parameters["parameters"]["user"], $user); $otpList = $parameters["parameters"]["oneTimePasswords"]; foreach($otpList as $otpReference=>$otpData) { $otpList = $otp->GetList(array(array("reference", "=", $otpReference))); $currentOtp = $otpList[0]; $currentOtp->data = $otpData; $currentOtp->Save(); } $user->Save(); $result["lock"] = $user->lock; $result["result"] = "done"; //============================================================= } else if ($message == "echo") { $result["result"] = $parameters; } //============================================================= } else if (isset($_SESSION['K'])) { $result["error"] = "Wrong shared secret!"; } else { $result["result"] = "EXCEPTION"; $result["message"] = "Trying to communicate without an active connection"; } break; case "logout": error_log("logout"); session_destroy(); break; default: error_log("default"); $result["result"] = $parameters; break; } session_write_close(); + + $finalResult = Array(); + $finalResult["result"] = $result; - echo(json_encode($result)); -error_log("result: ".json_encode($result)); + echo(json_encode($finalResult)); +error_log("result: ".json_encode($finalResult)); ?> diff --git a/backend/python/properties/python.properties.json b/backend/python/properties/python.properties.json index e69de29..128c98e 100644 --- a/backend/python/properties/python.properties.json +++ b/backend/python/properties/python.properties.json @@ -0,0 +1,8 @@ +{ + "request.path": "clipperz.py", + "should.pay.toll": "false" + + "development.settings": { + "url": "http://localhost/python/clipperz" + } +}
\ No newline at end of file diff --git a/frontend/beta/html/index_template.html b/frontend/beta/html/index_template.html index 9862518..27a8a64 100644 --- a/frontend/beta/html/index_template.html +++ b/frontend/beta/html/index_template.html @@ -1,100 +1,100 @@ <html> <head> <title>@page.title@</title> <META http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- @copyright@ --> @css@ <link rel="shortcut icon" href="./clipperz.ico" /> <meta name="description" content="Login to your web accounts with just one click. Never type a password again! Use multiple complex passwords and forget them. A password manager that enhances your online security." /> <meta name="keywords" content="password manager,gestor de contraseñas,gerenciador de senhas,Kennwortmanager,passwords,security,privacy,cryptography" /> <script> Clipperz_IEisBroken = false; Clipperz_normalizedNewLine = '\n'; Clipperz_dumpUrl = "/dump/"; </script> <!--[if IE]><script> Clipperz_IEisBroken = true; Clipperz_normalizedNewLine = '\x0d\x0a'; </script><![endif]--> -@js_DEBUG@ +@js_LINKED@ </head> <body> <div id="mainDiv"> <div id="header"> <div id="miscLinks"> <a id="donateHeaderIconLink" href="http://www.clipperz.com/donations" target="_blank"><img id='donateHeaderIcon' src=""></a> <ul> <li><a href="http://www.clipperz.com/donations" id='donateHeaderLink' class='highlightedHeader' target="_blank">donate</a></li> <li><a href="http://www.clipperz.com/credits" id='creditsHeaderLink' target="_blank">credits</a></li> <li><a href="http://www.clipperz.com/contact" id='feedbackHeaderLink' target="_blank">feedback</a></li> <li><a href="http://www.clipperz.com/support/user_guide" target="_blank" id='helpHeaderLink'>help</a></li> <li><a href="http://www.clipperz.com/forum" target="_blank" id='forumHeaderLink'>forum</a></li> </ul> </div> <div id="logoFrame"> <a href="http://www.clipperz.com" target="_blank"><img id="logo" src="" /></a> <h5 class="clipperzPayoff">keep it to yourself</h5> </div> <div id="mainTabs"> <ul id="exitLinks"> <li id="logoutLI"><!--<a href="#">logout</a>--></li> <li id="lockLI"><!--<a href="#">lock</a>--></li> </ul> <div id="menus"> <table cellpadding="0" cellspacing="0" border="0"> <tbody> <tr id="menusTR"> <!-- <td class="selected"><div><a href="#">records</a></div></td> <td><div><a href="./Account.html">account</a></div></td> <td><div><a href="#">data</a></div></td> <td><div><a href="#">bookmarklet</a></div></td> --> </tr> </tbody> </table> </div> </div> </div> <div id="main"> <h3 class="loading">loading ...</h3> -@js_INSTALL@ +@js_EMBEDDED@ <script> Clipperz.PM.Proxy.defaultProxy = new Clipperz.PM.Proxy.JSON({'url':'@request.path@', 'shouldPayTolls':@should.pay.toll@}); /*offline_data_placeholder*/ </script> <div id="javaScriptAlert"> <h1>Attention!</h1> <p>If you can read this message, the chances are that your browser does not properly support JavaScript? or you have disabled this functionality yourself.</p> <h3>Javascript is required to access Clipperz.</h3> <h5>Please enable scripting or upgrade your browser.</h5> </div> </div> <div id="footer"> Copyright © 2008 Clipperz Srl - <a href="http://www.clipperz.com/terms_of_service" target="black">Terms of service</a> - <a href="http://www.clipperz.com/privacy_policy" target="black">Privacy policy</a> - Application version: @application.version@ </div> <div id="recordDetailEditModeHeaderMask"></div> <div id="recordDetailEditModeVerticalMask"></div> </div> <div id="applicationVersionType" class="@application.version.type@" /> </body> </html> diff --git a/frontend/beta/js/Clipperz/PM/DataModel/Record.js b/frontend/beta/js/Clipperz/PM/DataModel/Record.js index 270f2ae..ffb45de 100644 --- a/frontend/beta/js/Clipperz/PM/DataModel/Record.js +++ b/frontend/beta/js/Clipperz/PM/DataModel/Record.js @@ -1,756 +1,761 @@ /* Copyright 2008-2011 Clipperz Srl This file is part of Clipperz Community Edition. Clipperz Community Edition is an online password manager. For further information about its features and functionalities please refer to http://www.clipperz.com. * Clipperz Community Edition is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * Clipperz Community Edition is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. * You should have received a copy of the GNU Affero General Public License along with Clipperz Community Edition. If not, see <http://www.gnu.org/licenses/>. */ if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } //############################################################################# Clipperz.PM.DataModel.Record = function(args) { args = args || {}; this._user = args['user'] || null; this._reference = args['reference'] || Clipperz.PM.Crypto.randomKey(); this._version = args['version'] || Clipperz.PM.Crypto.encryptingFunctions.currentVersion; this._key = args['key'] || Clipperz.PM.Crypto.randomKey(); this.setLabel(args['label'] || Clipperz.PM.Strings['newRecordTitleLabel']); this.setHeaderNotes(args['headerNotes'] || null); this.setNotes(args['notes'] || args['headerNotes'] || ""); //MochiKit.Logging.logDebug("--- new Record ('" + this._label + "')- _headerNotes: '" + this._headerNotes + "'"); //MochiKit.Logging.logDebug("--- new Record ('" + this._label + "')- _notes: '" + this._notes + "'"); // this._notes = args.notes || ""; this._versions = {}; this._directLogins = {}; this._removedDirectLogins = []; this.setIsBrandNew(args['reference'] == null); this.setShouldLoadData(this.isBrandNew() ? false: true); this.setShouldDecryptData(this.isBrandNew() ? false: true); this.setShouldProcessData(this.isBrandNew() ? false: true); this.setCurrentVersion(this.isBrandNew() ? new Clipperz.PM.DataModel.RecordVersion(this, null): null); this.setCurrentVersionKey(null); this._serverData = null; this._decryptedData = null; this._cachedData = null; return this; } Clipperz.PM.DataModel.Record.prototype = MochiKit.Base.update(null, { 'toString': function() { return "Record (" + this.label() + ")"; }, //------------------------------------------------------------------------- 'isBrandNew': function() { return this._isBrandNew; }, 'setIsBrandNew': function(aValue) { this._isBrandNew = aValue; }, //------------------------------------------------------------------------- /* 'shouldRunTheRecordCreationWizard': function() { return (this.isBrandNew() && (MochiKit.Base.keys(this.currentVersion().fields()).length == 0)); }, */ //------------------------------------------------------------------------- 'user': function() { return this._user; }, //------------------------------------------------------------------------- 'reference': function() { return this._reference; }, //------------------------------------------------------------------------- 'key': function() { return this._key; }, 'updateKey': function() { this._key = Clipperz.PM.Crypto.randomKey(); }, //------------------------------------------------------------------------- 'label': function() { return this._label; }, 'setLabel': function(aValue) { this._label = aValue; }, 'lowerCaseLabel': function() { return this.label().toLowerCase(); }, //------------------------------------------------------------------------- 'versions': function() { return this._versions; }, //------------------------------------------------------------------------- 'currentVersion': function() { return this._currentVersion; }, 'setCurrentVersion': function(aValue) { this._currentVersion = aValue; }, //------------------------------------------------------------------------- 'currentVersionKey': function() { return this._currentVersionKey; }, 'setCurrentVersionKey': function(aValue) { this._currentVersionKey = aValue; }, //------------------------------------------------------------------------- 'deferredData': function() { var deferredResult; //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.deferredData - this: " + this); deferredResult = new MochiKit.Async.Deferred(); deferredResult.addCallback(MochiKit.Base.method(this, 'loadData')); deferredResult.addCallback(MochiKit.Base.method(this, 'decryptData')); deferredResult.addCallback(MochiKit.Base.method(this, 'processData')); deferredResult.addCallback(function(aRecord) { return aRecord.currentVersion().deferredData(); }); deferredResult.addCallback(MochiKit.Base.method(this, 'takeSnapshotOfCurrentData')); deferredResult.addCallback(MochiKit.Async.succeed, this); deferredResult.callback(); //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.deferredData"); return deferredResult; }, //------------------------------------------------------------------------- 'exportedData': function() { var result; result = {}; result['label'] = this.label(); result['data'] = this.serializedData(); result['currentVersion'] = this.currentVersion().serializedData(); result['currentVersion']['reference'] = this.currentVersion().reference(); // result['versions'] = MochiKit.Base.map(MochiKit.Base.methodcaller("serializedData"), MochiKit.Base.values(this.versions())); return Clipperz.Base.serializeJSON(result); }, //------------------------------------------------------------------------- 'shouldLoadData': function() { return this._shouldLoadData; }, 'setShouldLoadData': function(aValue) { this._shouldLoadData = aValue; }, //------------------------------------------------------------------------- 'shouldDecryptData': function() { return this._shouldDecryptData; }, 'setShouldDecryptData': function(aValue) { this._shouldDecryptData = aValue; }, //------------------------------------------------------------------------- 'shouldProcessData': function() { return this._shouldProcessData; }, 'setShouldProcessData': function(aValue) { this._shouldProcessData = aValue; }, //------------------------------------------------------------------------- 'loadData': function() { var result; //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.loadData - this: " + this); if (this.shouldLoadData()) { var deferredResult; deferredResult = new MochiKit.Async.Deferred(); deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'notify', 'loadingRecordData'); deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'getRecordDetail', {reference: this.reference()}); deferredResult.addCallback(MochiKit.Base.method(this,'setServerData')); deferredResult.callback(); result = deferredResult; } else { result = MochiKit.Async.succeed(this.serverData()); } //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.loadData"); return result; }, //------------------------------------------------------------------------- 'decryptData': function(anEncryptedData) { var result; //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.decryptData - this: " + this + " (" + anEncryptedData + ")"); if (this.shouldDecryptData()) { var deferredResult; deferredResult = new MochiKit.Async.Deferred(); deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'notify', 'decryptingRecordData'); deferredResult.addCallback(Clipperz.PM.Crypto.deferredDecrypt, this.key(), anEncryptedData['data'], anEncryptedData['version']); deferredResult.addCallback(function(anEncryptedData, someDecryptedValues) { var result; result = anEncryptedData; result['data'] = someDecryptedValues; return result; }, anEncryptedData); deferredResult.addCallback(MochiKit.Base.method(this, 'setDecryptedData')); deferredResult.callback(); result = deferredResult; } else { result = MochiKit.Async.succeed(this.decryptedData()); } //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.decryptData"); return result; }, //------------------------------------------------------------------------- 'processData': function(someValues) { //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.processData"); //MochiKit.Logging.logDebug("--- Record.processData: " + Clipperz.Base.serializeJSON(someValues)); if (this.shouldProcessData()) { var currentVersionParameters; +console.log("Record.processData", someValues); this.processDataToExtractLegacyValues(someValues['data']); if (typeof(someValues['data']['notes']) != 'undefined') { this.setNotes(someValues['data']['notes']); } + if (someValues['data']['currentVersionKey'] != null) { this.setCurrentVersionKey(someValues['data']['currentVersionKey']); } else { this.setCurrentVersionKey(this.key()); } - currentVersionParameters = someValues['currentVersion']; +// currentVersionParameters = someValues['currentVersion']; + currentVersionParameters = someValues['versions'][someValues['currentVersion']]; +console.log("Record.processData - this.currentVersionKey()", this.currentVersionKey()); +console.log("Record.processData - currentVersionParameters", currentVersionParameters); currentVersionParameters['key'] = this.currentVersionKey(); this.setCurrentVersion(new Clipperz.PM.DataModel.RecordVersion(this, currentVersionParameters)); if (someValues['data']['directLogins'] != null) { var directLoginReference; for (directLoginReference in someValues['data']['directLogins']) { var directLogin; var directLoginParameters; directLoginParameters = someValues['data']['directLogins'][directLoginReference]; directLoginParameters.record = this; directLoginParameters.reference = directLoginReference; directLogin = new Clipperz.PM.DataModel.DirectLogin(directLoginParameters); this.addDirectLogin(directLogin, true); } } this.setShouldProcessData(false); } Clipperz.NotificationCenter.notify(this, 'recordDataReady'); //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.processData"); //MochiKit.Logging.logDebug("<<< Record.processData"); return this; }, //------------------------------------------------------------------------- 'processDataToExtractLegacyValues': function(someValues) { //MochiKit.Logging.logDebug(">>> Record.processDataToExtractLegacyValues"); if (someValues['data'] != null) { this.setNotes(someValues['data']); } if ( (typeof(someValues['loginFormData']) != "undefined") && (typeof(someValues['loginBindings'] != "undefined")) && (someValues['loginFormData'] != "") && (someValues['loginBindings'] != "") ) { var directLogin; directLogin = new Clipperz.PM.DataModel.DirectLogin({ record:this, label:this.label() + Clipperz.PM.Strings['newDirectLoginLabelSuffix'], reference:Clipperz.Crypto.SHA.sha256(new Clipperz.ByteArray(this.label() + someValues['loginFormData'] + someValues['loginBindings'])).toHexString().substring(2), formData:Clipperz.Base.evalJSON(someValues['loginFormData']), legacyBindingData:Clipperz.Base.evalJSON(someValues['loginBindings']), bookmarkletVersion:'0.1' }); this.addDirectLogin(directLogin, true); } //MochiKit.Logging.logDebug("<<< Record.processDataToExtractLegacyValues"); }, //------------------------------------------------------------------------- 'getReadyBeforeUpdatingVersionValues': function() { }, //------------------------------------------------------------------------- 'addNewField': function() { var newField; //MochiKit.Logging.logDebug(">>> Record.addNewField - " + this); this.getReadyBeforeUpdatingVersionValues(); newField = this.currentVersion().addNewField(); Clipperz.NotificationCenter.notify(this, 'recordUpdated'); //MochiKit.Logging.logDebug("<<< Record.addNewField"); return newField; }, //------------------------------------------------------------------------- 'removeField': function(aField) { this.getReadyBeforeUpdatingVersionValues(); this.currentVersion().removeField(aField); Clipperz.NotificationCenter.notify(this, 'recordUpdated'); }, 'removeEmptyFields': function() { MochiKit.Iter.forEach(MochiKit.Base.values(this.currentVersion().fields()), MochiKit.Base.bind(function(aField) { if (aField.isEmpty()) { this.removeField(aField); // this.currentVersion().removeField(aField); } }, this)); }, //------------------------------------------------------------------------- 'notes': function() { return this._notes; }, 'setNotes': function(aValue) { this._notes = aValue; this.setHeaderNotes(null); }, //------------------------------------------------------------------------- 'headerNotes': function() { return this._headerNotes; }, 'setHeaderNotes': function(aValue) { this._headerNotes = aValue; }, //------------------------------------------------------------------------- 'remove': function() { //MochiKit.Logging.logDebug(">>> Record.remove - " + this); MochiKit.Iter.forEach(MochiKit.Base.values(this.directLogins()), MochiKit.Base.method(this, 'removeDirectLogin')); this.syncDirectLoginReferenceValues(); this.user().removeRecord(this); //MochiKit.Logging.logDebug("<<< Record.remove"); }, //------------------------------------------------------------------------- 'directLogins': function() { return this._directLogins; }, 'addDirectLogin': function(aDirectLogin, shouldUpdateUser) { this.directLogins()[aDirectLogin.reference()] = aDirectLogin; if (shouldUpdateUser == true) { this.user().addDirectLogin(aDirectLogin); } }, 'removeDirectLogin': function(aDirectLogin) { this.removedDirectLogins().push(aDirectLogin); delete this.directLogins()[aDirectLogin.reference()]; // this.user().removeDirectLogin(aDirectLogin); }, 'resetDirectLogins': function() { this._directLogins = {}; }, 'removedDirectLogins': function() { return this._removedDirectLogins; }, 'resetRemovedDirectLogins': function() { this._removedDirectLogins = []; }, //------------------------------------------------------------------------- 'serverData': function() { return this._serverData; }, 'setServerData': function(aValue) { this._serverData = aValue; this.setShouldLoadData(false); return aValue; }, //------------------------------------------------------------------------- 'decryptedData': function() { return this._decryptedData; }, 'setDecryptedData': function(aValue) { this._decryptedData = aValue; this.setShouldDecryptData(false); return aValue; }, //------------------------------------------------------------------------- 'cachedData': function() { return this._cachedData; }, 'setCachedData': function(aValue) { //MochiKit.Logging.logDebug(">>> Record.setCachedData"); //MochiKit.Logging.logDebug("--- Record.setCachedData - aValue: " + Clipperz.Base.serializeJSON(aValue)); this._cachedData = aValue; this.setShouldProcessData(false); //MochiKit.Logging.logDebug("<<< Record.setCachedData"); return aValue; }, //------------------------------------------------------------------------- 'hasPendingChanges': function() { var result; //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.hasPendingChanges"); //MochiKit.Logging.logDebug(">>> Record.hasPendingChanges - cachedData: " + this.cachedData()); //MochiKit.Logging.logDebug(">>> Record.hasPendingChanges - cachedData: " + Clipperz.Base.serializeJSON(this.cachedData())); //MochiKit.Logging.logDebug(">>> Record.hasPendingChanges - currentSnapshot: " + this.currentDataSnapshot()); //MochiKit.Logging.logDebug(">>> Record.hasPendingChanges - currentSnapshot: " + Clipperz.Base.serializeJSON(this.currentDataSnapshot())); //console.log(">>> Record.hasPendingChanges - cachedData: %o", this.cachedData()); //console.log(">>> Record.hasPendingChanges - currentSnapshot: %o", this.currentDataSnapshot()); result = (MochiKit.Base.compare(this.cachedData(), this.currentDataSnapshot()) != 0); //MochiKit.Logging.logDebug("<<< Record.hasPendingChanges - " + result); if ((result == false) && this.isBrandNew() && (this.label() != Clipperz.PM.Strings['newRecordTitleLabel'])) { result = true; } //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.hasPendingChanges"); return result; }, //------------------------------------------------------------------------- 'currentDataSnapshot': function() { var result; //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.currentDataSnapshot"); result = { 'label': this.label(), 'data': this.serializedData(), 'currentVersion': this.currentVersion().currentDataSnapshot() }; // result['data']['data'] = this.notes(); result = Clipperz.Base.serializeJSON(result); //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.currentDataSnapshot"); //MochiKit.Logging.logDebug("<<< Record.currentDataSnapshot"); return result; }, //......................................................................... 'takeSnapshotOfCurrentData': function() { this.setCachedData(this.currentDataSnapshot()); }, //------------------------------------------------------------------------- 'headerData': function() { var result; result = { 'label': this.label(), 'key': this.key() }; if (this.headerNotes() != null) { result['headerNotes'] = this.headerNotes(); } return result; }, //------------------------------------------------------------------------- 'serializedData': function() { var result; var directLoginReference; result = {}; result['currentVersionKey'] = this.currentVersion().key(); result['directLogins'] = {}; for (directLoginReference in this.directLogins()) { result['directLogins'][directLoginReference] = this.directLogins()[directLoginReference].serializedData(); } result['notes'] = this.notes(); return result; }, //------------------------------------------------------------------------- 'encryptedData': function() { var deferredResult; var result; //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.encryptedData"); result = {} //MochiKit.Logging.logDebug("--- Record.encryptedData - 1"); deferredResult = new MochiKit.Async.Deferred(); //MochiKit.Logging.logDebug("--- Record.encryptedData - 2"); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Record.encryptedData - 1: " + res); return res;}); deferredResult.addCallback(function(aResult, aRecord) { aResult['reference'] = aRecord.reference(); return aResult; }, result, this); //MochiKit.Logging.logDebug("--- Record.encryptedData - 3"); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Record.encryptedData - 2: " + res); return res;}); deferredResult.addCallback(Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion, this.key(), this.serializedData()); //MochiKit.Logging.logDebug("--- Record.encryptedData - 4"); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Record.encryptedData - 3: " + res); return res;}); deferredResult.addCallback(function(aResult, res) { aResult['data'] = res; return aResult; }, result); //MochiKit.Logging.logDebug("--- Record.encryptedData - 5"); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Record.encryptedData - 4: " + res); return res;}); deferredResult.addCallback(function(aResult) { aResult['version'] = Clipperz.PM.Crypto.encryptingFunctions.currentVersion; return aResult; }, result); //MochiKit.Logging.logDebug("--- Record.encryptedData - 6"); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Record.encryptedData - 5: " + res); return res;}); deferredResult.callback(); //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.encryptedData"); return deferredResult; }, //------------------------------------------------------------------------- 'syncDirectLoginReferenceValues': function() { //MochiKit.Logging.logDebug(">>> Record.syncDirectLoginReferenceValues"); MochiKit.Iter.forEach(MochiKit.Base.values(this.directLogins()), function(aDirectLogin) { aDirectLogin.record().user().synchronizeDirectLogin(aDirectLogin); }); MochiKit.Iter.forEach(this.removedDirectLogins(), function(aDirectLogin) { aDirectLogin.record().user().removeDirectLogin(aDirectLogin); }); this.resetRemovedDirectLogins(); //MochiKit.Logging.logDebug("<<< Record.syncDirectLoginReferenceValues"); }, //------------------------------------------------------------------------- 'saveChanges': function() { var result; if (this.isBrandNew() == false) { result = this.user().saveRecords([this], 'updateData'); } else { result = this.user().saveRecords([this], 'addNewRecords'); } return result; }, /* 'saveChanges': function() { var deferredResult; var result; Clipperz.NotificationCenter.notify(this.user(), 'updatedSection', 'records', true); //MochiKit.Logging.logDebug(">>> Record.saveChanges"); //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.saveChanges"); if (this.headerNotes() != null) { this.setNotes(this.headerNotes()); } this.syncDirectLoginReferenceValues(); this.currentVersion().createNewVersion(); result = {'records': [{}]}; deferredResult = new MochiKit.Async.Deferred(); deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_collectRecordInfo'); deferredResult.addCallback(MochiKit.Base.method(this, 'updateKey')); deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_encryptUserData'); deferredResult.addCallback(MochiKit.Base.method(this.user(), 'encryptedData')); deferredResult.addCallback(function(aResult, res) { aResult['user'] = res; return aResult; }, result); deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_encryptRecordData'); deferredResult.addCallback(MochiKit.Base.method(this, 'encryptedData')); deferredResult.addCallback(function(aResult, res) { //# aResult['record'] = res; aResult['records'][0]['record'] = res; return aResult; }, result); deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_encryptRecordVersions'); deferredResult.addCallback(MochiKit.Base.method(this.currentVersion(), 'encryptedData')); deferredResult.addCallback(function(aResult, res) { // aResult['currentRecordVersion'] = res; aResult['records'][0]['currentRecordVersion'] = res; return aResult; }, result); deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_sendingData'); if (this.isBrandNew() == false) { deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'updateData'); } else { //# deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'addNewRecord'); deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'addNewRecords'); } deferredResult.addCallback(MochiKit.Base.method(this, 'takeSnapshotOfCurrentData')); deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_updatingInterface'); deferredResult.addCallback(MochiKit.Base.method(this, 'setIsBrandNew'), false); deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'notify', 'recordUpdated'); deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'notify', 'directLoginUpdated'); deferredResult.callback(); return deferredResult; }, */ //------------------------------------------------------------------------- 'cancelChanges': function() { //MochiKit.Logging.logDebug(">>> Record.cancelChanges"); //MochiKit.Logging.logDebug("--- Record.cancelChanges - cachedData: " + Clipperz.Base.serializeJSON(this.cachedData())); if (this.isBrandNew()) { this.user().removeRecord(this); } else { this.restoreValuesFromSnapshot(this.cachedData()); } //MochiKit.Logging.logDebug("<<< Record.cancelChanges"); }, //------------------------------------------------------------------------- 'restoreValuesFromSnapshot': function(someSnapshotData) { var snapshotData; //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.restoreValuesFromSnapshot"); snapshotData = Clipperz.Base.evalJSON(someSnapshotData); //MochiKit.Logging.logDebug("--- Record.restoreValuesFromSnapshot - someSnapshotData (1): " + Clipperz.Base.serializeJSON(someSnapshotData)); this.setLabel(snapshotData['label']); this.resetDirectLogins(); this.setShouldProcessData(true); this.processData(snapshotData); //MochiKit.Logging.logDebug("--- Record.restoreValuesFromSnapshot - snapshotData: (2)" + Clipperz.Base.serializeJSON(snapshotData)); this.resetRemovedDirectLogins(); { var currentSnapshot; var comparisonResult; currentSnapshot = this.currentDataSnapshot(); //MochiKit.Logging.logDebug("--- Record.restoreValuesFromSnapshot - 1"); //console.log("snapshot data: %o", someSnapshotData.currentVersion); //console.log("current data: %o", currentSnapshot.currentVersion); //MochiKit.Logging.logDebug("--- Record.restoreValuesFromSnapshot - someSnapshotData: " + Clipperz.Base.serializeJSON(someSnapshotData.currentVersion)); //MochiKit.Logging.logDebug("--- Record.restoreValuesFromSnapshot - currentSnapshot: " + Clipperz.Base.serializeJSON(currentSnapshot.currentVersion)); comparisonResult = MochiKit.Base.compare(someSnapshotData.currentVersion, currentSnapshot.currentVersion); //MochiKit.Logging.logDebug("--- Record.restoreValuesFromSnapshot - " + comparisonResult); } //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.restoreValuesFromSnapshot"); }, //------------------------------------------------------------------------- __syntaxFix__: "syntax fix" }); diff --git a/frontend/beta/js/Clipperz/PM/Proxy.js b/frontend/beta/js/Clipperz/PM/Proxy.js index f476196..bec9195 100644 --- a/frontend/beta/js/Clipperz/PM/Proxy.js +++ b/frontend/beta/js/Clipperz/PM/Proxy.js @@ -1,170 +1,169 @@ /* Copyright 2008-2011 Clipperz Srl This file is part of Clipperz Community Edition. Clipperz Community Edition is an online password manager. For further information about its features and functionalities please refer to http://www.clipperz.com. * Clipperz Community Edition is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * Clipperz Community Edition is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. * You should have received a copy of the GNU Affero General Public License along with Clipperz Community Edition. If not, see <http://www.gnu.org/licenses/>. */ if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } //============================================================================= Clipperz.PM.Proxy = function(args) { args = args || {}; this._shouldPayTolls = args.shouldPayTolls || false; this._tolls = { 'CONNECT': [], 'REGISTER': [], 'MESSAGE': [] }; if (args.isDefault === true) { Clipperz.PM.Proxy.defaultProxy = this; } return this; } Clipperz.PM.Proxy.prototype = MochiKit.Base.update(null, { 'toString': function() { return "Clipperz.PM.Proxy"; }, //========================================================================= 'shouldPayTolls': function() { return this._shouldPayTolls; }, //------------------------------------------------------------------------- 'tolls': function() { return this._tolls; }, //------------------------------------------------------------------------- 'payToll': function(aRequestType, someParameters) { var deferredResult; //console.log(">>> Proxy.payToll", aRequestType, someParameters); if (this.shouldPayTolls()) { deferredResult = new MochiKit.Async.Deferred(); if (this.tolls()[aRequestType].length == 0) { deferredResult.addCallback(MochiKit.Base.method(this, 'sendMessage', 'knock', {requestType:aRequestType})); deferredResult.addCallback(MochiKit.Base.method(this, 'setTollCallback')); } deferredResult.addCallback(MochiKit.Base.method(this.tolls()[aRequestType], 'pop')); deferredResult.addCallback(MochiKit.Base.methodcaller('deferredPay')); deferredResult.addCallback(function(aToll) { var result; result = { parameters: someParameters, toll: aToll } return result; }); deferredResult.callback(); } else { deferredResult = MochiKit.Async.succeed({parameters:someParameters}); } //console.log("<<< Proxy.payToll"); return deferredResult; }, //------------------------------------------------------------------------- 'addToll': function(aToll) { //console.log(">>> Proxy.addToll", aToll); this.tolls()[aToll.requestType()].push(aToll); //console.log("<<< Proxy.addToll"); }, //========================================================================= 'setTollCallback': function(someParameters) { //console.log(">>> Proxy.setTollCallback", someParameters); if (typeof(someParameters['toll']) != 'undefined') { //console.log("added a new toll", someParameters['toll']); this.addToll(new Clipperz.PM.Toll(someParameters['toll'])); } //console.log("<<< Proxy.setTallCallback", someParameters['result']); - //return someParameters['result']; - return someParameters; + return someParameters['result']; }, //========================================================================= 'registration': function (someParameters) { return this.processMessage('registration', someParameters, 'REGISTER'); }, 'handshake': function (someParameters) { return this.processMessage('handshake', someParameters, 'CONNECT'); }, 'message': function (someParameters) { return this.processMessage('message', someParameters, 'MESSAGE'); }, 'logout': function (someParameters) { return this.processMessage('logout', someParameters, 'MESSAGE'); }, //========================================================================= 'processMessage': function (aFunctionName, someParameters, aRequestType) { var deferredResult; deferredResult = new MochiKit.Async.Deferred(); deferredResult.addCallback(MochiKit.Base.method(this, 'payToll', aRequestType)); deferredResult.addCallback(MochiKit.Base.method(this, 'sendMessage', aFunctionName)); deferredResult.addCallback(MochiKit.Base.method(this, 'setTollCallback')); deferredResult.callback(someParameters); return deferredResult; }, //========================================================================= 'sendMessage': function () { throw Clipperz.Base.exception.AbstractMethod; }, //========================================================================= 'isReadOnly': function () { return false; }, //========================================================================= __syntaxFix__: "syntax fix" }); diff --git a/frontend/beta/js/Clipperz/PM/Proxy/Proxy.PHP.js b/frontend/beta/js/Clipperz/PM/Proxy/Proxy.PHP.js deleted file mode 100755 index 34a10c2..0000000 --- a/frontend/beta/js/Clipperz/PM/Proxy/Proxy.PHP.js +++ b/dev/null @@ -1,262 +0,0 @@ -/* - -Copyright 2008-2011 Clipperz Srl - -This file is part of Clipperz Community Edition. -Clipperz Community Edition is an online password manager. -For further information about its features and functionalities please -refer to http://www.clipperz.com. - -* Clipperz Community Edition is free software: you can redistribute - it and/or modify it under the terms of the GNU Affero General Public - License as published by the Free Software Foundation, either version - 3 of the License, or (at your option) any later version. - -* Clipperz Community Edition is distributed in the hope that it will - be useful, but WITHOUT ANY WARRANTY; without even the implied - warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Affero General Public License for more details. - -* You should have received a copy of the GNU Affero General Public - License along with Clipperz Community Edition. If not, see - <http://www.gnu.org/licenses/>. - -*/ - -if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } -if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } - -//============================================================================= - -Clipperz.PM.Proxy.PHP = function(args) { - Clipperz.PM.Proxy.PHP.superclass.constructor.call(this, args); -/* - this._tolls = { - 'CONNECT': [], - 'REGISTER': [], - 'MESSAGE': [] - }; -*/ - return this; -} - -YAHOO.extendX(Clipperz.PM.Proxy.PHP, Clipperz.PM.Proxy, { - - 'toString': function() { - return "Clipperz.PM.Proxy.PHP - " + this.args(); - }, - - //========================================================================= -/* - 'tolls': function() { - return this._tolls; - }, -*/ - //------------------------------------------------------------------------- -/* - 'payToll': function(aRequestType, someParameters) { - var deferredResult; - -//MochiKit.Logging.logDebug(">>> Proxy.DWR.payToll: " + aRequestType); - if (this.tolls()[aRequestType].length > 0) { - deferredResult = MochiKit.Async.succeed(this.tolls()[aRequestType].pop()); - } else { -//MochiKit.Logging.logDebug("### " + aRequestType + " toll NOT immediately available; request queued."); - deferredResult = new MochiKit.Async.Deferred(); - deferredResult.addCallback(function(someParameters) { - return new Clipperz.PM.Toll(someParameters['toll']); - }) - com_clipperz_pm_Proxy.knock(Clipperz.Base.serializeJSON({requestType:aRequestType}), { - callback:MochiKit.Base.method(deferredResult, 'callback'), - errorHandler:MochiKit.Base.method(deferredResult, 'errback') - }); - } - - deferredResult.addCallback(function(aToll) { - return aToll.deferredPay(); - }); - deferredResult.addCallback(function(someParameters, aToll) { - var result; - - result = { - parameters: someParameters, - toll: aToll - } - - return result; - }, someParameters); - - return deferredResult; - }, -*/ - //------------------------------------------------------------------------- -/* - 'addToll': function(aToll) { - this.tolls()[aToll.requestType()].push(aToll); - }, -*/ - //========================================================================= -/* - 'setTollCallback': function(someParameters) { -//MochiKit.Logging.logDebug(">>> Proxy.DWR.setTollCallback"); -//MochiKit.Logging.logDebug("--- Proxy.DWR.setTollCallback - " + Clipperz.Base.serializeJSON(someParameters)); - if (typeof(someParameters['toll']) != 'undefined') { - this.addToll(new Clipperz.PM.Toll(someParameters['toll'])); - } - return someParameters['result']; - }, -*/ - //========================================================================= - - 'registration': function(someParameters) { - return this.sendMessage('registration', someParameters, 'REGISTER'); - }, - - //------------------------------------------------------------------------- - - 'handshake': function(someParameters) { -/* - _s = "e8a2162f29aeaabb729f5625e9740edbf0cd80ac77c6b19ab951ed6c88443b8c"; - _v = new Clipperz.Crypto.BigInt("955e2db0f7844aca372f5799e5f7e51b5866718493096908bd66abcf1d068108", 16); - _b = new Clipperz.Crypto.BigInt("5761e6c84d22ea3c5649de01702d60f674ccfe79238540eb34c61cd020230c53", 16); - - _B = _v.add(Clipperz.Crypto.SRP.g().powerModule(_b, Clipperz.Crypto.SRP.n())); - _u = new Clipperz.Crypto.BigInt(Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(_B.asString(10))).toHexString(), 16); - _A = new Clipperz.Crypto.BigInt("3b3567ec33d73673552e960872eb154d091a2488915941038aef759236a27e64", 16); - _S = (_A.multiply(_v.powerModule(_u, Clipperz.Crypto.SRP.n()))).powerModule(_b, Clipperz.Crypto.SRP.n()); - _K = Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(_S.asString(10))).toHexString().slice(2); - _M1 = Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(_A.asString(10) + _B.asString(10) + _K)).toHexString().slice(2); - _M2 = Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(_A.asString(10) + _M1 + _K)).toHexString().slice(2); - -// MochiKit.Logging.logDebug("b = " + _b.asString(16)); -// MochiKit.Logging.logDebug("v = " + _v.asString(16)); - MochiKit.Logging.logDebug("B = " + _B.asString(16)); - MochiKit.Logging.logDebug("u = " + _u.asString(16)); - MochiKit.Logging.logDebug("S = " + _S.asString(16)); - MochiKit.Logging.logDebug("K = " + _K); - MochiKit.Logging.logDebug("M1 = " + _M1); - MochiKit.Logging.logDebug("M2 = " + _M2); -// MochiKit.Logging.logDebug("someParameters.version: " + someParameters.version); -*/ - return this.sendMessage('handshake', someParameters, 'CONNECT'); - }, - - //------------------------------------------------------------------------- - - 'message': function(someParameters) { - return this.sendMessage('message', someParameters, 'MESSAGE'); - }, - - //------------------------------------------------------------------------- - - 'logout': function(someParameters) { -//MochiKit.Logging.logDebug("=== Proxy.DWR.logout"); - return this.sendMessage('logout', someParameters, 'MESSAGE'); - }, - - //========================================================================= - - 'sendMessage': function(aFunctionName, someParameters, aRequestType) { -/* - var deferredResult; - var proxy; - -//MochiKit.Logging.logDebug(">>> Proxy.DWR.sendMessage - " + aFunctionName + " - " + aRequestType); - proxy = this; - - deferredResult = new MochiKit.Async.Deferred(); -//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("x.1 Proxy.DWR.sendMessage - 1: " + res); return res;}); - deferredResult.addCallback(MochiKit.Base.method(proxy, 'payToll'), aRequestType); -//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("x.2 Proxy.DWR.sendMessage - 2: " + Clipperz.Base.serializeJSON(res)); return res;}); - deferredResult.addCallback(MochiKit.Base.method(proxy, 'sendRemoteMessage'), aFunctionName); -//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("x.3 Proxy.DWR.sendMessage - 3: " + res); return res;}); -//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("x.3 Proxy.DWR.sendMessage - 3: " + Clipperz.Base.serializeJSON(res)); return res;}); - deferredResult.callback(someParameters); - -//MochiKit.Logging.logDebug("<<< Proxy.DWR.sendMessage"); - return deferredResult; -*/ - -// return this.sendRemoteMessage(aFunctionName, someParameters); - - - var deferredResult; - var proxy; - - proxy = this; - - deferredResult = new MochiKit.Async.Deferred(); - deferredResult.addCallback(MochiKit.Base.method(proxy, 'sendRemoteMessage'), aFunctionName); -//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("x.3 Proxy.PHP.sendMessage - 3: " + res); return res;}); -//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("x.3 Proxy.PHP.sendMessage - 3.1: " + Clipperz.Base.serializeJSON(res)); return res;}); - - deferredResult.callback(someParameters); - - return deferredResult; - }, - - //========================================================================= - - 'sendRemoteMessage': function(aFunctionName, someParameters) { -/* - var deferredResult; - -//MochiKit.Logging.logDebug(">>> Proxy.DWR.sendRemoteMessage('" + aFunctionName + "', " + Clipperz.Base.serializeJSON(someParameters) + ") - " + this); - deferredResult = new MochiKit.Async.Deferred(); -//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Proxy.DWR.sendRemoteMessage - 1: " + res); return res;}); -// deferredResult.addCallback(MochiKit.Base.method(this, 'setTollCallback')); -//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Proxy.DWR.sendRemoteMessage - 2: " + res); return res;}); - - com_clipperz_pm_Proxy[aFunctionName](Clipperz.Base.serializeJSON(someParameters), { - callback:MochiKit.Base.method(deferredResult, 'callback'), - errorHandler:MochiKit.Base.method(deferredResult, 'errback') - }); -//MochiKit.Logging.logDebug("<<< Proxy.PHP.sendRemoteMessage - result: " + deferredResult); - - return deferredResult; -*/ - - var deferredResult; - var parameters; - -//MochiKit.Logging.logDebug(">>> Proxy.PHP.sendRemoteMessage('" + aFunctionName + "', " + Clipperz.Base.serializeJSON(someParameters) + ") - " + this); - parameters = {}; - parameters['method'] = aFunctionName; -// parameters['version'] = someParameters['version']; -// parameters['message'] = someParameters['message']; - parameters['parameters'] = Clipperz.Base.serializeJSON(someParameters); -//MochiKit.Logging.logDebug("--- Proxy.PHP.sendRemoteMessage('" + Clipperz.Base.serializeJSON(parameters) + ") - " + this); - deferredResult = new MochiKit.Async.Deferred(); - deferredResult.addCallback(MochiKit.Async.doXHR, "./php/index.php", { - method:'POST', - sendContent:MochiKit.Base.queryString(parameters), - headers:{"Content-Type":"application/x-www-form-urlencoded"} - }); -//deferredResult.addCallback(function(res) {MochiKit.Logging.logDebug("Proxy.PHP.response - 2: " + res.responseText); return res;}); -//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("Proxy.PHP.response - ERROR: " + res); return res;}); - deferredResult.addCallback(MochiKit.Async.evalJSONRequest); - deferredResult.addCallback(function (someValues) { - if (someValues['result'] == 'EXCEPTION') { - throw someValues['message']; - } - return someValues; - }) - deferredResult.callback(); - - return deferredResult; - }, - - //========================================================================= - - 'isReadOnly': function() { - return false; - }, - - //========================================================================= - __syntaxFix__: "syntax fix" - -}); - -//============================================================================= - -//Clipperz.PM.Proxy.defaultProxy = new Clipperz.PM.Proxy.PHP("Proxy.PHP - async test"); diff --git a/frontend/gamma/css/clipperz.css b/frontend/gamma/css/clipperz.css new file mode 100644 index 0000000..c772c98 --- a/dev/null +++ b/frontend/gamma/css/clipperz.css @@ -0,0 +1,3725 @@ +/* + +Copyright 2008-2011 Clipperz Srl + +This file is part of Clipperz Community Edition. +Clipperz Community Edition is an online password manager. +For further information about its features and functionalities please +refer to http://www.clipperz.com. + +* Clipperz Community Edition is free software: you can redistribute + it and/or modify it under the terms of the GNU Affero General Public + License as published by the Free Software Foundation, either version + 3 of the License, or (at your option) any later version. + +* Clipperz Community Edition is distributed in the hope that it will + be useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Affero General Public License for more details. + +* You should have received a copy of the GNU Affero General Public + License along with Clipperz Community Edition. If not, see + <http://www.gnu.org/licenses/>. + +*/ + +/* @override + https://www.example.com/DEVELOPMENT/css/clipperz.css + http://www.example.com/DEVELOPMENT/css/clipperz.css + https://www.clipperz.com/gamma/css/clipperz.css + https://www.example.com/iPHONE/css/clipperz.css +*/ +/* + +Color list: +- login box: + light #ff9955 + dark #ff6622 +- login button: + regular #dd5500 + hover #773311 +- login translations: + box: #cc6622; + not-selected: + color: #ddaa99 + background: #994422 + selected: #772211; +*/ +html { + height: 100%; + color: #e8b81b; +} +body { + /* margin-left: 15px; margin-right: 15px;*/ + + font-family: Helvetica, Arial, Geneva, sans-serif; + margin: 0px; + /* + min-width: 600px; +*/ + + height: 99%; +} +img.favicon { + height: 16px; + width: 16px; +} +/* @group Misc */ +.clear { + clear: both; +} +.hidden_none { + display: none; + visibility: hidden; +} +.keepTogether { + display: inline-block; + white-space: nowrap; +} +body.ext-gecko .keepTogether { + display: -moz-inline-box; +} +/* @end */ +/* @group Loading */ +div#loading { + margin-left: auto; + margin-right: auto; + text-align: center; + margin-top: 60px; + width: 200px; +} +div#loading img { + border: 0px; +} +div#loading h5 { + font-size: 16pt; + padding: 0px; + color: #333366; +} +div#loading h2 { + padding-left: 20px; + color: #ff9200; +} +/* @end */ +/* @group Login page */ +/* @group Header */ +div.pageHeader { + background-color: #1f2148; + min-width: 1013px; +} +div#logoFrame { + padding: 16px 16px 60px 16px; + min-height: 44px; +} +div#logoFrame div#logo { + background: url(../images/old/logo.png); + width: 150px; + height: 39px; +} +div#loading div#logo { + background: url(../images/old/logo_blue.png); + width: 193px; + height: 58px; + display: block; +} +h5.clipperzPayoff { + color: white; + font-size: 13pt; + font-weight: normal; + padding-left: 20px; + white-space: nowrap; + margin: 0px; + padding-left: 4px; +} +/* @group Misc links */ +div#miscLinks { + float: right; +} +div#miscLinks ul { + margin: 12px 0px 0px; + padding: 15px; +} +div#miscLinks ul li { + display: inline; + margin: 0px; + padding: 0px; + border: 0px; +} +div#miscLinks ul li a { + /* + color: #ccccff; +*/ + + color: white; + margin: 0px; + padding: 0px; + border: 0px; + font-weight: normal; + text-decoration: none; + font-size: 12pt; + border-left: 1px solid #45486b; + padding: 15px; + margin: 0px; + min-width: 70px; +} +div#miscLinks ul li a#donateHeaderLink { + border-left: 0px; +} +div#miscLinks ul li a:hover { + color: #ff9200; +} +/* @end */ +/* @group Features Tabs */ +#featureTabs table { + width: 100%; + padding: 6px; + padding-bottom: 46px; +} +#featureTabs table tr td { + width: 25%; + vertical-align: top; + font-size: 11pt; + color: white; +} +#featureTabs table tr td img { + float: left; +} +#featureTabs table tr td span { + display: block; + padding: 5 10 5 85; +} +div#featureTabs canvas.featureIcon { + width: 76px; + height: 76px; + display: block; + float: left; + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9955), to(#ff6622), color-stop(1, #333333)); + background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9955); + -webkit-border-radius: 38px; + -moz-border-radius: 38px; + border-radius: 38px; +} +/* +div#featureTabs div.featureIcon.storeIcon { + background-image: url(../images/old/home/features/store.png); +} + +div#featureTabs div.featureIcon.protectIcon { + background-image: url(../images/old/home/features/protect.png); +} + +div#featureTabs div.featureIcon.directLoginIcon { + background-image: url(../images/old/home/features/directLogin.png); +} + +div#featureTabs div.featureIcon.shareIcon { + background-image: url(../images/old/home/features/share.png); +} +*/ +/* +./images/home/features/store.png +./images/home/features/protect.png +./images/home/features/directLogin.png +./images/home/features/share.png +*/ +/* @end */ +/* @group Feature bullets */ +div#featurePoints { + min-width: 400px; + padding-left: 20px; + padding-right: 330px; + padding-top: 15px; + padding-bottom: 20px; +} +div#featurePoints table tbody tr td { + width: 50%; + vertical-align: top; +} +div#featurePoints table tbody tr td.separator { + width: 1px; + border-left: 1px solid #bebebe; +} +div#featurePoints div.block { + padding: 10px; + color: #8e8e8e; +} +div#featurePoints div.block h3 { + font-weight: normal; + font-size: 12pt; + margin: 0px; + padding: 5px 0px; +} +div#featurePoints div.block ul { + margin: 0px; + margin-left: 20px; + padding: 0px; + list-style-position: outside; + list-style-image: url(../images/old/home/features/bullet.png); +} +div#featurePoints div.block ul li { + font-size: 10pt; + padding: 3px 0px; +} +/* @end */ +/* @end */ +/* @group Login box */ +div#loginBox { + width: 273px; + /* z-index: 40000; */ + + z-index: 19000; + position: relative; + top: -30px; + right: 30px; + float: right; +} +div#loginBox div.header { + height: 25px; + width: 273px; + /* background-image: url(../images/old/home/box/box_top.png); */ + + /* background-color: #fe965f; */ + + background-color: #ff9955; + -webkit-border-top-left-radius: 20px; + -webkit-border-top-right-radius: 20px; + -moz-border-radius-topleft: 20px; + -moz-border-radius-topright: 20px; + border-top-left-radius: 20px; + border-top-right-radius: 20px; +} +div#loginBox div.body { + background-color: #ff9955; + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9955), to(#ff6622), color-stop(1, #333333)); + background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9955); + /* background: url(../images/old/home/box/box_body.png) repeat-x; */ + +} +div#loginBox div.body h3.loading { + margin: 0px; + text-align: center; + padding-top: 60px; + color: white; + font-size: 30pt; + padding-left: 20px; +} +div#loginBox div.footer { + height: 37px; + width: 273px; + /* background-image: url(../images/old/home/box/box_bottom.png); */ + + background-color: #ff6622; + -webkit-border-bottom-left-radius: 20px; + -webkit-border-bottom-right-radius: 20px; + -moz-border-radius-bottomleft: 20px; + -moz-border-radius-bottomright: 20px; + border-bottom-left-radius: 20px; + border-bottom-right-radius: 20px; +} +/* @group Login form */ +div#loginBox h4 { + color: white; + font-size: 16pt; + font-weight: normal; + padding-left: 20px; + margin: 0px; +} +div#loginBox form.loginForm { + padding: 5px 20px 0px; + margin-bottom: 0px; +} +div#loginBox form.loginForm label { + color: white; + font-size: 10pt; + display: block; + padding-top: 5px; +} +div#loginBox form.loginForm input { + width: 230px; + font-size: 14pt; + border: 1px solid #bb4924; + color: #333366; + background-color: white; + padding: 2px 5px; + height: 28px; +} +div#loginBox form.loginForm label.checkbox { + display: inline; +} +div#loginBox form.loginForm .checkbox:hover { + cursor: pointer; +} +div#loginBox form.loginForm input.checkbox { + margin: 10px 8px 0px 0px; + height: auto; + width: auto; + border: 0px; +} +div#loginBox form.loginForm ul { + list-style-type: none; + padding: 0px; + margin: 0px; +} +div#loginBox form.loginForm ul li { + display: block; +} +div#loginBox form.loginForm input.otp { + width: 57px; + display: inline; + padding-left: 0px; + padding-right: 0px; + height: 28px; + font: 8pt monospace; +} +div#loginBox form.loginForm input.submit { + margin: 0px 45px; + width: 140px; + border: 1px solid white; + color: white; + background-color: #dd5500; + padding: 6px; + font-size: 12pt; + height: auto; +} +div#loginBox form.loginForm input.submit:hover { + background-color: #773311; + color: white; + cursor: pointer; +} +/* @group language chooser */ +div#loginBox form.loginForm div.translations { + margin: 15px -20px; + background-color: #cc6622; +} +div#loginBox form.loginForm div.translations h4 { + font-size: 9pt; + padding: 6px 20px 0px; +} +div#loginBox form.loginForm div.translations ul { + margin: 0px; + padding: 5px 10px 10px; + margin-bottom: 15px; +} +div#loginBox form.loginForm div.translations ul li { + font-size: 8pt; + color: #ddaa99; + display: inline-block; + padding: 2px 4px; + background-color: #994422; + margin: 1px; +} +body.ext-gecko div#loginBox form.loginForm div.translations ul li { + display: -moz-inline-box; +} +div#loginBox form.loginForm div.translations ul li.selected { + background-color: #772211; + color: white; +} +div#loginBox form.loginForm div.translations ul li.selected:hover { + cursor: default; +} +div#loginBox form.loginForm div.translations ul li:hover { + cursor: pointer; + color: white; +} +/* @end */ +/* @end */ +/* @end */ +/* @group Create/Look/Offline */ +div.activeFeatures { + float: left; + margin-left: 20px; + height: 100px; +} +div.activeFeatures a { + display: inline-block; + padding-left: 46px; + color: #ff5906; + text-decoration: none; + font-size: 10pt; +} +div.activeFeatures .keepTogether a { + padding-left: 0px; +} +div.activeFeatures a span.payoff { + display: block; + font-size: 13pt; + font-weight: lighter; + color: #9b9689; + margin: 0px; + padding: 0px; +} +/*body.ext-gecko div.activeFeatures a { + display: -moz-inline-box; +}*/ +div.activeFeatures a:hover span.payoff { + color: #666666; +} +div.activeFeatures a:hover span.link { + /* font-weight: bold;*/ + +} +div.activeFeatures div.keepTogether div { + display: inline-block; + padding-right: 15px; +} +/*body.ext-gecko div.activeFeatures div.keepTogether div { + display: -moz-inline-box; +}*/ +div.activeFeatures div.createAccountLink { + display: inline-block; + width: 282; + height: 65px; + /* background-image: url(../images/old/home/register.png); */ + + margin-right: 20px; +} +/*body.ext-gecko div.activeFeatures div.createAccountLink { + display: -moz-inline-box; +}*/ +div.activeFeatures a.createAccountLink { + position: relative; + top: -92px; + left: 5px; +} +div.activeFeatures div.createAccountLink a.createAccountLink span.payoff { + margin-top: 23px; + margin-left: 40px; + font-size: 17pt; + color: #64626c; +} +div.activeFeatures div.createAccountLink a.createAccountLink span.link { + padding-left: 40px; + padding-right: 50px; + padding-bottom: 10px; + font-size: 12pt; +} +div.activeFeatures div.createAccountLink:hover { + /* background-image: url(../images/old/home/register_selected.png);*/ + +} +div.activeFeatures div.createAccountLink:hover a.createAccountLink span.payoff { + color: #54535a; +} +div.activeFeatures div.createAccountLink:hover a.createAccountLink span.link { + color: white; +} +/* +div.activeFeatures div.screenshotLink { + background: url(../images/old/home/look.png) no-repeat 0 -3px; +} + +div.activeFeatures div.offlineLink { + background: url(../images/old/home/download.png) no-repeat 10px -4px; +} +*/ +div.createAccountLink canvas { + width: 282px; + height: 93px; +} +div.activeFeatures .keepTogether canvas { + width: 46px; + height: 46px; + vertical-align: bottom; +} +/* @end */ +/* @end */ +/* @group Footer */ +div.pageHeaderAndBody { + height: 100%; +} +body > div.pageHeaderAndBody { + height: auto; + min-height: 100%; +} +div#pageBody { + min-width: 1013px; + padding-bottom: 90px; +} +div.pageFooter { + margin-top: -90px; + height: 90px; + clear: both; +} +div.footerWrapper { + clear: both; + padding-top: 10px; +} +div.footerContent { + background-color: #eaebe6; + padding: 20px; + font-size: 8pt; +} +/*div.pageFooter div.footerContent div.footerStarIcon {*/ +div.pageFooter div.footerContent canvas.footerStarIcon { + /* background-image: url(../images/old/footer/star.png); */ + + width: 40px; + height: 40px; + float: left; +} +div.pageFooter div.footerContent span.copyright { + padding-left: 10px; + color: #a0a0a0; +} +div.pageFooter div.footerContent a { + padding-left: 50px; + display: block; + color: #888888; + font-weight: bold; + text-decoration: none; +} +div.pageFooter div.footerContent span.applicationVersion { + padding: 8px; + color: #888888; + background-color: #d2d2d2; + position: relative; + top: -40px; + float: right; +} +/* @end */ +/* @group Javascript Alert */ +div#javaScriptAlert div.mask { + position: fixed; + top: 0px; + left: 0px; + right: 0px; + bottom: 0px; + background-color: black; + z-index: 1001; + -moz-opacity: 0.7; + opacity: .70; + filter: alpha(opacity=70); +} +div#javaScriptAlert div.header { + height: 34px; + width: 468; + background-image: url(../images/old/alert/header.png); +} +div#javaScriptAlert div.body { + background-image: url(../images/old/alert/body.png); + padding: 0px 20px 10px 20px; +} +/* +div#javaScriptAlert div.body div.alert { + padding-left: 100px; + background: url(../images/old/alert/alert.png) no-repeat; +} +*/ +/*div#javaScriptAlert div.body img.alert {*/ +div#javaScriptAlert div.body div.alertLogo { + float: left; + background-image: url(../images/old/alert/alert.png); + width: 88px; + height: 88px; +} +div#javaScriptAlert div.body div.alert { + padding-left: 100px; +} +div#javaScriptAlert div.footer { + height: 34px; + width: 468; + background-image: url(../images/old/alert/footer.png); +} +div#javaScriptAlert div.message { + position: relative; + top: -150px; + z-index: 1002; + /* + left: 100px; + right: 100px; +*/ + + margin-left: auto; + margin-right: auto; + max-width: 468px; +} +div#javaScriptAlert div.message h1 { + font-size: 16pt; + margin: 0px; + color: #ff5930; +} +div#javaScriptAlert div.message p { + margin-top: 0px; + color: #999999; +} +div#javaScriptAlert div.message h3 { + font-size: 12pt; + margin-bottom: 0px; + color: #ff5930; +} +div#javaScriptAlert div.message h5 { + margin: 0px; + color: #999999; +} +/* @end */ +/* @group Components + */ +/* @group LoginProgress */ +div.LoginProgress { + position: relative; + left: -190px; + top: -100px; + width: 380px; + height: 200px; + /* background: url(../images/old/loginProgress/background.png); */ + + background-color: #d7d7c0; + -webkit-border-radius: 20px; + -moz-border-radius: 20px; + border-radius: 20px; + -webkit-box-shadow: 5px 5px 7px rgba(0, 0, 0, 0.6); + -moz-box-shadow: 5px 5px 7px rgba(0, 0, 0, 0.6); + box-shadow: 5px 5px 7px rgba(0, 0, 0, 0.6); +} +div.LoginProgress div.header { + height: 40px; +} +div.LoginProgress div.header h3 { + font-size: 12pt; + font-weight: normal; + margin: 0px; + color: #777777; + padding-top: 13px; + padding-left: 18px; +} +div.LoginProgress div.body { + height: 120px; + overflow: auto; + padding-left: 20px; + padding-right: 20px; + background-color: #f1f1e9; + /* + margin-left: 19px; + margin-right: 18px; +*/ + +} +div.LoginProgress div.body div.img { + margin: 10px; + width: 50px; + height: 50px; + float: left; +} +div.LoginProgress div.body div.img.ALERT { + /* background-image: url(../images/old/simpleMessageBox/Alert.png); */ + + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9955), to(#ff6622), color-stop(1, #333333)); + background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9955); + -webkit-border-radius: 25px; + -moz-border-radius: 25px; + border-radius: 25px; +} +div.LoginProgress div.body div.img.ALERT canvas { + width: 50px; + height: 50px; + /* background-image: url(../images/old/simpleMessageBox/excalmationPoint.png); */ + +} +div.LoginProgress div.body div.loadingBar { + position: relative; + top: 51px; + left: 60px; +} +div.LoginProgress div.body div.errorBox p { + color: #787872; + padding-top: 20px; + padding-left: 80px; +} +div.LoginProgress div.footer { + margin-left: 19px; + margin-right: 18px; +} +div.LoginProgress div.footer a { + text-decoration: none; + text-align: center; + color: #787872; + display: block; + font-weight: bold; + font-size: 11pt; + width: 100px; + margin-top: 11px; + margin-left: auto; + margin-right: auto; +} +div.LoginProgress div.footer div.button.default { + text-decoration: underline; +} +div.LoginProgress div.buttonArea { + text-align: center; +} +div.LoginProgress div.button { + display: inline-block; +} +div.LoginProgress div.footer a:hover { + color: #515247; +} +/* @end */ +/* @group SimpleMessagePanel */ +div.SimpleMessagePanel { + position: relative; + left: -225px; + top: -70px; + width: 450px; + height: 140px; + /* + background: url(../images/old/loginProgress/background.png); +*/ + +} +div.SimpleMessagePanel div.header { + height: 17px; + background: url(../images/old/simpleMessageBox/background_header.png) no-repeat; +} +div.SimpleMessagePanel div.body { + /* + height: 120px; + overflow: auto; + margin-left: 19px; + margin-right: 18px; +*/ + + background: url(../images/old/simpleMessageBox/background_body.png) repeat-y; + padding-left: 25px; + padding-right: 25px; + padding-top: 10px; +} +div.SimpleMessagePanel div.body h3 { + font-size: 14pt; + font-weight: normal; + margin: 0px; + padding-top: 4px; + color: #787872; +} +div.SimpleMessagePanel div.body div.img { + width: 66px; + height: 60px; + float: left; +} +div.SimpleMessagePanel div.body p { + margin: 0; + font-size: 10pt; + font-weight: normal; + color: #787872; + padding-top: 10px; + padding-bottom: 5px; + line-height: 1.3; +} +div.SimpleMessagePanel div.body div.img.ALERT { + background: url(../images/old/simpleMessageBox/Alert.png) no-repeat; +} +div.SimpleMessagePanel div.body div.img.INFO { + background: url(../images/old/simpleMessageBox/Info.png) no-repeat; +} +div.SimpleMessagePanel div.body div.buttonArea { + height: 40px; + clear: both; +} +div.SimpleMessagePanel div.body div.buttonArea > div { + float: right; + margin-left: 15px; + margin-top: 10px; +} +div.SimpleMessagePanel div.footer { + height: 25px; + background: url(../images/old/simpleMessageBox/background_footer.png) no-repeat; +} +div.SimpleMessagePanel div.passphrase { + padding-left: 65px; +} +div.SimpleMessagePanel div.passphrase input { + width: 250px; + font-size: 14pt; + border: 1px solid #bb4924; + color: #333366; + background-color: white; + padding: 2px 5px; + height: 28px; +} +div.SimpleMessagePanel div.progressBarWrapper { + margin-left: 80px; +} +/* @end */ +/* @group Button */ +div.button_wrapper { + height: 32px; + background: url(../images/old/button/default_left.png) no-repeat; + cursor: pointer; +} +div.button_wrapper.hover { + background: url(../images/old/button/hover_left.png) no-repeat; +} +div.button_wrapper.clicked { + background: url(../images/old/button/clicked_left.png) no-repeat; +} +div.button_bodyWrapper { + height: 32px; + margin-left: 6px; + padding-right: 6px; + background: url(../images/old/button/default_main.png) repeat-x right 0; +} +div.button_wrapper.hover div.button_bodyWrapper { + background: url(../images/old/button/hover_main.png) repeat-x right 0; +} +div.button_wrapper.clicked div.button_bodyWrapper { + background: url(../images/old/button/clicked_main.png) repeat-x right 0; +} +div.button_body { + text-align: center; + min-width: 60px; + padding: 0px 7px; + padding-top: 8px; +} +div.button_body span { + font-size: 11pt; + color: white; +} +div.button_wrapper.default div.button_body span { + font-weight: bold; +} +/* +div.button_footer { + margin: 0px; + height: 31px; + width: 6px; + background: green url(../images/old/button/default_right.png) no-repeat; +} +*/ +/* @end */ +/* @group Password enthropy */ +input.entropyLevelIndicator { + background: url(../images/old/passwordField/background.png) no-repeat 0 26px; +} +div.passwordEntropyWrapper { + padding: 0px; + border: 1px solid #bb4924; + border-top: 0px; + margin-bottom: 4px; + background-color: white; + margin-right: 3px; + margin-top: -2; +} +div.passwordEntropy { + height: 4px; + font-size: 1pt; + background: url(../images/old/entropyBackground.gif) repeat-x 0 0; + line-height: 3px; +} +/* @end */ +/* @end */ +/* @group Main page */ +/* @group User Info Box */ +div.userInfoBox { + position: absolute; + width: 160px; + height: 120px; + top: 100px; + left: 15px; + /* background-image: url(../images/old/main/userInfoBackground.png); */ + + background-color: #ff9955; + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9a56), to(#ff6723), color-stop(1, #333333)); + background: -moz-linear-gradient(0% 100% 90deg, #ff6723, #ff9a56); + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; + -webkit-box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6); + -moz-box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6); + box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6); + color: white; +} +div.userInfoBox div.body { + padding: 0px 12px; +} +div.userInfoBox div.header { + height: 30px; +} +div.userInfoBox div.header h1 { + font-size: 8pt; + font-weight: normal; + margin: 0px; + padding-top: 12px; + padding-left: 12px; +} +div.userInfoBox div.header a.lockButton { + position: absolute; + top: 8px; + right: 12px; + display: block; + width: 15px; + height: 20px; + text-decoration: none; + background: url(../images/old/lock/unlocked.png) no-repeat -5px -2px; +} +div.userInfoBox div.header a.lockButton:hover { + background: url(../images/old/lock/unlocked_hover.png) no-repeat -5px -2px; +} +div.userInfoBox.locked { + z-index: 19001; +} +div.modalDialogMask.userInfoBoxMask { + -moz-opacity: 0.0; + opacity: .0; + filter: alpha(opacity=0); + z-index: 19000; +} +div.userInfoBox.locked div.header a.lockButton { + background: url(../images/old/lock/locked.png) no-repeat -5px -2px; +} +div.userInfoBox.locked div.header a.lockButton:hover { + background: url(../images/old/lock/locked_hover.png) no-repeat -5px -2px; +} +div.userInfoBox div.body h3 { + font-size: 11pt; + font-weight: bold; + margin: 0px; +} +div.userInfoBox div.body ul { + /* ##### */ + + list-style-image: url(../images/old/main/userInfoBullet.png); + font-size: 8pt; + padding: 0px; + margin: 4px 0px; + list-style-position: inside; + text-shadow: #000000 0 0 0; +} +div.userInfoBox div.body ul li span.number { + font-weight: bold; + padding-right: 3px; +} +div.userInfoBox div.body a { + display: block; + margin-top: 8 + px; + border-top: 1px solid white; + padding-top: 6px; + font-size: 10pt; + font-weight: bold; + color: #d15a22; + text-decoration: none; + border-color: #fe9a5f; +} +div.userInfoBox div.body a:hover { + color: #8c3b15; +} +div.userInfoBox.locked div.body a { + display: none; +} +/* @end */ +/* @group Message Box */ +div.messageBox { + position: absolute; + width: 409px; + height: 29px; + top: 23px; + left: 204px; + background: url(../images/old/main/messageBoxBackground.png); +} +div.messageBox h3 { + display: inline-block; + color: #342f6b; + font-weight: bold; + margin: 7px 2px 0px 12px; + font-size: 10pt; +} +body.ext-gecko div.messageBox h3 { + display: -moz-inline-box; +} +div.messageBox h1 { + color: #342f6b; + display: inline; + font-weight: normal; + margin: 0px 1px; + font-size: 9pt; +} +div.messageBox a { + display: block; + width: 20px; + height: 20px; + float: right; + position: absolute; + right: 5px; + top: 4px; + background-image: url(../images/old/main/messageBoxCloseButton.png); +} +div.messageBox a:hover { + background-image: url(../images/old/main/messageBoxCloseButtonActive.png); +} +/* @end */ +/* @group Side panels */ +div.sidePanels { + /* + position: relative; + top: 110px; +*/ + + float: left; + margin-top: 106px; + margin-left: 20px; + width: 160px; +} +/* @group Tab Side Panel */ +div.tabSidePanel { + margin-right: -10px; + /* + position: absolute; + width: 250px; + height: 250px; + top: 250px; + left: 10px; +*/ + +} +div.tabSidePanel ul { + margin: 0px; + padding-left: 0px; + list-style-type: none; + color: #f78b46; +} +/* @group Main tabs */ +div.tabSidePanel ul.mainTabs { + margin: 0px; +} +div.tabSidePanel ul.mainTabs li { + /* margin-bottom: 6px;*/ + +} +div.tabSidePanel ul.mainTabs li a { + display: block; + line-height: 30px; + height: 43px; + padding-left: 40px; + color: #ff6621; + margin: 0px; + font-weight: normal; + font-size: 13pt; + text-decoration: none; +} +div.tabSidePanel ul.mainTabs li div.selectionHighlighter { + display: none; +} +div.tabSidePanel ul.mainTabs li.selected div.selectionHighlighter { + display: block; + position: absolute; + left: 154px; + margin-top: -43px; +} +/* +div.tabSidePanel ul.mainTabs li.selected div.selectionHighlighter div.selectionHighlighterIcon { + background-image: url(../images/main/tabs/selectionHighligher.png); + width: 50px; + height: 34px; + float: left; + z-index: 35000; + border: 1px solid red; +} +*/ +div.tabSidePanel ul.mainTabs li.selected div.selectionHighlighter a.add { + font-size: 14pt; + font-weight: bold; + position: relative; + top: -34px; + right: 16px; + background: none; + color: #c0531b; + padding-left: 15px; +} +div.tabSidePanel ul.mainTabs li.selected div.selectionHighlighter a.add:hover { + color: white; +} +div.tabSidePanel ul.mainTabs li.selected div.selectionHighlighter a.add span { + font-size: 8pt; + vertical-align: middle; +} +div.tabSidePanel ul.mainTabs li.selected div.selectionHighlighter a.add h3 { + display: inline; + padding-left: 5px; +} +div.tabSidePanel ul.mainTabs li.cards.selected a { + margin-left: -10px; + padding-left: 50px; + color: white; + background: url(../images/old/main/tabs/cardsBackground.png) -9px -14px; +} +div.tabSidePanel ul.mainTabs li.cards.selected a:hover { + background: url(../images/old/main/tabs/cardsBackground.png) -9px -14px; +} +div.tabSidePanel ul.mainTabs li.cards a { + background: url(../images/old/main/tabs/cardsBackground.png) -19px -63px; +} +div.tabSidePanel ul.mainTabs li.cards a:hover { + background: url(../images/old/main/tabs/cardsBackground.png) -19px -110px; +} +div.tabSidePanel ul.mainTabs li.directLogins.selected a { + margin-left: -10px; + padding-left: 50px; + color: white; + /* background: url(../images/old/main/tabs/directLoginBackground.png) 0 -1px; */ + + background: url(../images/old/main/tabs/directLoginBackground.png) -9px -14px; +} +div.tabSidePanel ul.mainTabs li.directLogins.selected a:hover { + color: white; + /* background: url(../images/old/main/tabs/directLoginBackground.png) 0 -1px; */ + + background: url(../images/old/main/tabs/directLoginBackground.png) -9px -14px; +} +div.tabSidePanel ul.mainTabs li.directLogins a { + /* background: url(../images/old/main/tabs/directLoginBackground.png) 0 -34px; */ + + background: url(../images/old/main/tabs/directLoginBackground.png) -19px -63px; +} +div.tabSidePanel ul.mainTabs li.directLogins a:hover { + /* background: url(../images/old/main/tabs/directLoginBackground.png) 0 -67px; */ + + background: url(../images/old/main/tabs/directLoginBackground.png) -19px -110px; +} +/* @end */ +/* @group Other tabs */ +div.tabSidePanel ul.otherTabs { + margin: 10px 0px; +} +div.tabSidePanel ul.otherTabs li { + margin-top: -4px; +} +div.tabSidePanel ul.otherTabs li div.selectionHighlighter { + display: none; +} +div.tabSidePanel ul.otherTabs li.selected div.selectionHighlighter { + display: block; + position: absolute; + left: 154px; + margin-top: -42px; +} +div.tabSidePanel ul.otherTabs a { + display: block; + line-height: 36px; + height: 43px; + padding-left: 40px; + color: #ff6621; + text-decoration: none; + /* background: url(../images/old/main/tabs/itemsBackground.png) -10px -49px; */ + +} +div.tabSidePanel ul.otherTabs li.selected a { + /* background: url(../images/old/main/tabs/itemsBackground.png) 0 -1px; */ + + /* background: url(../images/old/main/tabs/itemsBackground.png) 0 -67px; */ + + margin-left: -10px; + padding-left: 50px; + background: url(../images/old/main/tabs/itemsBackground.png) 1px -96px; + color: white; +} +div.tabSidePanel ul.otherTabs a:hover { + /* background: url(../images/old/main/tabs/itemsBackground.png) 0 -34px; */ + + background: url(../images/old/main/tabs/itemsBackground.png) -10px -49px; +} +/* @end */ +/* @end */ +/* @group Tag Side Panel */ +div.tagSidePanel { + /* + position: relative; + width: 250px; + min-height: 100px; + left: 10px; +*/ + + margin-right: -8px; +} +div.tagSidePanel div.header { + height: 50px; + background-image: url(../images/old/main/tabs/tagsBackground.png); +} +div.tagSidePanel div.header h1 { + padding-left: 52px; + padding-top: 14px; + font-size: 14pt; + font-weight: normal; + color: #888888; +} +div.tagSidePanel div.body { + background: url(../images/old/main/tabs/tagsBackground.png) -255px; +} +div.tagSidePanel div.footer { + height: 10px; + background: url(../images/old/main/tabs/tagsBackground.png) -510px -40px; +} +div.tagSidePanel ul.tags { + margin: 0px; + list-style-type: none; + padding: 0px; +} +div.tagSidePanel ul.tags li a { + display: block; + font-size: 9pt; + text-decoration: none; + color: #ff6621; + padding: 0px 4px 0px 15px; + line-height: 20px; +} +div.tagSidePanel ul.tags li a:hover { + background-color: #dddddd; +} +div.tagSidePanel ul.tags li span.tagCardinality { + float: right; + font-size: 8pt; + color: #999999; + margin-right: 15px; + margin-top: -17px; +} +div.tagSidePanel ul.tags li.selected a { + background-color: #d4d5cf; +} +div.tagSidePanel ul.tags li.selected a:hover { + background-color: #d4d5cf; +} +div.tagSidePanel ul.tags li.selected a { + font-weight: bold; +} +/* @end */ +/* @group Group Side Panel */ +div.groupSidePanel { + margin-right: -10px; + /* + position: relative; + width: 250px; + min-height: 100px; + left: 10px; +*/ + +} +div.groupSidePanel div.header { + height: 50px; + background-image: url(../images/old/main/tabs/groupsBackground.png); +} +div.groupSidePanel div.header h1 { + padding-left: 52px; + padding-top: 14px; + font-size: 14pt; + font-weight: normal; + color: white; +} +div.groupSidePanel div.header a { + float: right; + margin-top: -30px; + margin-right: 20px; + text-decoration: none; + color: #666666; + font-size: 9pt; + line-height: 18px; +} +div.groupSidePanel div.header a:hover { + color: #444444; +} +div.groupSidePanel div.body { + background: url(../images/old/main/tabs/groupsBackground.png) -255px; +} +div.groupSidePanel div.footer { + height: 10px; + background: url(../images/old/main/tabs/groupsBackground.png) -510px -39px; +} +div.groupSidePanel ul.groups { + margin: 0px; + list-style-type: none; + padding: 0px; +} +div.groupSidePanel ul.groups li a { + display: block; + font-size: 9pt; + text-decoration: none; + color: white; + padding: 0px 4px 0px 15px; + line-height: 20px; +} +div.groupSidePanel ul.groups li a:hover { + background-color: #aaaaaa; +} +div.groupSidePanel ul.groups li span.groupCardinality { + float: right; + font-size: 8pt; + color: #dddddd; + margin-right: 15px; + margin-top: -17px; +} +div.groupSidePanel ul.groups li.selected a { + background-color: #bbbbbb; +} +div.groupSidePanel ul.groups li.selected a:hover { + background-color: #bbbbbb; +} +div.groupSidePanel ul.groups li.selected a { + font-weight: bold; +} +/* @end */ +/* @end */ +/* @group MainPanels */ +div.mainPanels { + float: left; + width: 833px; + margin-top: -38px; + /* + position: relative; + width: 100%; + min-height: 600px; + top: -40px; + left: 250px; +*/ + +} +div.mainFooter { + clear: both; +} +/* @end */ +/* @group Grids */ +/* @group grid Component */ +/* @group delete */ +/*div.body div.rows table.rows tbody tr td.delete */ +div.delete, div.new { + padding-left: 5px; + height: 19px; +} +div.new span, div.delete span { + margin: 0px; + padding: 0px; + border: 0px; + display: inline-block; + height: 19px; + padding-right: 6px; +} +div.new span a, div.delete span a { + white-space: nowrap; +} +div.delete:hover { + background: url(../images/old/delete_background_left.png) no-repeat 0; +} +div.delete:hover span { + background: url(../images/old/delete_background.png) no-repeat right 0; +} +div.new:hover { + background: url(../images/old/new_background_left.png) no-repeat 0; +} +div.new:hover span { + background: url(../images/old/new_background.png) no-repeat right 0; +} +/* +tr.selected div.delete { + background: url(../images/old/delete_background_left.png) no-repeat 0; +} +tr.selected div.delete span { + background: url(../images/old/delete_background.png) no-repeat right 0; +} +*/ +div.body div.rows table.rows tbody tr td.delete div.delete span a { + visibility: hidden; + font-size: 8pt; + vertical-align: -13px; + color: black; +} +div.body div.rows table.rows tbody tr.selected td.delete div.delete span a { + visibility: visible; +} +div.body div.rows table.rows tbody tr:hover td.delete div.delete span a { + visibility: visible; +} +div.body div.rows table.rows tbody tr:hover td.delete div.delete:hover span a { + color: white; +} +/* +div.body div.rows table.rows tbody tr.selected td.delete div.delete span a { + color: white; +} +*/ +/* @end */ +/* @group header */ +div.gridComponent table.rows thead tr th { + text-align: left; + height: 30px; + vertical-align: bottom; +} +div.gridComponent table.rows thead tr th.sortable span { + cursor: pointer; +} +div.gridComponent table.rows thead tr th.sortable span a { + margin-left: 5px; + padding-left: 10px; +} +div.gridComponent table.rows thead tr th.directLoginTH { + width: 420px; +} +div.gridComponent table.rows thead tr th.latestUpdateTH { + width: 100px; +} +div.gridComponent table.rows thead tr th.commandsTH { + width: 150px; +} +div.gridComponent table.rows thead a { + text-decoration: none; +} +div.gridComponent table.rows thead span { + font-weight: normal; + font-size: 9pt; + line-height: 20px; +} +div.gridComponent div.header div.headerSlot { + float: right; +} +/* @end */ +div.mainPanels div.gridComponent div.body table.rows td.favicon { + padding-left: 25px; +} +div.mainPanels div.gridComponent div.body table.rows td.favicon img { + width: 16px; + height: 16px; + border: 0px; +} +/* @end */ +/* @group Card Grid */ +/* @group DirectLogin links */ +div.gridComponent th.directLoginTH span { + margin-left: 7px; +} +td.card_directLogins div { + display: inline-table; +} +td.card_directLogins span { + display: inline-block; +} +/* +td.card_directLogins a { + display: inline-table; + height: 19px; + + padding-right: 7px; +} + +td.card_directLogins a:hover { + background: url(../images/old/directLink_background.png) right 0; +} +*/ +div.card_directLogin { + display: inline-block; + height: 19px; + padding-left: 7px; +} +div.card_directLogin_ellipses span { + padding-bottom: 2px; +} +div.card_directLogin div.card_directLogin_body { + display: inline-block; + height: 19px; + padding-right: 8px; + background-position: left; +} +div.card_directLogin div.card_directLogin_body a { + vertical-align: -14px; +} +/*div.card_directLogin:hover {*/ +div.card_directLogin:hover { + background: url(../images/old/directLink_background_left.png) no-repeat 0 0; +} +/*div.card_directLogin:hover div {*/ +div.card_directLogin:hover div.card_directLogin_body { + background: url(../images/old/directLink_background.png) right 0; +} +/* @group DirectLogin Popup */ +div.DirectLoginListPopup { + position: absolute; + width: 184px; +} +div.DirectLoginListPopup div.DirectLoginListPopup_body { + background-image: url(../images/old/directLogins_background.png); + padding-top: 8px; +} +div.DirectLoginListPopup div.DirectLoginListPopup_footer { + height: 8px; + background-image: url(../images/old/directLogins_background_bottom.png); +} +div.DirectLoginListPopup div.DirectLoginListPopup_body ul { + margin: 0px; + padding-left: 13px; + list-style: none; +} +div.DirectLoginListPopup div.DirectLoginListPopup_body ul li { + padding-top: 4px; + height: 20px; + padding-right: 10px; + white-space: nowrap; +} +div.DirectLoginListPopup div.DirectLoginListPopup_body ul li div { + padding-right: 10px; + overflow: hidden; +} +div.DirectLoginListPopup div.DirectLoginListPopup_body ul li img.favicon { + padding-left: 9px; + padding-right: 5px; +} +div.DirectLoginListPopup div.DirectLoginListPopup_body ul li a { + text-decoration: none; + color: white; + font-weight: normal; + font-size: 10pt; + vertical-align: 3px; + white-space: nowrap; + padding-right: 8px; +} +div.DirectLoginListPopup div.DirectLoginListPopup_body ul li:hover { + /* background-color: #a5a696; */ + + /* background-color: #7b7d70; */ + + background-color: rgba(123, 125, 112, 0.5); +} +div.DirectLoginListPopup div.DirectLoginListPopup_body ul li:hover a { + background: url(../images/old/directLink_no_background.png) right; +} +/* @end */ +/* @end */ +div.mainPanels div.gridComponent div.header { + /* + height: 90px; + background: url(../images/old/main/blocks/cardGridBackground.png) no-repeat; +*/ + + background: url(../images/old/main/blocks/cardGridBackground.png) no-repeat; + padding-left: 40px; + padding-right: 40px; + padding-top: 20px; + padding-bottom: 10px; +} +div.mainPanels div.gridComponent div.header form.search { + height: 32px; + margin: 0px; +} +div.mainPanels div.gridComponent div.header form.search div.clearSearchButton { + position: absolute; + margin-left: 192px; + width: 22px; + height: 22px; + margin-top: 6px; + background: url(../images/old/filter/clearFilter_notSelected.png) no-repeat; +} +div.mainPanels div.gridComponent div.header form.search div.clearSearchButton:hover { + background: url(../images/old/filter/clearFilter_selected.png) no-repeat; + cursor: pointer; +} +div.mainPanels div.gridComponent div.header form.search div.search { + display: block; + float: left; + width: 217px; +} +div.mainPanels div.gridComponent div.header form.search input.search { + border: 1px solid #76786a; + color: #666666; + font-size: 12pt; + width: 100%; + padding: 4px; + padding-left: 24px; + padding-right: 26px; + background: #e8ecde url(../images/old/main/grid/search.png) no-repeat 2px 4px; +} +div.mainPanels div.gridComponent div.header form.search input.search.disabled { + disabled: disabled; +} +div.mainPanels div.gridComponent div.header form.search input.search.running { + background: #e8ecde url(../images/old/main/grid/running_search.gif) no-repeat 4px 5px; +} +div.mainPanels div.gridComponent div.body { + clear: both; + background: url(../images/old/main/blocks/cardGridBackground.png) repeat-y -836px; +} +div.mainPanels div.gridComponent div.footer { + background: url(../images/old/main/blocks/cardGridBackground.png) 834px -28px; + height: 35px; +} +div.mainPanels div.gridComponent div.body h1 { + margin: 0px; +} +div.mainPanels div.gridComponent div.body div.rows { + margin-left: 9px; + margin-right: 6px; + min-height: 582px; + background: url(../images/old/main/blocks/cardGridStripes.png) 0 7px; +} +div.mainPanels div.gridComponent.noRows div.body table.rows thead, div.mainPanels div.gridComponent.empty div.body table.rows thead { + visibility: hidden; +} +div.mainPanels div.gridComponent.empty div.body div.rows { + background: #eaebe6 url(../images/old/lock/background_star.png) no-repeat center center; +} +div.mainPanels div.gridComponent.noRows div.body div.rows { + background: #eaebe6; +} +div.mainPanels div.gridComponent div.body table.rows { + display: block; + width: 100%; +} +div.mainPanels div.gridComponent div.body table.rows tbody tr.odd.selected { + background-color: #a5a696; +} +div.mainPanels div.gridComponent div.body table.rows tbody tr.even.selected { + background-color: #a5a696; +} +div.mainPanels div.gridComponent div.body table.rows tbody tr.selected td a { + color: #f3f4eb; +} +div.mainPanels div.gridComponent div.body table.rows tbody tr.odd { + background-color: #d4d5cf; +} +div.mainPanels div.gridComponent div.body table.rows tbody tr.even { + background-color: #eaebe6; +} +div.mainPanels div.gridComponent div.body table.rows tbody tr.odd:hover { + background-color: #a5a696; +} +div.mainPanels div.gridComponent div.body table.rows tbody tr.even:hover { + background-color: #a5a696; +} +div.mainPanels div.gridComponent div.body table.rows tbody tr td { + height: 23px; + max-height: 23px; + /* + white-space: nowrap; + overflow: hidden; +*/ + +} +div.mainPanels div.gridComponent div.body table.rows tbody tr td span { + color: #828479; + font-size: 10pt; +} +div.mainPanels div.gridComponent div.body table.rows tbody tr td a { + color: #828479; + font-size: 10pt; + text-decoration: none; +} +div.mainPanels div.gridComponent div.body table.rows tbody tr:hover td span { + color: #f3f4eb; +} +div.mainPanels div.gridComponent div.body table.rows tbody tr.selected td span { + color: #f3f4eb; +} +div.mainPanels div.gridComponent div.body table.rows tbody tr:hover td a { + color: #f3f4eb; +} +div.mainPanels div.gridComponent div.body table.rows tbody tr td.title a { + font-weight: bold; +} +div.mainPanels div.gridComponent div.body table.rows tbody tr td img.favicon { + float: right; + padding-right: 6px; +} +/* @group header */ +div.gridComponent table.rows thead img { + padding-left: 10px; + vertical-align: middle; +} +div.gridComponent table.rows thead tr th { + background-color: #eaebe6; + border-bottom: 1px solid #b3b4af; +} +div.gridComponent table.rows thead span { + color: #8c8f7e; +} +div.gridComponent table.rows thead tr th.unsorted span.sortable a { + background-image: url(../images/old/main/grid/unsorted.png); +} +div.gridComponent table.rows thead tr th.descending span.sortable a { + background-image: url(../images/old/main/grid/descending.png); +} +div.gridComponent table.rows thead tr th.ascending span.sortable a { + background-image: url(../images/old/main/grid/ascending.png); +} +div.gridComponent table.rows thead tr th.faviconTH { + width: 53px; +} +div.gridComponent table.rows thead tr th.titleTH { + width: 200px; + max-width: 200px; +} +div.gridComponent table.rows thead tr th.deleteTH { + width: 50px; +} +/* @end */ +/* @end */ +/* @group Direct login Grid */ +/* +div.mainPanels div.directLoginGrid div.header { +/* + height: 90px; + background: url(../images/old/main/blocks/cardGridBackground.png) no-repeat; +* / +} + +div.mainPanels div.directLoginGrid div.header form.search { + background: url(../images/old/main/blocks/directLoginGridBackground.png) no-repeat; + padding-left: 40px; + padding-top: 20px; + padding-bottom: 10px; + margin: 0px; +} + +div.mainPanels div.directLoginGrid div.header form.search input.search { + border: 1px solid #76786a; + color: #666666; + font-size: 12pt; + padding: 4px; + background-color: #e8ecde; +} + +div.mainPanels div.directLoginGrid div.header form.search input.searchButton { + background-color: #858877; + border: 0px; + color: white; + font-size: 10pt; +} + +div.mainPanels div.directLoginGrid div.body { + background: url(../images/old/main/blocks/directLoginGridBackground.png) repeat-y -836px; +} + +div.mainPanels div.directLoginGrid div.footer { + background: url(../images/old/main/blocks/directLoginGridBackground.png) 834px -28px; + height: 35px; +} + +div.mainPanels div.directLoginGrid div.body h1 { + margin: 0px; +} + +div.mainPanels div.directLoginGrid div.body div.rows { + margin-left: 9px; + margin-right: 6px; + min-height: 582px; + background: url(../images/old/main/blocks/directLoginGridStripes.png) 0 7px; +} + +div.mainPanels div.directLoginGrid div.body table.rows { + display: block; + width: 100%; +} + +div.mainPanels div.directLoginGrid div.body table.rows img { + border: 0px; +} + +div.mainPanels div.directLoginGrid div.body table.rows tbody tr.even { + background-color: #787666; +} + +div.mainPanels div.directLoginGrid div.body table.rows tbody tr.odd { + background-color: #646351; +} + +div.mainPanels div.directLoginGrid div.body table.rows tbody tr.odd:hover { + background-color: #d1d4c6; +} + +div.mainPanels div.directLoginGrid div.body table.rows tbody tr.even:hover { + background-color: #d1d4c6; +} + +div.mainPanels div.directLoginGrid div.body table.rows tbody tr td { + height: 23px; + color: #e1e0d6; + font-size: 10pt; +} + +div.mainPanels div.directLoginGrid div.body table.rows tbody tr:hover td { + color: #777867; +} + +div.mainPanels div.directLoginGrid div.body table.rows tbody tr td.title { + font-weight: bold; +} + +div.directLoginGrid div.body table.rows tbody tr a { + color: #e1e0d6; + text-decoration: none; +} + +div.directLoginGrid div.body table.rows tbody tr:hover a { + color: #777867; +} +*/ +/* @group DirectLogin links */ +/* +td.card_directLogins div { + display: inline-table; +} + +td.card_directLogins span { + display: inline-table; +} +*/ +div.directLogin_directLogin { + display: inline-block; + height: 19px; + padding-left: 7px; +} +div.directLogin_directLogin div.directLogin_directLogin_body { + display: inline-block; + height: 19px; + padding-right: 8px; + background-position: left; +} +div.directLogin_directLogin div.directLogin_directLogin_body a { + vertical-align: -14px; +} +div.directLogin_directLogin:hover { + background: url(../images/old/directLink_background_left.png) no-repeat 0 0; +} +div.directLogin_directLogin:hover div.directLogin_directLogin_body { + background: url(../images/old/directLink_background.png) right 0; +} +table.rows tbody tr td div.directLogin_directLogin:hover div.directLogin_directLogin_body a { + color: #f3f4eb; +} +/* @end */ +/* @group header */ +div.directLoginGrid table.rows thead span { + color: #e1e0d6; +} +div.directLoginGrid table.rows thead tr th { + background-color: #787762; + border-bottom: 1px solid #999883; +} +div.directLoginGrid table.rows thead tr th.faviconTH { + min-width: 53px; + width: 53px; +} +div.directLoginGrid table.rows thead tr th.titleTH { + min-width: 250px; + width: 250px; +} +div.directLoginGrid table.rows thead tr th.titleTH span { + margin-left: 7px; +} +div.directLoginGrid table.rows thead tr th.strengthTH { + width: 100px; +} +div.directLoginGrid table.rows thead tr th.cardTitleTH { + width: 400px; +} +div.directLoginGrid table.rows thead tr th.bookmarkableLinkTH { + width: 64px; +} +div.directLoginGrid table.rows thead tr th.deleteTH { + width: 50px; +} +div.directLoginGrid table.rows thead tr th.latestAccessTH { + width: 100px; +} +div.directLoginGrid table.rows thead tr th.commandsTH { + width: 100px; +} +/* +div.directLoginGrid table.rows thead a { + font-weight: normal; + text-decoration: none; + color: #e9e9df; + font-size: 9pt; + line-height: 20px; +} +*/ +div.directLoginGrid table.rows thead img { + padding-left: 10px; + vertical-align: middle; +} +div.directLoginGrid table.rows thead tr th.unsorted span.sortable a { + background: url(../images/old/main/grid/directLogins/unsorted.png) no-repeat; +} +div.directLoginGrid table.rows thead tr th.descending span.sortable a { + background: url(../images/old/main/grid/directLogins/descending.png) no-repeat; +} +div.directLoginGrid table.rows thead tr th.ascending span.sortable a { + background: url(../images/old/main/grid/directLogins/ascending.png) no-repeat; +} +/* @end */ +/* @end */ +/* @end */ +/* @end */ +/* @group other Panels */ +/* @group common styles */ +div.subPanelTabs ul { + margin: 0px; + margin-right: 7px; + padding: 0px; +} +div.subPanelTabs ul li { + display: inline-block; + vertical-align: middle; + /* width: 130px; */ + + height: 50px; + /* border-right: 1px solid #a5a79c; + border-bottom: 1px solid #a5a79c;*/ + + border-right: 1px solid #eef0e3; + border-bottom: 1px solid #d5d5bc; +} +div.subPanelTabs ul li.first:hover { + /* background: url(../images/old/main/blocks/otherPanelBackground_selected.png) no-repeat -9px -5px; */ + +} +div.subPanelTabs ul li:hover { + /* background: url(../images/old/main/blocks/otherPanelBackground_selected.png) no-repeat -45px -5px; */ + + border-right: 1px solid #d5d5bc; + background-color: #eef0e3; +} +div.subPanelTabs ul li a { + color: #787872; + text-decoration: none; + display: block; + text-align: center; + padding-top: 15px; + padding-left: 20px; + padding-right: 20px; + font-size: 13pt; +} +div.subPanelTabs ul li.first { + /* background: url(../images/old/main/blocks/otherPanelBackground_selected.png) no-repeat -9px -5px; */ + + -webkit-border-top-left-radius: 20px; + -moz-border-radius-topleft: 20px; + border-top-left-radius: 20px; +} +div.subPanelTabs ul li.selected { + /* background: url(../images/old/main/blocks/otherPanelBackground_selected.png) no-repeat -45px -5px; */ + + background-color: #eef0e3; + border-bottom: 1px solid #eef0e3; + border-right: 1px solid #d5d5bc; +} +div.subPanelTabs ul li.selected:hover { + border-right: 1px solid #d5d5bc; +} +div.subPanelTabs ul li.selected a { + color: #444440; +} +div.subPanelContent { + padding-top: 20px; + padding-left: 30px; + padding-right: 30px; + min-height: 280px; + color: #787872; + margin: 0px 6px 0 9px; +} +div.subPanelContent ul { + margin: 0px; + padding: 0px; + list-style-type: none; +} +div.subPanelContent ul li.selected { + display: block; +} +div.subPanelContent ul li { + display: none; +} +div.subPanelContent h3 { + margin: 0px; + border: 0px; + padding: 0px; +} +/* @end */ +/* @group mainPanels otherPanel */ +div.mainPanels div.otherPanel { + margin: 5px 10px; + background-color: #eef0e3; + -webkit-border-radius: 20px; + -moz-border-radius: 20px; + border-radius: 20px; + -webkit-box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6); + -moz-box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6); + box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6); +} +div.mainPanels div.otherPanel div.header { + /* background: url(../images/old/main/blocks/otherPanelBackground.png) no-repeat; */ + + /* + height: 90px; +*/ + + background-color: #d5d5bc; + /* padding-left: 9px; + padding-top: 5px; */ + + margin: 0px; + margin-bottom: 0px; + -webkit-border-top-left-radius: 20px; + -webkit-border-top-right-radius: 20px; + -moz-border-radius-topleft: 20px; + -moz-border-radius-topright: 20px; + border-top-left-radius: 20px; + border-top-right-radius: 20px; +} +div.mainPanels div.otherPanel div.body { + /* background: url(../images/old/main/blocks/otherPanelBackground.png) repeat-y -836px; */ + + margin: 0px; + border: 0px; + padding: 0px; +} +div.mainPanels div.otherPanel div.footer { + /* background: url(../images/old/main/blocks/otherPanelBackground.png) 834px -18px; */ + + height: 45px; +} +div.mainPanels div.otherPanel div.body h1 { + margin: 0px; +} +/* @end */ +/* @group Account */ +form.changePassphrase div.currentCredentials, form.changePassphrase div.newPassphrase { + float: left; + padding: 10px 20px; +} +form.changePassphrase label { + display: inline-block; + width: 150px; +} +form.changePassphrase div.confirm { + clear: both; + padding: 10px 20px; +} +form.changePassphrase div.confirm label { + width: 500px; +} +div.accountPanel h3.manageOTP { + margin-top: 20px; + margin-left: -20px; + padding-top: 10px; + padding-left: 20px; + border-top: 1px solid #aaaaaa; +} +/* @end */ +/* @end */ +/* @group Message Panel (?) */ +/* +div.messagePanelWrapper div.mask { + position: fixed; + top: 0px; + left: 0px; + right: 0px; + bottom: 0px; + + background-color: black; + z-index:50001; + + -moz-opacity: 0.0; + opacity:.0; + filter: alpha(opacity=0); +/ * + -moz-opacity: 0.7; + opacity:.70; + filter: alpha(opacity=70); +* / +} + +div.messagePanelFrame { + border: 1px solid white; + z-index:50002; +/ * + width: 443px; + height: 155px; + position: fixed; + top: 205px; + left: 260px; + margin-left: auto; + margin-right: auto; + max-width: 468px; +* / +} + + +div.messagePanel { + position: fixed; + z-index:50003; + top: 0px; + left: 0px; +/ * + margin-left: auto; + margin-right: auto; + max-width: 468px; + top: 200px; + left: 250px; + left: 100px; + right: 100px; +* / +} + +div.messagePanel div.header { + height: 34px; + width: 468; + background-image: url(../images/old/alert/header.png); +} + +div.messagePanel div.body { + background-image: url(../images/old/alert/body.png); + padding: 0px 20px 10px 20px; + min-height: 100px; +} +/ * +div#javaScriptAlert div.body div.alert { + padding-left: 100px; + background: url(../images/old/alert/alert.png) no-repeat; +} +* / + +div.messagePanel div.body img.alert { + float: left; +} + +div.messagePanel div.body div.alert { + padding-left: 100px; +} + +div.messagePanel div.footer { + height: 34px; + width: 468; + background-image: url(../images/old/alert/footer.png); +} + +div.messagePanel div.message h1 { + font-size: 16pt; + margin: 0px; + color: #ff5930; +} + +div.messagePanel div.message p { + margin-top: 0px; + color: #999999; +} + +div.messagePanel div.message h3 { + font-size: 12pt; + margin-bottom: 0px; + color: #ff5930; +} + +div.messagePanel div.message h5 { + margin: 0px; + color: #999999; +} + + +*/ +/* @end */ +/* @group LoginProgress (?) */ +/* +div#loginProgress { + position: relative; + left: -198px; + top: -118px; + width: 397px; + height: 236px; + background: url(../images/old/loginProgress/background.png); +} + +div#loginProgress div.header { + height: 52px; +} + +div#loginProgress div.header h3 { + font-size: 12pt; + font-weight: normal; + margin: 0px; + color: #787872; + padding-top: 25px; + padding-left: 35px; +} + +div#loginProgress div.body { + height: 120px; + overflow: auto; + margin-left: 19px; + margin-right: 18px; +} + +div#loginProgress div.footer { + margin-left: 19px; + margin-right: 18px; +} + +div#loginProgress div.footer a { + font-weight: bold; + text-decoration: none; + text-align: center; + color: #787872; + display: block; + font-size: 11pt; + width: 100px; + margin-top: 13px; + margin-left: auto; + margin-right: auto; +} + +div#loginProgress div.footer a:hover { + color: #515247; +} + +*/ +/* @end */ +div#modalDialogMask, div.modalDialogMask { + z-index: 20000; + /* position: absolute; */ + + position: fixed; + top: 0; + left: 0; + -moz-opacity: 0.5; + opacity: .50; + filter: alpha(opacity=50); + /* background-color: #cccccc; */ + + background-color: #000000; + width: 100%; + height: 100%; + zoom: 1; +} +div#modalDialogFrame, div.modalDialogFrame { + position: absolute; + /* border: 1px solid white; */ + + -moz-opacity: 0.5; + opacity: .50; + filter: alpha(opacity=50); + background-color: #333333; + z-index: 20001; + -webkit-border-radius: 20px; + -moz-border-radius: 20px; + border-radius: 20px; +} +div#modalDialog, div.modalDialog { + z-index: 20001; +} +/*div#modalDialog.scrollable,*/ +div.modalDialog.scrollable { + position: absolute; + top: 0; + left: 50%; +} +/*div#modalDialog.fixed,*/ +div.modalDialog.fixed { + position: fixed; + top: 40%; + left: 50%; +} +div#modalDialog div, div.modalDialog div { + z-index: 20002; + list-style-type: circle; +} +div.modalDialogMask.simpleMessagePanelMask { + z-index: 20010; +} +div.modalDialogFrame.simpleMessagePanelMask { + z-index: 20011; +} +div.modalDialog.simpleMessagePanelMask { + z-index: 20011; +} +div.modalDialog.simpleMessagePanelMask div { + z-index: 20012; +} +/* @group Bookmarklet */ +div.bookmarklet div.bookmarklet_link { + /* + padding-top: 5px; + padding-left: 4px; + padding-right: 3px; + + float: right; + margin-top: 12px; + margin-right: 13px; +*/ + + height: 34px; +} +div.bookmarklet div.bookmarklet_link a { + color: #838975; + text-decoration: none; + font-weight: bold; + font-size: 10pt; + /* + display: block; + text-align: right; + padding-top: 7px; + padding-right: 11px; + padding-bottom: 6px; +*/ + +} +div.bookmarklet div.bookmarklet_link a div.icon { + background: url(../images/old/bookmarklet/placeholder_icon.png) no-repeat 0 0; + float: left; + width: 34px; + height: 34px; +} +div.bookmarklet div.bookmarklet_link a:hover div.icon { + background: url(../images/old/bookmarklet/placeholder_selected_icon.png) no-repeat 0 0; +} +div.bookmarklet div.bookmarklet_link a div.text { + display: block; + float: right; + background: url(../images/old/bookmarklet/placeholder.png) no-repeat right 0; + white-space: nowrap; + height: 34px; +} +div.bookmarklet div.bookmarklet_link a:hover div.text { + background: url(../images/old/bookmarklet/placeholder_selected.png) no-repeat right 0; +} +div.bookmarklet div.bookmarklet_link a div.text span { + display: block; + padding-top: 10px; + padding-right: 10px; + padding-left: 6px; + clear: both; +} +/* @end */ +/* @group Tooltip */ +/* +div#Clipperz_PM_UI_Common_Components_Tooltip_wrapperNode { + position: absolute; + top: 0px; + left: 0px; +} +*/ +div.tooltip { + position: absolute; + z-index: 30001; +} +div.tooltip div.tooltip_body { + position: absolute; +} +div.tooltip div.tooltip_arrow { + position: absolute; +} +div.tooltip.BELOW div.tooltip_arrow { + background: url(../images/old/tooltips/top_arrow.png) no-repeat; +} +div.tooltip.ABOVE div.tooltip_arrow { + background: url(../images/old/tooltips/bottom_arrow.png) no-repeat; +} +div.tooltip.LEFT div.tooltip_arrow { + background: url(../images/old/tooltips/right_arrow.png) no-repeat; +} +div.tooltip.RIGHT div.tooltip_arrow { + /* margin-top: 7px; */ + + background: url(../images/old/tooltips/left_arrow.png) no-repeat; +} +div.tooltip.RIGHT div.tooltip_body { + /* padding-left: 13px; */ + +} +div.tooltip div.tooltip_body div.tooltip_text { + width: 171px; + background: url(../images/old/tooltips/body.png) no-repeat center top; +} +div.tooltip.LEFT div.tooltip_body div.tooltip_text, div.tooltip.RIGHT div.tooltip_body div.tooltip_text { + min-height: 45px; +} +div.tooltip div.tooltip_body span { + display: block; + padding: 10px; + padding-bottom: 4px; + font-size: 10pt; + color: white; +} +div.tooltip div.tooltip_footer { + height: 7px; + background: url(../images/old/tooltips/body_bottom.png) no-repeat; +} +/* @end */ +/* @group News */ +/* +div#news { + top: 11px; + left: 240px; + width: 353px; + height: 85px; + padding-top: 4px; + position: absolute; + overflow: hidden; + background: url(../images/old/note.png) 1px 3px; +} + +div#news.hidden { + display: none; +} + +div#news div.close { + display: inline; + margin-top: 6px; + margin-left: 17px; + float: left; + width: 15px; +} + +div#news div.close a { + text-decoration: none; + color: #929c1b; +} + +div#news div.close a:hover { + text-decoration: none; + color: #3d420b; +} + +div#news div#newsframe { + display: block; + overflow: hidden; + width: 305px; + height: 70px; +} + +div#news div#newsframe iframe { + border: 0px; +} +*/ +/* --------------------------------------- */ +div#news { + top: -82px; + left: 240px; + width: 310px; + height: 90px; + position: absolute; + /* background: url(../images/old/tips/Tips_background.png) 0 -5px; */ + + background-color: #616474; + -webkit-border-bottom-right-radius: 8px; + -webkit-border-bottom-left-radius: 8px; + -moz-border-radius-bottomright: 8px; + -moz-border-radius-bottomleft: 8px; + border-bottom-right-radius: 8px; + border-bottom-left-radius: 8px; + -webkit-box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6); + -moz-box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6); + box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6); +} +/* +div#news.open { + background: url(../images/old/tips/Tips_open.png) 0 -5px; +} + +div#news.hidden { + background: url(../images/old/tips/Tips_close.png) 0 -5px; +} +*/ +div#news div#newsframe { + margin-left: 10px; + margin-right: 10px; + height: 75px; + overflow: hidden; +} +div#news div#newsframe.loading { + background: url(../images/old/loading/news.gif) no-repeat center center; +} +div#news div#newsframe iframe { + width: 290px; + border: 0px; + color: #616474; + background-color: #616474; +} +div#news div.grip { + width: 310px; + height: 12px; + margin-top: 2px; + cursor: pointer; +} +div#news.open div.grip { + background: url(../images/old/tips/close.png) no-repeat center 6px; +} +div#news.hidden div.grip { + background: url(../images/old/tips/open.png) no-repeat center 6px; +} +/* @end */ +/* @group mainDialog */ +div.mainDialog { + position: relative; + left: -263px; + width: 525px; + height: 325px; +} +div.scrollable div.mainDialog { + top: 0px; +} +div.fixed div.mainDialog { + top: -118px; +} +div.mainDialog div.header { + height: 55px; + background: url(../images/old/cardDialog/background_header.png) no-repeat; +} +div.mainDialog div.header div.title { + padding-top: 16px; + padding-left: 20px; + padding-right: 20px; +} +div.mainDialog div.header div.title input { + width: 100%; + display: block; + font-size: 16pt; + margin: 0px; + border: 0px; + padding: 3px 10px; + color: #787872; + border: 1px solid #cccec0; + background-color: #cccec0; +} +div.mainDialog div.header div.title h3 { + display: block; + font-size: 16pt; + color: #787872; + margin: 0px; + border: 0px; + padding: 3px 10px; +} +div.mainDialog div.header div.title.selectedField input, div.mainDialog div.header div.title:hover input { + border: 1px solid #515247; + background-color: #b5b7ab; +} +div.mainDialog div.header div.title.disabled:hover input { + border: 1px solid #cccec0; + background-color: #cccec0; +} +div.mainDialog div.body { + padding-top: 0px; + padding-left: 10px; + padding-right: 9px; + min-height: 200px; + background: url(../images/old/cardDialog/background_body.png) repeat-y; +} +div.mainDialog div.body div.mask { + display: none; +} +div.mainDialog.loading div.body div.mask { + display: block; + position: absolute; + top: 55px; + left: 10px; + right: 9px; + bottom: 70px; + z-index: 1001; + background-color: white; + padding-left: 146px; + padding-right: 146px; + padding-top: 70px; +} +div.mainDialog.loading div.body .tabPanels { + display: none; +} +div.mainDialog.loading div.body div.mask h3.progressDescription { + margin: 0px; + text-align: center; + padding-bottom: 10px; + color: #cccec0; + font-size: 14pt; + font-weight: normal; +} +div.loadingBar { + height: 22px; + width: 214px; + background: url(../images/old/loading/loadingBar.gif) no-repeat center top; +} +div.loadingBar div.loadingBarProgressBox { + padding: 2px; +} +div.loadingBar div.loadingBarProgress { + height: 18px; + width: 0%; + /* background-repeat: no-repeat; */ + + background-color: rgba(248, 79, 0, 0.6); + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} +/* +div.loadingBar div.loadingBarProgress div.loadingBarProgress_left { + height: 100%; + max-width: 8px; + background: url(../images/old/loading/loadingBarProgress.png) no-repeat 0; +} + +div.loadingBar div.loadingBarProgress div.loadingBarProgress_right { + position: relative; + height: 100%; + margin-left: 8px; + background: url(../images/old/loading/loadingBarProgress.png) no-repeat right; + top: -22px; +} +*/ +div.mainDialog div.body div ul { + padding: 0px; + clear: both; + margin: 0px; + list-style-type: none; +} +div.mainDialog div.body div.tabs { + height: 20px; +} +div.mainDialog div.body div.tabs ul.tabs { + height: 33px; + /* border-bottom: 1px solid #515247;*/ + + /* background: #cccec0 url(../images/old/cardDialog/tabs_shadow.png) repeat-x 0 -5px;*/ + + background: url(../images/old/cardDialog/tabs_background.png) repeat-x; +} +div.mainDialog div.body div.tabs ul.tabs li { + /* width: 150px; */ + + height: 32px; + font-size: 11pt; + text-align: center; + border-right: 1px solid #515247; + float: left; + color: #787872; + border-bottom: 1px solid #515247; + background: #cccec0 url(../images/old/cardDialog/tabs_shadow.png) repeat-x 0 -5px; + cursor: pointer; +} +div.mainDialog div.body div.tabs ul.tabs li div { + display: none; +} +div.mainDialog div.body div.tabs ul.tabs li span { + display: block; + padding-top: 9px; + padding-bottom: 6px; + padding-left: 40px; + padding-right: 40px; +} +div.mainDialog div.body div.tabs ul.tabs li:hover { + color: #515247; +} +div.mainDialog div.body div.tabs ul.tabs li.disabled:hover { + color: #787872; + cursor: default; +} +div.mainDialog div.body div.tabs ul.tabs li.selected { + color: #515247; + background-color: #f1f2e9; + border-bottom: 1px solid #f1f2e9; + cursor: default; +} +div.mainDialog div.body div.tabs ul.tabs li.selected.disabled:hover { + color: #515247; +} +div.mainDialog div.body div.tabs ul.tabs li.selected div.backToDirectLoginList { + position: absolute; + display: block; + top: 63px; + left: 140; + width: 20px; +} +div.mainDialog div.body div.tabs ul.tabs li.selected div.addDirectLoginButton { + position: absolute; + display: block; + top: 63px; + left: 265px; + width: 20px; +} +div.mainDialog div.body div.tabs ul.tabs li.selected div span { + padding: 0px; + margin: 0px; +} +div.mainDialog div.body div.tabs ul.tabs li.selected div:hover { + cursor: pointer; +} +div.mainDialog div.body .tabPanels { + clear: both; +} +div.mainDialog div.body ul.tabPanels li.tabPanel { + display: none; +} +div.mainDialog div.body ul.tabPanels li.tabPanel.selected { + display: block; +} +div.mainDialog div.body ul.tabPanels li.tabPanel.selected h2 { + margin: 0px; + text-align: center; + padding-top: 50px; + color: #787872; +} +div.mainDialog div.body ul.tabPanels li.tabPanel.selected div.wizardStepDescription { + margin: 0px 20px 10px; + font-size: 10pt; + color: b0b0b0; + font-style: italic; + text-align: center; +} +div.mainDialog div.footer { + height: 70px; + background: url(../images/old/cardDialog/background_footer.png) no-repeat 0 -14px; +} +div.mainDialog div.footer div.buttonArea { + padding-left: 40px; + padding-right: 40px; + padding-top: 15px; +} +div.mainDialog div.footer div.buttonArea div { + padding-left: 20px; + padding-right: 20px; + float: left; + font-weight: bold; + color: #787872; +} +div.mainDialog div.footer div.buttonArea div.disabled { + color: #b1b1a8; +} +div.mainDialog div.footer div.buttonArea div.disabled:hover { + color: #b1b1a8; + cursor: default; +} +div.mainDialog div.footer div.buttonArea div:hover { + color: #515247; + cursor: pointer; +} +div.mainDialog div.footer div.buttonArea div.save { + float: right; +} +/* @end */ +/* @group Card Dialog */ +div.addDirectLoginButton { + height: 20px; + width: 20px ; + background: url(../images/old/cardDialog/addDirectLogin_disabled_background.png) no-repeat -9px -9px; + color: white; + font-weight: bold; +} +div.addDirectLoginButton span { + display: block; + height: 20px; + width: 20px ; +} +div.addDirectLoginButton:hover { + background: url(../images/old/cardDialog/addDirectLogin_background.png) no-repeat -9px -9px; +} +/* @group Card Dialog - Direct Login */ +div.directLoginsComponentContainer { + overflow: hidden; + /* background-color: green; */ + +} +div.CardDialog div.directLogins { + /* background-color: yellow; */ + + padding-top: 2px; +} +div.CardDialog div.addNewDirectLoginSplash { + margin: 0px 80px; +} +div.CardDialog div.addNewDirectLoginSplash h3 { + color: #aaaaaa; + text-align: center; + font-weight: normal; + font-size: 11pt; +} +div.CardDialog div.addNewDirectLoginSplash a { + display: block; + text-decoration: none; + margin-left: auto; + margin-right: auto; + width: 190px; + /* color: #787878; */ + + color: rgba(255, 98, 6, 0.75); + text-transform: uppercase; + background: url(../images/old/cardDialog/addDirectLogin_disabled_background.png) no-repeat right; +} +div.CardDialog div.addNewDirectLoginSplash a span { + text-align: center; +} +div.CardDialog div.addNewDirectLoginSplash a:hover { + color: #ff6206; + background: url(../images/old/cardDialog/addDirectLogin_background.png) no-repeat right; +} +div.CardDialog div.directLoginItem { + clear: both; + min-height: 32px; + padding-left: 10px; + padding-top: 4px; + padding-bottom: 2px; + /* width: 100px; */ + + max-height: 32px; + overflow: hidden; +} +div.CardDialog div.directLoginItem:hover { + background-color: #cccec0; +} +div.CardDialog div.addDirectLoginListItem { + min-height: 32px; + padding-left: 10px; + padding-top: 4px; + padding-bottom: 2px; + max-height: 32px; + overflow: hidden; + background: url(../images/old/cardDialog/addDirectLogin_disabled_background.png) no-repeat 22px 0; +} +div.CardDialog div.addDirectLoginListItem a { + display: block; + font-size: 11pt; + padding-top: 6px; + padding-left: 50px; + color: rgba(255, 98, 6, 0.75); + text-decoration: none; + text-transform: uppercase; +} +div.CardDialog div.addDirectLoginListItem:hover { + background: url(../images/old/cardDialog/addDirectLogin_background.png) no-repeat 22px 0; + color: #ff6206; + background-color: #cccec0; +} +div.CardDialog div.directLoginItem div.cardDialogRecordDirectLoginComponent_favicon img.favicon { + width: 32px; + height: 32px; + float: left; +} +div.CardDialog div.directLoginItem div.cardDialogRecordDirectLoginComponent_label input { + float: left; + font-size: 11pt; + border: 0px; + padding: 5px; + color: #787872; + border: 1px solid #ededeb; + background-color: #ededeb; + height: 30px; + margin-left: 10px; + width: 68%; + margin-right: 5px; +} +div.CardDialog div.directLoginItem:hover div.cardDialogRecordDirectLoginComponent_label input { + border: 1px solid #515247; + background-color: #b5b7ab; +} +div.CardDialog div.directLoginItem > div.open { + float: left; + margin-top: 5px; + margin-right: 2px; + padding-left: 5px; + visibility: hidden; +} +div.CardDialog div.directLoginItem > div.edit, div.CardDialog div.directLoginItem > div.delete { + float: left; + margin-top: 5px; + margin-left: 3px; + padding-left: 5px; + visibility: hidden; +} +div.CardDialog div.directLoginItem > div.open a { + display: block; + width: 22px; + height: 22px; + background: url(../images/old/cardDialog/openDirectLogin.png) no-repeat 0 -2px; +} +div.CardDialog div.directLoginItem > div.open a:hover { + background: url(../images/old/cardDialog/openDirectLogin_selected.png) no-repeat 0 -2px; +} +div.CardDialog div.directLoginItem:hover > div.open, div.CardDialog div.directLoginItem:hover > div.edit, div.CardDialog div.directLoginItem:hover > div.delete { + visibility: visible; +} +div.CardDialog div.directLoginItem div.edit span { + padding-right: 6px; + display: block; +} +div.CardDialog div.directLoginItem div.open span a, div.CardDialog div.directLoginItem div.edit span a, div.CardDialog div.directLoginItem div.delete span a { + font-size: 8pt; + color: #666666; + text-decoration: none; + line-height: 19px; +} +div.CardDialog div.directLoginItem div.edit:hover { + background: url(../images/old/new_background_left.png) no-repeat; +} +div.CardDialog div.directLoginItem div:hover span a { + color: white; +} +div.CardDialog div.directLoginItem div.edit:hover span { + background: url(../images/old/new_background.png) no-repeat right center; +} +div.CardDialog div.directLoginItem div.delete:hover { + background: url(../images/old/delete_background_left.png) no-repeat; +} +div.CardDialog div.directLoginItem div.delete:hover span { + background: url(../images/old/delete_background.png) right; +} +/* @group Direct Login Editing */ +div.CardDialog div.directLoginEditDetail { + position: relative; + /* background-color: red; */ + +} +/* +div.CardDialog div.directLoginEditDetail div.back { + float: left; + width: 30px; +} + +div.CardDialog div.directLoginEditDetail div.back a { + display: block; + padding: 5px; + text-decoration: none; + font-weight: bold; + font-size: 14pt; + color: #cccec0; + + background: url(../images/old/cardDialog/back.png) no-repeat 5px 14px; + width: 20px; + height: 200px; +} + +div.CardDialog div.directLoginEditDetail div.back a:hover { + color: #7f7872; + background: url(../images/old/cardDialog/back_selected.png) no-repeat 5px 14px; +} +*/ +form.directLoginEditingForm div.title, form.directLoginEditingForm div.favicon { + padding: 5px 10px; +} +form.directLoginEditingForm div.title.disabled:hover { + background-color: #f1f2e9; +} +form.directLoginEditingForm div.title:hover, form.directLoginEditingForm div.favicon:hover { + background-color: #cccec0; +} +form.directLoginEditingForm div.title input { + /* width: 100%; */ + + margin: 0px; + margin-left: 10px; + width: 440px; +} +form.directLoginEditingForm div.favicon { + padding-left: 10px; +} +/*form.directLoginEditingForm div.favicon img.favicon {*/ +form.directLoginEditingForm img.favicon { + float: left; + width: 32px; + height: 32px; +} +form.directLoginEditingForm div.favicon input { + margin-top: 1px; + width: 465px; +} +form.directLoginEditingForm div.disabled:hover input, form.directLoginEditingForm div input { + font-size: 11pt; + border: 0px; + padding: 5px; + color: #787872; + border: 1px solid #ededeb; + background-color: #ededeb; + height: 30px; +} +form.directLoginEditingForm div:hover input { + border: 1px solid #515247; + background-color: #b5b7ab; +} +/* @group Bindings */ +div.bindings div.binding > span.formFieldName { + display: inline-block; + width: 140px; + overflow: hidden; + margin-right: 10px; + color: #6b5147; + text-overflow: ellipsis; +} +div.bindings div.binding { + padding-bottom: 3px; +} +div.bindings div.binding > input { + margin-right: 10px; + background: #cccec0; + width: 150px; + border: 1px solid #cccec0; +} +div.bindings div.binding:hover > input { + border: 1px solid #cccec0; +} +div.bindings div.binding > select { + font-size: 13pt; +} +div.bindings div.binding span.fieldLock { + display: inline-block; + width: 20px; + height: 20px; + margin-right: 3px; +} +div.bindings div.binding.showLocked input { + background: url(../images/old/cardDialog/password_background.png) no-repeat 2px 3px; + /* color: black; */ + + overflow: hidden; + background: #cccec0 url(../images/old/cardDialog/password_background.png) no-repeat 2px 3px; + color: rgba(237, 237, 235, 0.1); +} +div.bindings div.binding span.fieldLock a { + display: none; +} +div.bindings div.binding.locked span.fieldLock a { + display: block; + width: 20px; + height: 20px; + text-decoration: none; + background-image: url(../images/old/cardDialog/lock_open.png); +} +div.bindings div.binding.locked.showLocked span.fieldLock a { + background-image: url(../images/old/cardDialog/lock_closed.png); + text-decoration: none; +} +/* @end */ +/* @group FormValues */ +div.formValues { + padding-top: 15px; +} +div.formValues div.formValue div { + margin: 0px; + display: inline-block; +} +div.formValues div.formValue > span.formFieldName { + display: inline-table; + width: 160px; + overflow: hidden; + margin-right: 10px; + color: #6b5147; +} +/* @end */ +/* @group FormValues */ +/* +div.formValues { + padding-top: 15px; +} + +div.formValues div.formValue > span.formFieldName { + display: inline-table; + width: 150px; + overflow: hidden; + margin-right: 35px; + color: #6b5147; +} + +div.formValues div.formValue > select { + padding-left: 20px; +} +*/ +/* @end */ +/* @group Panels */ +div.directLoginEditing { + padding-top: 2px; +} +div.directLoginEditing div.tabContainer { + min-height: 150px; + height: 200px; +} +div.directLoginEditing div.tabContainer > ul.tabs { + display: none; +} +/* +div.directLoginEditing li.configuration, +div.directLoginEditing li.bindings, +div.directLoginEditing li.favicon { + padding: 10px; +} +*/ +div.directLoginEditing li { + padding: 10px; +} +div.directLoginEditing li.configuration > .bookmarkletConfigurationWrapper > textarea { + float: left; + width: 320px; + height: 125px; + font-family: monospace; + font-weight: normal; + font-size: 8pt; + border: 1px solid #ccc; +} +div.directLoginEditing li.configuration > .bookmarkletConfigurationWrapper .bookmarkletComponent { + float: right; +} +div.directLoginEditing li.configuration > textarea.error { + border: 1px solid red; + background-color: rgba(255, 0, 0, 0.1); +} +/* +div.directLoginEditing > form.directLoginEditingForm > div.tabContainer { + padding-top: 10px; +} + +div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li { + float: left; + padding-left: 10px; + padding-right: 10px; + display: block; + font-size: 10pt; + color: #787872; + cursor: pointer; + + height: 22px; + text-align: center; + border-right: 1px solid #aaa; + border-bottom: 1px solid #aaa; + border-top: 1px solid #aaa; + + background-color: #cccec0; +} + +div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li:first-child { + border-left: 1px solid #aaa; +} + +div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs { + height: 23px; + padding-left: 10px; + border-bottom: 1px solid #aaa; + margin-left: 10px; + margin-right: 10px; +} + +div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li > span { + line-height: 23px; +} + +div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li.selected { + color: #6a5147; + cursor: default; + border-bottom: 1px solid #f1f2e9; + background-color: #f1f2e9; +} + +div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li:hover { + color: #6a5147; +} + +div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabPanels { + padding-bottom: 5px; + margin-left: 10px; + margin-right: 10px; +} + +div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabPanels > li.selected { + border-bottom: 1px solid #aaa; + border-left: 1px solid #aaa; + border-right: 1px solid #aaa; +} + +div.directLoginEditing li.configuration { + padding: 5px; +} + +div.directLoginEditing li.configuration > textarea { + width: 100%; + height: 100px; + font-family: monospace; + font-weight: normal; + font-size: 8pt; +} +*/ +/* @end */ +/* @end */ +/* @end */ +/* @group Card Dialog FIELDS */ +div.CardDialog div.body { + padding-bottom: 1px; +} +div.CardDialog div.body table.fields { + width: 100%; + padding-top: 8px; + padding-bottom: 1px; +} +div.CardDialog div.body table.fields thead { + background: url(../images/old/cardDialog/dottedLine_background.png) repeat-x 0 15px; +} +div.CardDialog div.body table.fields tfoot { + background: url(../images/old/cardDialog/dottedLine_background.png) repeat-x 0 bottom; +} +div.CardDialog div.body table.fields thead th { + text-align: left; + font-weight: normal; + font-size: 9pt; + color: #787872; + padding-left: 10px; + padding-bottom: 3px; + /* + border-bottom: 1px dotted; +*/ + +} +div.CardDialog div.body table.fields thead th.fieldStateTH { + width: 10px; +} +div.CardDialog div.body table.fields tbody td.fieldLabel input { + width: 130px; +} +div.CardDialog div.body table.fields thead th.fieldLockTH { + width: 10px; +} +div.CardDialog div.body table.fields tbody td.fieldValue input { + width: 280px; +} +div.CardDialog div.body table.fields thead th.fieldActionTH { + width: 30px; +} +div.CardDialog div.body table.fields thead th.fieldDeleteTH { + width: 40px; +} +div.CardDialog div.body table.fields tbody tr:hover, div.CardDialog div.body table.fields tbody tr.selectedField { + background-color: #cccec0; +} +div.CardDialog div.body table.fields tbody tr td { + font-size: 11pt; + color: #787872; + height: 35px; +} +div.CardDialog div.body table.fields tbody tr td input { + font-size: 11pt; + border: 0px; + padding: 5px; + color: #787872; + border: 1px solid #ededeb; + background-color: #ededeb; + height: 30px; +} +/* +div.CardDialog div.body table.fields tbody tr td.fieldValue div { + margin-right: 10px; +} + +div.CardDialog div.body table.fields tbody tr td.fieldValue div input { + width: 100%; +} +*/ +div.CardDialog div.body table.fields tbody tr td.fieldValue div.locked input { + background: #ededeb url(../images/old/cardDialog/password_background.png) no-repeat 2px 3px; + color: #ededeb; + color: rgba(237, 237, 235, 0.1); + /* color: black; */ + + /* line-height: 100px; */ + + overflow: hidden; +} +div.locked input.value::-moz-selection { + background: #ff0000; +} +div.locked input.value::selection { + background: #ff0000; +} +div.CardDialog div.body table.fields tbody tr.new.selectedField td input, +div.CardDialog div.body table.fields tbody tr.new:hover td input, +div.CardDialog div.body table.fields tbody tr:hover td input, +div.CardDialog div.body table.fields tbody tr.selectedField td input { + border: 1px solid #515247; + background-color: #b5b7ab; +} +div.CardDialog div.body table.fields tbody tr:hover td.fieldValue div.locked input, div.CardDialog div.body table.fields tbody tr.selectedField td.fieldValue div.locked input { + background: #b5b7ab url(../images/old/cardDialog/password_background.png) no-repeat 2px 3px; + color: #b5b7ab; + color: rgba(237, 237, 235, 0.1); +} +div.CardDialog div.body table.fields tbody td.fieldLock div { + width: 20px; + height: 19px; + cursor: pointer; +} +div.CardDialog div.body table.fields tbody tr:hover td.fieldLock div.locked { + background-image: url(../images/old/cardDialog/lock_closed.png); +} +div.CardDialog div.body table.fields tbody tr:hover td.fieldLock div.unlocked { + background-image: url(../images/old/cardDialog/lock_open.png); +} +div.CardDialog div.body table.fields tbody tr td.fieldAddDelete div span a { + text-decoration: none; + visibility: hidden; + font-size: 8pt; + vertical-align: -13px; + color: black; +} +div.CardDialog div.body table.fields tbody tr.selectedField td.fieldAddDelete div span a { + visibility: visible; +} +div.CardDialog div.body table.fields tbody tr:hover td.fieldAddDelete div span a { + visibility: visible; +} +div.CardDialog div.body table.fields tbody tr:hover td.fieldAddDelete div:hover span a { + color: white; +} +div.CardDialog div.body div.notes { + background: url(../images/old/cardDialog/dottedLine_background.png) repeat-x 0 0; + padding-top: 2px; +} +div.CardDialog div.body div.notes div { + padding-left: 20px; + padding-right: 20px; + padding-top: 4px; + padding-bottom: 4px; +} +div.CardDialog div.body div.notes div:hover, div.CardDialog div.body div.notes.selectedField div { + background-color: #cccec0; +} +div.CardDialog.loading div.body div.notes div textarea { + display: none; +} +div.CardDialog div.body div.notes div textarea { + border: 0; + width: 470px; + /* + width: 100%; + height: 100px; + min-height: 400px; + overflow: hidden; +*/ + + color: #787872; + border: 1px solid #ededeb; + background-color: #ededeb; + display: block; + line-height: 12pt; + min-height: 50px; +} +div.CardDialog div.body div.notes div:hover textarea, div.CardDialog div.body div.notes.selectedField div textarea { + border: 1px solid #515247; + background-color: #b5b7ab; +} +div.CardDialog div.body table.fields tbody tr td.fieldAction { + /* background-color: red; */ + + padding-left: 4px; +} +div.CardDialog div.body table.fields tbody tr td.fieldAction a { + display: inline-block; + text-decoration: none; + text-align: center; + width: 16px; + height: 16px; +} +div.CardDialog div.body table.fields tbody tr td.fieldAction a.email { + background: url(../images/old/cardDialog/fieldTypes/email.png) no-repeat 0 0; +} +div.CardDialog div.body table.fields tbody tr td.fieldAction a.email:hover { + background: url(../images/old/cardDialog/fieldTypes/email_selected.png) no-repeat 0 0; +} +div.CardDialog div.body table.fields tbody tr td.fieldAction a.url { + background: url(../images/old/cardDialog/fieldTypes/url.png) no-repeat 0 0; +} +div.CardDialog div.body table.fields tbody tr td.fieldAction a.url:hover { + background: url(../images/old/cardDialog/fieldTypes/url_selected.png) no-repeat 0 0; +} +div.CardDialog div.body table.fields tbody tr td.fieldAction a.password { + background: url(../images/old/cardDialog/fieldTypes/password.png) no-repeat 0 0; +} +div.CardDialog div.body table.fields tbody tr td.fieldAction a.password:hover { + background: url(../images/old/cardDialog/fieldTypes/password_selected.png) no-repeat 0 0; +} +/* +/ *div.CardDialog div.body table.fields tbody* / tr.new { + background: yellow; +} + +div.CardDialog div.body table.fields tbody tr.new td input { + border: 1px solid red; + background-color: green; +} +*/ +/* @end */ +/* @end */ +div#disabledZone { + display: block; + visibility: visible; +} +div#messageZone { + display: block; + visibility: visible; +} +div.CardDialog div.error div.img { + margin: 10px; + width: 50px; + height: 50px; + float: left; + background-image: url(../images/old/simpleMessageBox/Alert.png); +} +/* @group Ruler */ +/* +div.rulerExtraWrapper { + position: absolute; + top: 0px; + left: 0px; + width: 100%; + height: 100%; + overflow: hidden; + background-color: rgba(255, 0, 0, 0.2); + z-index: 24999; +} +*/ +div.rulerWrapper { + left: -1000px; + margin-top: -30px; + margin-left: 50%; + z-index: 25000; +} +div.rulerWrapper.fixed { + position: fixed; +} +div.rulerWrapper.scrollable { + position: absolute; +} +div.ruler { + /* position: absolute; */ + + width: 541px; + height: 96px; + margin-left: -270px; + background: url(../images/old/ruler/ruler.png) no-repeat; +} +div.ruler a { + position: absolute; + display: block; + width: 15px; + height: 15px; + top: 3px; + text-decoration: none; +} +div.ruler a.exit { + margin-left: 2px; + background: url(../images/old/ruler/exit.png) no-repeat; +} +div.ruler a.exit:hover { + background: url(../images/old/ruler/exit_selected.png) no-repeat; +} +div.ruler a.smallButton.previous { + right: 16px; + background: url(../images/old/ruler/small_previous.png) no-repeat; +} +div.ruler a.smallButton.previous:hover { + cursor: pointer; + background: url(../images/old/ruler/small_previous_selected.png) no-repeat; +} +div.ruler a.smallButton.previous.disabled, div.ruler a.smallButton.previous.disabled:hover { + cursor: default; + background: url(../images/old/ruler/small_previous_disabled.png) no-repeat; +} +div.ruler a.smallButton.next { + right: 3px; + background: url(../images/old/ruler/small_next.png) no-repeat; +} +div.ruler a.smallButton.next:hover { + cursor: pointer; + background: url(../images/old/ruler/small_next_selected.png) no-repeat; +} +div.ruler a.smallButton.next.disabled, div.ruler a.smallButton.next.disabled:hover { + cursor: default; + background: url(../images/old/ruler/small_next_disabled.png) no-repeat; +} +div.ruler div.steps, div.ruler div.dots { + position: absolute; + background-color: rgba(255, 255, 255, 0); + margin-left: 30px; + margin-right: 30px; +} +div.ruler div.steps { + top: 25px; + height: 30px; +} +div.ruler div.dots { + top: 58px; + height: 25px; +} +div.ruler div ul { + list-style-type: none; + margin: 0px; + padding: 0px; +} +div.ruler div ul li { + display: inline-block; + vertical-align: top; +} +div.ruler > div.steps > ul > li:first-child, div.ruler > div.dots > ul > li:first-child { + margin-left: 0px; +} +div.ruler div.steps_3 ul li { + margin-left: 135px; +} +div.ruler div.steps_4 ul li { + margin-left: 67px; +} +div.ruler div.steps_5 ul li { + margin-left: 32px; +} +div.ruler div.steps_6 ul li { + margin-left: 12px; +} +div.ruler div ul li span { + font-weight: bold; + text-align: center; + width: 70px; + display: block; + font-size: 8pt; + overflow: hidden; + color: rgba(0, 0, 0, 0.3); +} +div.ruler div ul li.selected span { + color: black; +} +div.ruler div.dots ul li span { + /* + text-align: center; + width: 26px; + margin-left: 22px; + margin-right: 22px; + height: 25px; + background-color: #e57218; +*/ + + font-size: 40pt; + line-height: 47px; +} +div.ruler div.marker { + position: absolute; + top: -3px; + /* left: -246px; */ + +} +div.ruler div.marker div.markerBody { + width: 77px; + height: 97px; + background: url(../images/old/ruler/marker.png) no-repeat; +} +div.ruler div.marker div.next { + position: absolute; + top: 25px; + left: 76px; + width: 27px; + height: 65px; + background: url(../images/old/ruler/next.png) no-repeat -13px; + z-index: 26000; +} +div.ruler div.marker div.next:hover { + cursor: pointer; + background: url(../images/old/ruler/next.png) no-repeat -2px; +} +div.ruler div.marker div.disabled { + display: none; +} +div.ruler div.marker div.previous { + position: absolute; + top: 25px; + left: -24px; + width: 27px; + height: 65px; + /* background: url(../images/old/ruler/previous.png) no-repeat 13px 1px; */ + + background: url(../images/old/ruler/previous.png) no-repeat 18px 1px; + z-index: 26000; +} +div.ruler div.marker div.previous:hover { + cursor: pointer; + /* background: url(../images/old/ruler/previous.png) no-repeat 2px 1px; */ + + background: url(../images/old/ruler/previous.png) no-repeat 7px 1px; +} +/* @end */ +div.createNewCardSplash { + margin-top: -450px; + margin-left: 250px; + width: 354px; + float: left; + height: 186px; + text-align: center; + background: url(../images/old/main/grid/createNewCardSplash.png) no-repeat; +} +div.createNewCardSplash:hover { + cursor: pointer; + background: url(../images/old/main/grid/createNewCardSplash_selected.png) no-repeat; +} +div.createNewCardSplash span { + display: block; + padding-top: 130px; + font-size: 14pt; + color: #9a9586; +} +div.createNewCardSplash:hover span { + color: #605c4e; +} +/*=============================================*/ +div.NewUserCreation div.tabContainer { + min-height: 150px; + height: 200px; +} +div.NewUserCreation div.tabContainer > ul.tabs { + display: none; +} +ul.createUserStates li.creating { + background: url(../images/old/creatingUser.gif) no-repeat center center; +} +ul.createUserStates li { + height: 100px; +} +ul.createUserStates li span { + display: block; + width: 100%; + text-align: center; + color: #999; + font-style: italic; +} +div.NewUserCreation form.newUserCreationForm ul.tabPanels { + padding-top: 10px; +} +div.NewUserCreation form.newUserCreationForm ul ul { + margin-left: auto; + margin-right: auto; + width: 400px; +} +div.NewUserCreation form.newUserCreationForm ul.credentials li { + height: 45px; +} +div.NewUserCreation form.newUserCreationForm ul.credentials span.label { + text-align: right; + display: inline-block; + font-size: 12pt; + color: #787872; + width: 110px; + vertical-align: baseline; +} +div.NewUserCreation form.newUserCreationForm ul.credentials input { + font-size: 13pt; + color: #787872; + height: 35px; + margin-left: 15px; + padding-left: 5px; +} +div.NewUserCreation form.newUserCreationForm ul.termsOfService li { + padding: 0 0 15 0; +} +div.NewUserCreation form.newUserCreationForm ul.termsOfService input { + display: inline-block; +} +div.NewUserCreation form.newUserCreationForm ul.termsOfService .label { + display: inline-block; + text-align: left; + font-size: 12pt; + color: #787872; + width: 350px; + vertical-align: top; + padding-left: 10px; +} +div.NewUserCreation form.newUserCreationForm ul.termsOfService a { + font-weight: bold; + color: #787872; + text-decoration: none; +} +div.NewUserCreation form.newUserCreationForm ul.termsOfService a:hover { + color: #444; +} +div.NewUserCreation form.newUserCreationForm ul.createUserStates li.done span { + font-size: 16pt; + color: green; +} +div.NewUserCreation form.newUserCreationForm ul.createUserStates li.fail span { + font-size: 16pt; + color: red; +} diff --git a/frontend/gamma/css/clipperz/clipperz.css b/frontend/gamma/css/clipperz/clipperz.css deleted file mode 100644 index 68d9942..0000000 --- a/frontend/gamma/css/clipperz/clipperz.css +++ b/dev/null @@ -1,4517 +0,0 @@ -/* - -Copyright 2008-2011 Clipperz Srl - -This file is part of Clipperz Community Edition. -Clipperz Community Edition is an online password manager. -For further information about its features and functionalities please -refer to http://www.clipperz.com. - -* Clipperz Community Edition is free software: you can redistribute - it and/or modify it under the terms of the GNU Affero General Public - License as published by the Free Software Foundation, either version - 3 of the License, or (at your option) any later version. - -* Clipperz Community Edition is distributed in the hope that it will - be useful, but WITHOUT ANY WARRANTY; without even the implied - warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Affero General Public License for more details. - -* You should have received a copy of the GNU Affero General Public - License along with Clipperz Community Edition. If not, see - <http://www.gnu.org/licenses/>. - -*/ - -/* @override - https://www.example.com/DEVELOPMENT/css/clipperz.css - http://www.example.com/DEVELOPMENT/css/clipperz.css - https://www.clipperz.com/gamma/css/clipperz.css - https://www.example.com/iPHONE/css/clipperz.css -*/ - -/* -Color list: -- login box: - light #ff9955 - dark #ff6622 -- login button: - regular #dd5500 - hover #773311 -- login translations: - box: #cc6622; - not-selected: - color: #ddaa99 - background: #994422 - selected: #772211; - -*/ - -html { - height: 100%; -} - -body { -/* margin-left: 15px; margin-right: 15px;*/ - font-family: Helvetica, Arial, Geneva, sans-serif; - margin: 0px; -/* - min-width: 600px; -*/ - height: 100%; -} - -img.favicon { - height: 16px; - width: 16px; -} - -/* @group Misc */ - -.clear { - clear: both; -} - -.hidden_none { - display: none; - visibility: hidden; -} - -.keepTogether { - display: inline-block; - white-space: nowrap; -} - -body.ext-gecko .keepTogether { - display: -moz-inline-box; -} - -/* @end */ - -/* @group Loading */ - -div#loading { - margin-left: auto; - margin-right: auto; - text-align: center; - margin-top: 60px; - width: 200px; -} - -div#loading img { - border: 0px; -} - -div#loading h5 { - font-size: 16pt; - padding: 0px; - color: #333366; -} - -div#loading h2 { - padding-left: 20px; - color: #ff9200; -} - - -/* @end */ - -/* @group Login page */ - -/* @group Header */ - -div.pageHeader { - background-color: #1f2148; - min-width: 1013px; -} - -div#logoFrame { - padding: 16px 16px 60px 16px; - min-height: 44px; -} - - -div#logoFrame div#logo { - background: url(../images/old/logo.png); - width: 150px; - height: 39px; -} - - -div#loading div#logo { - background: url(../images/old/logo_blue.png); - width: 193px; - height: 58px; - display: block; -} - -h5.clipperzPayoff { - color: white; - font-size: 13pt; - font-weight: normal; - padding-left: 20px; - white-space: nowrap; - margin: 0px; - padding-left: 4px; -} - - -/* @group Misc links */ - -div#miscLinks { - float: right; -} - -div#miscLinks ul { - margin: 12px 0px 0px; - padding: 15px; -} - -div#miscLinks ul li { - display: inline; - margin: 0px; padding: 0px; border: 0px; -} - -div#miscLinks ul li a { -/* - color: #ccccff; -*/ - color: white; - margin: 0px; padding: 0px; border: 0px; - font-weight: normal; - text-decoration: none; - font-size: 12pt; - border-left: 1px solid #45486b; - padding: 15px; - margin: 0px; - min-width: 70px; -} - -div#miscLinks ul li a#donateHeaderLink { - border-left: 0px; -} - -div#miscLinks ul li a:hover { - color: #ff9200; -} - - - -/* @end */ - - -/* @group Features Tabs */ -#featureTabs table { - width: 100%; - padding: 6px; - padding-bottom: 46px; -} - -#featureTabs table tr td { - width: 25%; - vertical-align: top; - font-size: 11pt; - color: white; -} - -#featureTabs table tr td img { - float: left; -} - -#featureTabs table tr td span { - display: block; - padding: 5 10 5 85; -} - -div#featureTabs canvas.featureIcon { - width: 76px; - height: 76px; - display: block; - float: left; - - background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9955), to(#ff6622), color-stop(1,#333333)); - background: -moz-linear-gradient(0% 100% 90deg,#ff6622, #ff9955); - - -webkit-border-radius: 38px; - -moz-border-radius: 38px; - border-radius: 38px; -} -/* -div#featureTabs div.featureIcon.storeIcon { - background-image: url(../images/old/home/features/store.png); -} - -div#featureTabs div.featureIcon.protectIcon { - background-image: url(../images/old/home/features/protect.png); -} - -div#featureTabs div.featureIcon.directLoginIcon { - background-image: url(../images/old/home/features/directLogin.png); -} - -div#featureTabs div.featureIcon.shareIcon { - background-image: url(../images/old/home/features/share.png); -} -*/ -/* -./images/home/features/store.png -./images/home/features/protect.png -./images/home/features/directLogin.png -./images/home/features/share.png -*/ - -/* @end */ - -/* @group Feature bullets */ - -div#featurePoints { - min-width: 400px; - padding-left: 20px; - padding-right: 330px; - padding-top: 15px; - padding-bottom: 20px; -} - -div#featurePoints table tbody tr td { - width: 50%; - vertical-align: top; -} - -div#featurePoints table tbody tr td.separator { - width: 1px; - border-left: 1px solid #bebebe; -} - -div#featurePoints div.block { - padding: 10px; - color: #8e8e8e; -} - -div#featurePoints div.block h3 { - font-weight: normal; - font-size: 12pt; - margin: 0px; - padding: 5px 0px; -} - -div#featurePoints div.block ul { - margin: 0px; - margin-left: 20px; - padding: 0px; - list-style-position: outside; - list-style-image: url(../images/old/home/features/bullet.png); -} - -div#featurePoints div.block ul li { - font-size: 10pt; - padding: 3px 0px; -} - -/* @end */ - - - -/* @end */ - -/* @group Login box */ - -div#loginBox { - width: 273px; -/* z-index: 40000; */ - z-index: 19000; - position: relative; - top: -30px; - right: 30px; - float: right; -} - -div#loginBox div.header { - height: 25px; - width: 273px; -/* background-image: url(../images/old/home/box/box_top.png); */ -/* background-color: #fe965f; */ - background-color: #ff9955; - - -webkit-border-top-left-radius: 20px; - -webkit-border-top-right-radius: 20px; - -moz-border-radius-topleft: 20px; - -moz-border-radius-topright: 20px; - border-top-left-radius: 20px; - border-top-right-radius: 20px; -} - -div#loginBox div.body { - background-color: #ff9955; - - background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9955), to(#ff6622), color-stop(1,#333333)); - background: -moz-linear-gradient(0% 100% 90deg,#ff6622, #ff9955); - -/* background: url(../images/old/home/box/box_body.png) repeat-x; */ -} - -div#loginBox div.body h3.loading { - margin: 0px; - text-align: center; - padding-top: 60px; - color: white; - font-size: 30pt; - padding-left: 20px; -} - -div#loginBox div.footer { - height: 37px; - width: 273px; -/* background-image: url(../images/old/home/box/box_bottom.png); */ - background-color: #ff6622; - - -webkit-border-bottom-left-radius: 20px; - -webkit-border-bottom-right-radius: 20px; - -moz-border-radius-bottomleft: 20px; - -moz-border-radius-bottomright: 20px; - border-bottom-left-radius: 20px; - border-bottom-right-radius: 20px; -} - -/* @group Login form */ - -div#loginBox h4 { - color: white; - font-size: 16pt; - font-weight: normal; - padding-left: 20px; - margin: 0px; -} - -div#loginBox form.loginForm { - padding: 5px 20px 0px; - margin-bottom: 0px; -} - -div#loginBox form.loginForm label { - color: white; - font-size: 10pt; - display: block; - padding-top: 5px; -} - -div#loginBox form.loginForm input { - width: 230px; - font-size: 14pt; - border: 1px solid #bb4924; - color: #333366; - background-color: white; - padding: 2px 5px; - height: 28px; -} - -div#loginBox form.loginForm label.checkbox { - display: inline; -} - -div#loginBox form.loginForm .checkbox:hover { - cursor: pointer; -} - -div#loginBox form.loginForm input.checkbox { - margin: 10px 8px 0px 0px; - height: auto; - width: auto; - border: 0px; -} - -div#loginBox form.loginForm ul { - list-style-type: none; - padding: 0px; - margin: 0px; -} - -div#loginBox form.loginForm ul li { - display: block; -} - -div#loginBox form.loginForm input.otp { - width: 57px; - display: inline; - padding-left: 0px; - padding-right: 0px; - height: 28px; - font: 8pt monospace; -} - - - -div#loginBox form.loginForm input.submit { - margin: 0px 45px; - width: 140px; - border: 1px solid white; - color: white; - background-color: #dd5500; - padding: 6px; - font-size: 12pt; - height: auto; -} - -div#loginBox form.loginForm input.submit:hover { - background-color: #773311; - color: white; - cursor: pointer; -} - - -/* @group language chooser */ - -div#loginBox form.loginForm div.translations { - margin: 15px -20px; - background-color: #cc6622; -} - -div#loginBox form.loginForm div.translations h4 { - font-size: 9pt; - padding: 6px 20px 0px; -} - -div#loginBox form.loginForm div.translations ul { - margin: 0px; - padding: 5px 10px 10px; - margin-bottom: 15px; -} - -div#loginBox form.loginForm div.translations ul li { - font-size: 8pt; - color: #ddaa99; - display: inline-block; - padding: 2px 4px; - background-color: #994422; - margin: 1px; -} - -body.ext-gecko div#loginBox form.loginForm div.translations ul li { - display: -moz-inline-box; -} - -div#loginBox form.loginForm div.translations ul li.selected { - background-color: #772211; - color: white; -} - -div#loginBox form.loginForm div.translations ul li.selected:hover { - cursor: default; -} - -div#loginBox form.loginForm div.translations ul li:hover { - cursor: pointer; - color: white; -} - -/* @end */ - -/* @end */ - -/* @end */ - -/* @group Create/Look/Offline */ - -div.activeFeatures { - float: left; - margin-left: 20px; - height: 100px; -} - -div.activeFeatures a { - display: inline-block; - - padding-left: 46px; - color: #ff5906; - text-decoration: none; - font-size: 10pt; -} - - -div.activeFeatures .keepTogether a { - padding-left: 0px; -} - -div.activeFeatures a span.payoff { - display: block; - font-size: 13pt; - font-weight: lighter; - color: #9b9689; - margin: 0px; - padding: 0px; -} - -/*body.ext-gecko div.activeFeatures a { - display: -moz-inline-box; -}*/ -div.activeFeatures a:hover span.payoff { - color: #666666; -} - -div.activeFeatures a:hover span.link { -/* font-weight: bold;*/ -} - -div.activeFeatures div.keepTogether div { - display: inline-block; - padding-right: 15px; -} - -/*body.ext-gecko div.activeFeatures div.keepTogether div { - display: -moz-inline-box; -}*/ - -div.activeFeatures div.createAccountLink { - display: inline-block; - width: 282; - height: 65px; -/* background-image: url(../images/old/home/register.png); */ - margin-right: 20px; -} - -/*body.ext-gecko div.activeFeatures div.createAccountLink { - display: -moz-inline-box; -}*/ - -div.activeFeatures a.createAccountLink { - position: relative; - top: -92px; - left: 5px; -} - -div.activeFeatures div.createAccountLink a.createAccountLink span.payoff { - margin-top: 23px; - margin-left: 40px; - font-size: 17pt; - color: #64626c; -} - -div.activeFeatures div.createAccountLink a.createAccountLink span.link { - padding-left: 40px; - padding-right: 50px; - padding-bottom: 10px; - font-size: 12pt; -} - -div.activeFeatures div.createAccountLink:hover { -/* background-image: url(../images/old/home/register_selected.png);*/ -} - -div.activeFeatures div.createAccountLink:hover a.createAccountLink span.payoff { - color: #54535a; -} - -div.activeFeatures div.createAccountLink:hover a.createAccountLink span.link { - color: white; -} - -/* -div.activeFeatures div.screenshotLink { - background: url(../images/old/home/look.png) no-repeat 0 -3px; -} - -div.activeFeatures div.offlineLink { - background: url(../images/old/home/download.png) no-repeat 10px -4px; -} -*/ - -div.createAccountLink canvas { - width: 282px; - height: 93px; -} -div.activeFeatures .keepTogether canvas { - width: 46px; - height: 46px; - vertical-align: bottom; -} - -/* @end */ - - - -/* @end */ - -/* @group Footer */ - -div.pageHeaderAndBody { - height: 100%; -} - -body > div.pageHeaderAndBody { - height: auto; min-height: 100%; -} - -div#pageBody { - min-width: 1013px; - padding-bottom: 90px; -} - - - -div.pageFooter { - margin-top: -90px; - height: 90px; - clear: both; -} - -div.footerWrapper { - clear: both; - padding-top: 10px; -} -div.footerContent { - background-color: #eaebe6; - padding: 20px; - font-size: 8pt; -} - -/*div.pageFooter div.footerContent div.footerStarIcon {*/ -div.pageFooter div.footerContent canvas.footerStarIcon { -/* background-image: url(../images/old/footer/star.png); */ - width: 40px; - height: 40px; - float: left; -} - -div.pageFooter div.footerContent span.copyright { - padding-left: 10px; - color: #a0a0a0; -} - -div.pageFooter div.footerContent a { - padding-left: 50px; - display: block; - color: #888888; - font-weight: bold; - text-decoration: none; -} - -div.pageFooter div.footerContent span.applicationVersion { - padding: 8px; - color: #888888; - background-color: #d2d2d2; - position: relative; - top: -40px; - float: right; -} - - -/* @end */ - -/* @group Javascript Alert */ - -div#javaScriptAlert div.mask { - position: fixed; - top: 0px; - left: 0px; - right: 0px; - bottom: 0px; - - background-color: black; - z-index:1001; - -moz-opacity: 0.7; - opacity:.70; - filter: alpha(opacity=70); -} - -div#javaScriptAlert div.header { - height: 34px; - width: 468; - background-image: url(../images/old/alert/header.png); -} - -div#javaScriptAlert div.body { - background-image: url(../images/old/alert/body.png); - padding: 0px 20px 10px 20px; -} -/* -div#javaScriptAlert div.body div.alert { - padding-left: 100px; - background: url(../images/old/alert/alert.png) no-repeat; -} -*/ - -/*div#javaScriptAlert div.body img.alert {*/ -div#javaScriptAlert div.body div.alertLogo { - float: left; - background-image: url(../images/old/alert/alert.png); - width: 88px; - height: 88px; -} - -div#javaScriptAlert div.body div.alert { - padding-left: 100px; -} - -div#javaScriptAlert div.footer { - height: 34px; - width: 468; - background-image: url(../images/old/alert/footer.png); -} - - - -div#javaScriptAlert div.message { - position: relative; - top: -150px; - z-index:1002; -/* - left: 100px; - right: 100px; -*/ - margin-left: auto; - margin-right: auto; - max-width: 468px; -} - -div#javaScriptAlert div.message h1 { - font-size: 16pt; - margin: 0px; - color: #ff5930; -} - -div#javaScriptAlert div.message p { - margin-top: 0px; - color: #999999; -} - -div#javaScriptAlert div.message h3 { - font-size: 12pt; - margin-bottom: 0px; - color: #ff5930; -} - -div#javaScriptAlert div.message h5 { - margin: 0px; - color: #999999; -} - -/* @end */ - -/* @group Components - */ - - -/* @group LoginProgress */ - -div.LoginProgress { - position: relative; - left: -190px; - top: -100px; - width: 380px; - height: 200px; -/* background: url(../images/old/loginProgress/background.png); */ - background-color: #d7d7c0; - -webkit-border-radius: 20px; - -moz-border-radius: 20px; - border-radius: 20px; - - -webkit-box-shadow: 5px 5px 7px rgba(0,0,0,0.6); - -moz-box-shadow: 5px 5px 7px rgba(0,0,0,0.6); - box-shadow: 5px 5px 7px rgba(0,0,0,0.6); -} - -div.LoginProgress div.header { - height: 40px; -} - -div.LoginProgress div.header h3 { - font-size: 12pt; - font-weight: normal; - margin: 0px; - color: #777777; - padding-top: 13px; - padding-left: 18px; -} - -div.LoginProgress div.body { - height: 120px; - overflow: auto; - padding-left: 20px; - padding-right: 20px; - - background-color: #f1f1e9; -/* - margin-left: 19px; - margin-right: 18px; -*/ -} - -div.LoginProgress div.body div.img { - margin: 10px; - width: 50px; - height: 50px; - float: left; -} - -div.LoginProgress div.body div.img.ALERT { -/* background-image: url(../images/old/simpleMessageBox/Alert.png); */ - background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9955), to(#ff6622), color-stop(1,#333333)); - background: -moz-linear-gradient(0% 100% 90deg,#ff6622, #ff9955); - -webkit-border-radius: 25px; - -moz-border-radius: 25px; - border-radius: 25px; - -} - -div.LoginProgress div.body div.img.ALERT canvas { - width: 50px; - height: 50px; -/* background-image: url(../images/old/simpleMessageBox/excalmationPoint.png); */ -} - -div.LoginProgress div.body div.loadingBar { - position: relative; - top: 51px; - left: 60px; -} - -div.LoginProgress div.body div.errorBox p { - color: #787872; - padding-top: 20px; - padding-left: 80px; -} - -div.LoginProgress div.footer { - margin-left: 19px; - margin-right: 18px; -} - -div.LoginProgress div.footer a { - text-decoration: none; - text-align: center; - color: #787872; - display: block; - font-weight: bold; - font-size: 11pt; - width: 100px; - margin-top: 11px; - margin-left: auto; - margin-right: auto; -} - -div.LoginProgress div.footer div.button.default { - text-decoration: underline; -} - -div.LoginProgress div.buttonArea { - text-align: center; -} - -div.LoginProgress div.button { - display: inline-block; -} - -div.LoginProgress div.footer a:hover { - color: #515247; -} - - - -/* @end */ - -/* @group SimpleMessagePanel */ - -div.SimpleMessagePanel { - position: relative; - left: -225px; - top: -70px; - width: 450px; - height: 140px; -/* - background: url(../images/old/loginProgress/background.png); -*/ -} - -div.SimpleMessagePanel div.header { - height: 17px; - background: url(../images/old/simpleMessageBox/background_header.png) no-repeat; -} - -div.SimpleMessagePanel div.body { -/* - height: 120px; - overflow: auto; - margin-left: 19px; - margin-right: 18px; -*/ - background: url(../images/old/simpleMessageBox/background_body.png) repeat-y; - padding-left: 25px; - padding-right: 25px; - padding-top: 10px; -} - -div.SimpleMessagePanel div.body h3 { - font-size: 14pt; - font-weight: normal; - margin: 0px; - padding-top: 4px; - color: #787872; -} - -div.SimpleMessagePanel div.body div.img { - width: 66px; - height: 60px; - float: left; -} - -div.SimpleMessagePanel div.body p { - margin: 0; - font-size: 10pt; - font-weight: normal; - color: #787872; - padding-top: 10px; - padding-bottom: 5px; - line-height: 1.3; -} - -div.SimpleMessagePanel div.body div.img.ALERT { - background: url(../images/old/simpleMessageBox/Alert.png) no-repeat; -} - -div.SimpleMessagePanel div.body div.img.INFO { - background: url(../images/old/simpleMessageBox/Info.png) no-repeat; -} - -div.SimpleMessagePanel div.body div.buttonArea { - height: 40px; - clear: both; -} - -div.SimpleMessagePanel div.body div.buttonArea > div { - float: right; - margin-left: 15px; - margin-top: 10px; -} - -div.SimpleMessagePanel div.footer { - height: 25px; - background: url(../images/old/simpleMessageBox/background_footer.png) no-repeat; -} - -div.SimpleMessagePanel div.passphrase { - padding-left: 65px; -} - -div.SimpleMessagePanel div.passphrase input { - width: 250px; - font-size: 14pt; - border: 1px solid #bb4924; - color: #333366; - background-color: white; - padding: 2px 5px; - height: 28px; -} - -div.SimpleMessagePanel div.progressBarWrapper { - margin-left: 80px; -} - -/* @end */ - -/* @group Button */ - -div.button_wrapper { - height: 32px; - background: url(../images/old/button/default_left.png) no-repeat; - cursor: pointer; -} - -div.button_wrapper.hover { - background: url(../images/old/button/hover_left.png) no-repeat; -} - -div.button_wrapper.clicked { - background: url(../images/old/button/clicked_left.png) no-repeat; -} - -div.button_bodyWrapper { - height: 32px; - margin-left: 6px; - padding-right: 6px; - background: url(../images/old/button/default_main.png) repeat-x right 0; -} - -div.button_wrapper.hover div.button_bodyWrapper { - background: url(../images/old/button/hover_main.png) repeat-x right 0; -} - -div.button_wrapper.clicked div.button_bodyWrapper { - background: url(../images/old/button/clicked_main.png) repeat-x right 0; -} - -div.button_body { - text-align: center; - min-width: 60px; - padding: 0px 7px; - padding-top: 8px; -} - -div.button_body span { - font-size: 11pt; - color: white; -} - -div.button_wrapper.default div.button_body span { - font-weight: bold; -} - -/* -div.button_footer { - margin: 0px; - height: 31px; - width: 6px; - background: green url(../images/old/button/default_right.png) no-repeat; -} -*/ -/* @end */ - -/* @group Password enthropy */ - -input.entropyLevelIndicator { - background: url(../images/old/passwordField/background.png) no-repeat 0 26px; -} - -div.passwordEntropyWrapper { - padding: 0px; - border: 1px solid #bb4924; - border-top: 0px; - margin-bottom: 4px; - background-color: white; - margin-right: 3px; - margin-top: -2; -} - -div.passwordEntropy { - height: 4px; - font-size: 1pt; - background: url(../images/old/entropyBackground.gif) repeat-x 0 0; - line-height: 3px; -} - - - -/* @end */ - - - -/* @end */ - -/* @group Main page */ - -/* @group User Info Box */ - -div.userInfoBox { - position: absolute; - width: 160px; - height: 120px; - - top: 100px; - left: 15px; -/* background-image: url(../images/old/main/userInfoBackground.png); */ - - background-color: #ff9955; - background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9a56), to(#ff6723), color-stop(1,#333333)); - background: -moz-linear-gradient(0% 100% 90deg,#ff6723, #ff9a56); - - -webkit-border-radius: 10px; - -moz-border-radius: 10px; - border-radius: 10px; - - -webkit-box-shadow: 2px 2px 9px rgba(0,0,0,0.6); - -moz-box-shadow: 2px 2px 9px rgba(0,0,0,0.6); - box-shadow: 2px 2px 9px rgba(0,0,0,0.6); - - color: white; -} - -div.userInfoBox div.body { - padding: 0px 12px; -} - -div.userInfoBox div.header { - height: 30px; -} - -div.userInfoBox div.header h1 { - font-size: 8pt; - font-weight: normal; - margin: 0px; - padding-top: 12px; - padding-left: 12px; -} - -div.userInfoBox div.header a.lockButton { - position: absolute; - top: 8px; - right: 12px; - display: block; - width: 15px; - height: 20px; - text-decoration: none; - background: url(../images/old/lock/unlocked.png) no-repeat -5px -2px; -} - -div.userInfoBox div.header a.lockButton:hover { - background: url(../images/old/lock/unlocked_hover.png) no-repeat -5px -2px; -} - -div.userInfoBox.locked { - z-index:19001; -} - -div.modalDialogMask.userInfoBoxMask { - -moz-opacity: 0.0; - opacity: .0; - filter: alpha(opacity=0); - z-index:19000; -} - -div.userInfoBox.locked div.header a.lockButton { - background: url(../images/old/lock/locked.png) no-repeat -5px -2px; -} - -div.userInfoBox.locked div.header a.lockButton:hover { - background: url(../images/old/lock/locked_hover.png) no-repeat -5px -2px; -} - -div.userInfoBox div.body h3 { - font-size: 11pt; - font-weight: bold; - margin: 0px; -} - -div.userInfoBox div.body ul { - /* ##### */ - list-style-image: url(../images/old/main/userInfoBullet.png); - font-size: 8pt; - padding: 0px; - margin: 4px 0px; - list-style-position: inside; - text-shadow: #000000 0 0 0; -} - -div.userInfoBox div.body ul li span.number { - font-weight: bold; - padding-right: 3px; -} - -div.userInfoBox div.body a { - display: block; - margin-top: 8 - px; - border-top: 1px solid white; - padding-top: 6px; - font-size: 10pt; - font-weight: bold; - color: #d15a22; - text-decoration: none; - border-color: #fe9a5f; -} - -div.userInfoBox div.body a:hover { - color: #8c3b15; -} - -div.userInfoBox.locked div.body a { - display: none; -} - -/* @end */ - - -/* @group Message Box */ - -div.messageBox { - position: absolute; - width: 409px; - height: 29px; - top: 23px; - left: 204px; - background: url(../images/old/main/messageBoxBackground.png); -} - -div.messageBox h3 { - display: inline-block; - color: #342f6b; - font-weight: bold; - margin: 7px 2px 0px 12px; - font-size: 10pt; - -} - -body.ext-gecko div.messageBox h3 { - display: -moz-inline-box; -} - -div.messageBox h1 { - color: #342f6b; - display: inline; - font-weight: normal; - margin: 0px 1px; - font-size: 9pt; -} - -div.messageBox a { - display: block; - width: 20px; - height: 20px; - float: right; - position: absolute; - right: 5px; - top: 4px; - background-image: url(../images/old/main/messageBoxCloseButton.png); -} - -div.messageBox a:hover { - background-image: url(../images/old/main/messageBoxCloseButtonActive.png); -} - -/* @end */ - -/* @group Side panels */ - -div.sidePanels { -/* - position: relative; - top: 110px; -*/ - float: left; - margin-top: 106px; - margin-left: 20px; - width: 160px; - -} - -/* @group Tab Side Panel */ - -div.tabSidePanel { - margin-right: -10px; -/* - position: absolute; - width: 250px; - height: 250px; - top: 250px; - left: 10px; -*/ -} - -div.tabSidePanel ul { - margin: 0px; - padding-left: 0px; - list-style-type: none; - color: #f78b46; -} - -/* @group Main tabs */ - -div.tabSidePanel ul.mainTabs { - margin: 0px; -} - -div.tabSidePanel ul.mainTabs li { -/* margin-bottom: 6px;*/ -} - -div.tabSidePanel ul.mainTabs li a { - display: block; - line-height: 30px; - height: 43px; - padding-left: 40px; - color: #ff6621; - margin: 0px; - font-weight: normal; - font-size: 13pt; - text-decoration: none; -} - -div.tabSidePanel ul.mainTabs li div.selectionHighlighter { - display: none; -} - -div.tabSidePanel ul.mainTabs li.selected div.selectionHighlighter { - display: block; - position: absolute; - left: 154px; - margin-top: -43px; -} - -/* -div.tabSidePanel ul.mainTabs li.selected div.selectionHighlighter div.selectionHighlighterIcon { - background-image: url(../images/main/tabs/selectionHighligher.png); - width: 50px; - height: 34px; - float: left; - z-index: 35000; - border: 1px solid red; -} -*/ - -div.tabSidePanel ul.mainTabs li.selected div.selectionHighlighter a.add { - font-size: 14pt; - font-weight: bold; - position: relative; - top: -34px; - right: 16px; - background: none; - color: #c0531b; - padding-left: 15px; -} - -div.tabSidePanel ul.mainTabs li.selected div.selectionHighlighter a.add:hover { - color: white; -} - -div.tabSidePanel ul.mainTabs li.selected div.selectionHighlighter a.add span { - font-size: 8pt; - vertical-align: middle; -} - -div.tabSidePanel ul.mainTabs li.selected div.selectionHighlighter a.add h3 { - display: inline; - padding-left: 5px; -} - -div.tabSidePanel ul.mainTabs li.cards.selected a { - margin-left: -10px; - padding-left: 50px; - color: white; - background: url(../images/old/main/tabs/cardsBackground.png) -9px -14px; -} - -div.tabSidePanel ul.mainTabs li.cards.selected a:hover { - background: url(../images/old/main/tabs/cardsBackground.png) -9px -14px; -} - -div.tabSidePanel ul.mainTabs li.cards a { - background: url(../images/old/main/tabs/cardsBackground.png) -19px -63px; -} - -div.tabSidePanel ul.mainTabs li.cards a:hover { - background: url(../images/old/main/tabs/cardsBackground.png) -19px -110px; -} - - - -div.tabSidePanel ul.mainTabs li.directLogins.selected a { - margin-left: -10px; - padding-left: 50px; - color: white; -/* background: url(../images/old/main/tabs/directLoginBackground.png) 0 -1px; */ - background: url(../images/old/main/tabs/directLoginBackground.png) -9px -14px; -} - -div.tabSidePanel ul.mainTabs li.directLogins.selected a:hover { - color: white; -/* background: url(../images/old/main/tabs/directLoginBackground.png) 0 -1px; */ - background: url(../images/old/main/tabs/directLoginBackground.png) -9px -14px; -} - -div.tabSidePanel ul.mainTabs li.directLogins a { -/* background: url(../images/old/main/tabs/directLoginBackground.png) 0 -34px; */ - background: url(../images/old/main/tabs/directLoginBackground.png) -19px -63px; -} - -div.tabSidePanel ul.mainTabs li.directLogins a:hover { -/* background: url(../images/old/main/tabs/directLoginBackground.png) 0 -67px; */ - background: url(../images/old/main/tabs/directLoginBackground.png) -19px -110px; -} - - - - - -/* @end */ - -/* @group Other tabs */ - -div.tabSidePanel ul.otherTabs { - margin: 10px 0px; -} - -div.tabSidePanel ul.otherTabs li { - margin-top: -4px; -} - -div.tabSidePanel ul.otherTabs li div.selectionHighlighter { - display: none; -} - -div.tabSidePanel ul.otherTabs li.selected div.selectionHighlighter { - display: block; - position: absolute; - left: 154px; - margin-top: -42px; -} - -div.tabSidePanel ul.otherTabs a { - display: block; - line-height: 36px; - height: 43px; - padding-left: 40px; - color: #ff6621; - text-decoration: none; -/* background: url(../images/old/main/tabs/itemsBackground.png) -10px -49px; */ -} - -div.tabSidePanel ul.otherTabs li.selected a { -/* background: url(../images/old/main/tabs/itemsBackground.png) 0 -1px; */ -/* background: url(../images/old/main/tabs/itemsBackground.png) 0 -67px; */ - margin-left: -10px; - padding-left: 50px; - background: url(../images/old/main/tabs/itemsBackground.png) 1px -96px; - color: white; -} - -div.tabSidePanel ul.otherTabs a:hover { -/* background: url(../images/old/main/tabs/itemsBackground.png) 0 -34px; */ - background: url(../images/old/main/tabs/itemsBackground.png) -10px -49px; -} - -/* @end */ - -/* @end */ - -/* @group Tag Side Panel */ - -div.tagSidePanel { -/* - position: relative; - width: 250px; - min-height: 100px; - left: 10px; -*/ - - margin-right: -8px; -} - -div.tagSidePanel div.header { - height: 50px; - background-image: url(../images/old/main/tabs/tagsBackground.png); -} - -div.tagSidePanel div.header h1 { - padding-left: 52px; - padding-top: 14px; - font-size: 14pt; - font-weight: normal; - color: #888888; -} - -div.tagSidePanel div.body { - background: url(../images/old/main/tabs/tagsBackground.png) -255px; -} - -div.tagSidePanel div.footer { - height: 10px; - background: url(../images/old/main/tabs/tagsBackground.png) -510px -40px; -} - -div.tagSidePanel ul.tags { - margin: 0px; - list-style-type: none; - padding: 0px; -} - -div.tagSidePanel ul.tags li a { - display: block; - font-size: 9pt; - text-decoration: none; - color: #ff6621; - padding: 0px 4px 0px 15px; - line-height: 20px; -} - -div.tagSidePanel ul.tags li a:hover { - background-color: #dddddd; -} - -div.tagSidePanel ul.tags li.selected a:hover { -} - -div.tagSidePanel ul.tags li span.tagCardinality { - float: right; - font-size: 8pt; - color: #999999; - margin-right: 15px; - margin-top: -17px; -} - -div.tagSidePanel ul.tags li.selected a { - background-color: #d4d5cf; -} - -div.tagSidePanel ul.tags li.selected a:hover { - background-color: #d4d5cf; -} - -div.tagSidePanel ul.tags li.selected a { - font-weight: bold; -} - -/* @end */ - - -/* @group Group Side Panel */ - -div.groupSidePanel { - margin-right: -10px; -/* - position: relative; - width: 250px; - min-height: 100px; - left: 10px; -*/ -} - -div.groupSidePanel div.header { - height: 50px; - background-image: url(../images/old/main/tabs/groupsBackground.png); -} - -div.groupSidePanel div.header h1 { - padding-left: 52px; - padding-top: 14px; - font-size: 14pt; - font-weight: normal; - color: white; -} - -div.groupSidePanel div.header a { - float: right; - margin-top: -30px; - margin-right: 20px; - text-decoration: none; - color: #666666; - font-size: 9pt; - line-height: 18px; -} - -div.groupSidePanel div.header a:hover { - color: #444444; -} - -div.groupSidePanel div.body { - background: url(../images/old/main/tabs/groupsBackground.png) -255px; -} - -div.groupSidePanel div.footer { - height: 10px; - background: url(../images/old/main/tabs/groupsBackground.png) -510px -39px; -} - - - -div.groupSidePanel ul.groups { - margin: 0px; - list-style-type: none; - padding: 0px; -} - -div.groupSidePanel ul.groups li a { - display: block; - font-size: 9pt; - text-decoration: none; - color: white; - padding: 0px 4px 0px 15px; - line-height: 20px; -} - -div.groupSidePanel ul.groups li a:hover { - background-color: #aaaaaa; -} - -div.groupSidePanel ul.groups li.selected a:hover { -} - -div.groupSidePanel ul.groups li span.groupCardinality { - float: right; - font-size: 8pt; - color: #dddddd; - margin-right: 15px; - margin-top: -17px; -} - -div.groupSidePanel ul.groups li.selected a { - background-color: #bbbbbb; -} - -div.groupSidePanel ul.groups li.selected a:hover { - background-color: #bbbbbb; -} - -div.groupSidePanel ul.groups li.selected a { - font-weight: bold; -} - -/* @end */ - - - -/* @end */ - -/* @group MainPanels */ - -div.mainPanels { - float: left; - width: 833px; - margin-top: -38px; -/* - position: relative; - width: 100%; - min-height: 600px; - top: -40px; - left: 250px; -*/ -} - -div.mainFooter { - clear: both; -} - -/* @end */ - -/* @group Grids */ - -/* @group grid Component */ - -/* @group delete */ - -div.gridComponent table.rows tbody tr td.delete { -} - -/*div.body div.rows table.rows tbody tr td.delete */ -div.delete, -div.new { - padding-left: 5px; - height: 19px; -} - -div.new span, -div.delete span { - margin: 0px; - padding: 0px; - border: 0px; - display: inline-block; - height: 19px; - padding-right: 6px; -} - -div.new span a, -div.delete span a { - white-space: nowrap; -} - -div.delete:hover { - background: url(../images/old/delete_background_left.png) no-repeat 0; -} -div.delete:hover span { - background: url(../images/old/delete_background.png) no-repeat right 0; -} - -div.new:hover { - background: url(../images/old/new_background_left.png) no-repeat 0; -} -div.new:hover span { - background: url(../images/old/new_background.png) no-repeat right 0; -} - -/* -tr.selected div.delete { - background: url(../images/old/delete_background_left.png) no-repeat 0; -} -tr.selected div.delete span { - background: url(../images/old/delete_background.png) no-repeat right 0; -} -*/ -div.body div.rows table.rows tbody tr td.delete div.delete span a { - visibility: hidden; - font-size: 8pt; - vertical-align: -13px; - color: black; -} - -div.body div.rows table.rows tbody tr.selected td.delete div.delete span a { - visibility: visible; -} - -div.body div.rows table.rows tbody tr:hover td.delete div.delete span a { - visibility: visible; -} - -div.body div.rows table.rows tbody tr:hover td.delete div.delete:hover span a { - color: white; -} -/* -div.body div.rows table.rows tbody tr.selected td.delete div.delete span a { - color: white; -} -*/ -/* @end */ - -/* @group header */ - -div.gridComponent table.rows thead tr th { - text-align: left; - height: 30px; - vertical-align: bottom; -} - -div.gridComponent table.rows thead tr th.sortable span { - cursor: pointer; -} - -div.gridComponent table.rows thead tr th.sortable span a { - margin-left: 5px; - padding-left: 10px; -} - -div.gridComponent table.rows thead tr th.directLoginTH { - width: 420px; -} - -div.gridComponent table.rows thead tr th.latestUpdateTH { - width: 100px; -} - -div.gridComponent table.rows thead tr th.commandsTH { - width: 150px; -} - -div.gridComponent table.rows thead a { - text-decoration: none; -} - -div.gridComponent table.rows thead span { - font-weight: normal; - font-size: 9pt; - line-height: 20px; -} - -div.gridComponent div.header div.headerSlot { - float: right; -} - -/* @end */ - -div.mainPanels div.gridComponent div.body table.rows td.favicon { - padding-left: 25px; -} - -div.mainPanels div.gridComponent div.body table.rows td.favicon img { - width: 16px; - height: 16px; - border: 0px; -} - - - -/* @end */ - -/* @group Card Grid */ - -/* @group DirectLogin links */ - -div.gridComponent th.directLoginTH span { - margin-left: 7px; -} - -td.card_directLogins div { - display: inline-table; -} - -td.card_directLogins span { - display: inline-block; -} -/* -td.card_directLogins a { - display: inline-table; - height: 19px; - - padding-right: 7px; -} - -td.card_directLogins a:hover { - background: url(../images/old/directLink_background.png) right 0; -} -*/ - -div.card_directLogin { - display: inline-block; - height: 19px; - padding-left: 7px; -} - -div.card_directLogin_ellipses span { - padding-bottom: 2px; -} - -div.card_directLogin div.card_directLogin_body { - display: inline-block; - height: 19px; - padding-right: 8px; - background-position: left; -} - -div.card_directLogin div.card_directLogin_body a{ - vertical-align: -14px; -} - -/*div.card_directLogin:hover {*/ -div.card_directLogin:hover { - background: url(../images/old/directLink_background_left.png) no-repeat 0 0; -} - -/*div.card_directLogin:hover div {*/ -div.card_directLogin:hover div.card_directLogin_body { - background: url(../images/old/directLink_background.png) right 0; -} - -/* @group DirectLogin Popup */ - -div.DirectLoginListPopup { - position: absolute; - width: 184px; -} - -div.DirectLoginListPopup div.DirectLoginListPopup_body { - background-image: url(../images/old/directLogins_background.png); - padding-top: 8px; -} - -div.DirectLoginListPopup div.DirectLoginListPopup_footer { - height: 8px; - background-image: url(../images/old/directLogins_background_bottom.png); -} - -div.DirectLoginListPopup div.DirectLoginListPopup_body ul { - margin: 0px; - padding-left: 13px; - list-style: none; -} - -div.DirectLoginListPopup div.DirectLoginListPopup_body ul li { - padding-top: 4px; - height: 20px; - padding-right: 10px; - white-space: nowrap; -} - -div.DirectLoginListPopup div.DirectLoginListPopup_body ul li div { - padding-right: 10px; - overflow: hidden; -} -div.DirectLoginListPopup div.DirectLoginListPopup_body ul li img.favicon { - padding-left: 9px; - padding-right: 5px; -} - -div.DirectLoginListPopup div.DirectLoginListPopup_body ul li a { - text-decoration: none; - color: white; - font-weight: normal; - font-size: 10pt; - vertical-align: 3px; - white-space: nowrap; - padding-right:8px; -} - -div.DirectLoginListPopup div.DirectLoginListPopup_body ul li:hover { -/* background-color: #a5a696; */ -/* background-color: #7b7d70; */ - background-color: rgba(123,125,112,0.5); -} - -div.DirectLoginListPopup div.DirectLoginListPopup_body ul li:hover a { - background: url(../images/old/directLink_no_background.png) right; -} - -/* @end */ - - -/* @end */ - -div.mainPanels div.gridComponent div.header { -/* - height: 90px; - background: url(../images/old/main/blocks/cardGridBackground.png) no-repeat; -*/ - background: url(../images/old/main/blocks/cardGridBackground.png) no-repeat; - padding-left: 40px; - padding-right: 40px; - padding-top: 20px; - padding-bottom: 10px; -} - -div.mainPanels div.gridComponent div.header form.search { - height: 32px; - margin: 0px; -} - -div.mainPanels div.gridComponent div.header form.search div.clearSearchButton { - position: absolute; - margin-left: 192px; - width: 22px; - height: 22px; - margin-top: 6px; - background: url(../images/old/filter/clearFilter_notSelected.png) no-repeat; -} - -div.mainPanels div.gridComponent div.header form.search div.clearSearchButton:hover { - background: url(../images/old/filter/clearFilter_selected.png) no-repeat; - cursor: pointer; -} - -div.mainPanels div.gridComponent div.header form.search div.search { - display: block; - float: left; - width: 217px; -} - -div.mainPanels div.gridComponent div.header form.search input.search { - border: 1px solid #76786a; - color: #666666; - font-size: 12pt; - width: 100%; - padding: 4px; - padding-left: 24px; - padding-right: 26px; - background: #e8ecde url(../images/old/main/grid/search.png) no-repeat 2px 4px; -} - -div.mainPanels div.gridComponent div.header form.search input.search.disabled { - disabled:disabled; -} - -div.mainPanels div.gridComponent div.header form.search input.search.running { - background: #e8ecde url(../images/old/main/grid/running_search.gif) no-repeat 4px 5px; -} - -div.mainPanels div.gridComponent div.body { - clear: both; - background: url(../images/old/main/blocks/cardGridBackground.png) repeat-y -836px; -} - -div.mainPanels div.gridComponent div.footer { - background: url(../images/old/main/blocks/cardGridBackground.png) 834px -28px; - height: 35px; -} - -div.mainPanels div.gridComponent div.body h1 { - margin: 0px; -} - -div.mainPanels div.gridComponent div.body div.rows { - margin-left: 9px; - margin-right: 6px; - min-height: 582px; - background: url(../images/old/main/blocks/cardGridStripes.png) 0 7px; -} - -div.mainPanels div.gridComponent.noRows div.body table.rows thead, -div.mainPanels div.gridComponent.empty div.body table.rows thead { - visibility: hidden; -} - -div.mainPanels div.gridComponent.empty div.body div.rows { - background: #eaebe6 url(../images/old/lock/background_star.png) no-repeat center center; -} - -div.mainPanels div.gridComponent.noRows div.body div.rows { - background: #eaebe6; -} - -div.mainPanels div.gridComponent div.body table.rows { - display: block; - width: 100%; -} - -div.mainPanels div.gridComponent div.body table.rows tbody tr.odd.selected { - background-color: #a5a696; -} - -div.mainPanels div.gridComponent div.body table.rows tbody tr.even.selected { - background-color: #a5a696; -} - -div.mainPanels div.gridComponent div.body table.rows tbody tr.selected td a { - color: #f3f4eb; -} - - -div.mainPanels div.gridComponent div.body table.rows tbody tr.odd { - background-color: #d4d5cf; -} - -div.mainPanels div.gridComponent div.body table.rows tbody tr.even { - background-color: #eaebe6; -} - -div.mainPanels div.gridComponent div.body table.rows tbody tr.odd:hover { - background-color: #a5a696; -} - -div.mainPanels div.gridComponent div.body table.rows tbody tr.even:hover { - background-color: #a5a696; -} - -div.mainPanels div.gridComponent div.body table.rows tbody tr td { - height: 23px; - max-height: 23px; -/* - white-space: nowrap; - overflow: hidden; -*/ -} - -div.mainPanels div.gridComponent div.body table.rows tbody tr td span { - color: #828479; - font-size: 10pt; -} - -div.mainPanels div.gridComponent div.body table.rows tbody tr td a { - color: #828479; - font-size: 10pt; - text-decoration: none; -} - -div.mainPanels div.gridComponent div.body table.rows tbody tr:hover td span { - color: #f3f4eb; -} - -div.mainPanels div.gridComponent div.body table.rows tbody tr.selected td span { - color: #f3f4eb; -} - -div.mainPanels div.gridComponent div.body table.rows tbody tr:hover td a { - color: #f3f4eb; -} - -div.mainPanels div.gridComponent div.body table.rows tbody tr td.title a { - font-weight: bold; -} - -div.mainPanels div.gridComponent div.body table.rows tbody tr td img.favicon { - float: right; - padding-right: 6px; -} - -/* @group header */ - -div.gridComponent table.rows thead img { - padding-left: 10px; - vertical-align: middle; -} - -div.gridComponent table.rows thead tr th { - background-color: #eaebe6; - border-bottom: 1px solid #b3b4af; -} - -div.gridComponent table.rows thead span { - color: #8c8f7e; -} - -div.gridComponent table.rows thead tr th.unsorted span.sortable a { - background-image: url(../images/old/main/grid/unsorted.png); -} - -div.gridComponent table.rows thead tr th.descending span.sortable a { - background-image: url(../images/old/main/grid/descending.png); -} - -div.gridComponent table.rows thead tr th.ascending span.sortable a { - background-image: url(../images/old/main/grid/ascending.png); -} - -div.gridComponent table.rows thead tr th.faviconTH { - width: 53px; -} - -div.gridComponent table.rows thead tr th.titleTH { - width: 200px; - max-width: 200px; -} - -div.gridComponent table.rows thead tr th.deleteTH { - width: 50px; -} - - -/* @end */ - - -/* @end */ - -/* @group Direct login Grid */ -/* -div.mainPanels div.directLoginGrid div.header { -/* - height: 90px; - background: url(../images/old/main/blocks/cardGridBackground.png) no-repeat; -* / -} - -div.mainPanels div.directLoginGrid div.header form.search { - background: url(../images/old/main/blocks/directLoginGridBackground.png) no-repeat; - padding-left: 40px; - padding-top: 20px; - padding-bottom: 10px; - margin: 0px; -} - -div.mainPanels div.directLoginGrid div.header form.search input.search { - border: 1px solid #76786a; - color: #666666; - font-size: 12pt; - padding: 4px; - background-color: #e8ecde; -} - -div.mainPanels div.directLoginGrid div.header form.search input.searchButton { - background-color: #858877; - border: 0px; - color: white; - font-size: 10pt; -} - -div.mainPanels div.directLoginGrid div.body { - background: url(../images/old/main/blocks/directLoginGridBackground.png) repeat-y -836px; -} - -div.mainPanels div.directLoginGrid div.footer { - background: url(../images/old/main/blocks/directLoginGridBackground.png) 834px -28px; - height: 35px; -} - -div.mainPanels div.directLoginGrid div.body h1 { - margin: 0px; -} - -div.mainPanels div.directLoginGrid div.body div.rows { - margin-left: 9px; - margin-right: 6px; - min-height: 582px; - background: url(../images/old/main/blocks/directLoginGridStripes.png) 0 7px; -} - -div.mainPanels div.directLoginGrid div.body table.rows { - display: block; - width: 100%; -} - -div.mainPanels div.directLoginGrid div.body table.rows img { - border: 0px; -} - -div.mainPanels div.directLoginGrid div.body table.rows tbody tr.even { - background-color: #787666; -} - -div.mainPanels div.directLoginGrid div.body table.rows tbody tr.odd { - background-color: #646351; -} - -div.mainPanels div.directLoginGrid div.body table.rows tbody tr.odd:hover { - background-color: #d1d4c6; -} - -div.mainPanels div.directLoginGrid div.body table.rows tbody tr.even:hover { - background-color: #d1d4c6; -} - -div.mainPanels div.directLoginGrid div.body table.rows tbody tr td { - height: 23px; - color: #e1e0d6; - font-size: 10pt; -} - -div.mainPanels div.directLoginGrid div.body table.rows tbody tr:hover td { - color: #777867; -} - -div.mainPanels div.directLoginGrid div.body table.rows tbody tr td.title { - font-weight: bold; -} - -div.directLoginGrid div.body table.rows tbody tr a { - color: #e1e0d6; - text-decoration: none; -} - -div.directLoginGrid div.body table.rows tbody tr:hover a { - color: #777867; -} -*/ - -/* @group DirectLogin links */ -/* -td.card_directLogins div { - display: inline-table; -} - -td.card_directLogins span { - display: inline-table; -} -*/ -div.directLogin_directLogin { - display: inline-block; - height: 19px; - padding-left: 7px; -} - -div.directLogin_directLogin div.directLogin_directLogin_body { - display: inline-block; - height: 19px; - padding-right: 8px; - background-position: left; -} - -div.directLogin_directLogin div.directLogin_directLogin_body a { - vertical-align: -14px; -} - -div.directLogin_directLogin:hover { - background: url(../images/old/directLink_background_left.png) no-repeat 0 0; -} - -div.directLogin_directLogin:hover div.directLogin_directLogin_body { - background: url(../images/old/directLink_background.png) right 0; -} - -table.rows tbody tr td div.directLogin_directLogin:hover div.directLogin_directLogin_body a { - color: #f3f4eb; -} - - - -/* @end */ - - - -/* @group header */ - -div.directLoginGrid table.rows thead span { - color: #e1e0d6; -} - -div.directLoginGrid table.rows thead tr th { - background-color: #787762; - border-bottom: 1px solid #999883; -} - -div.directLoginGrid table.rows thead tr th.faviconTH { - min-width: 53px; - width: 53px; -} - -div.directLoginGrid table.rows thead tr th.titleTH { - min-width: 250px; - width: 250px; -} - -div.directLoginGrid table.rows thead tr th.titleTH span { - margin-left: 7px; -} - -div.directLoginGrid table.rows thead tr th.strengthTH { - width: 100px; -} - -div.directLoginGrid table.rows thead tr th.cardTitleTH { - width: 400px; -} - -div.directLoginGrid table.rows thead tr th.bookmarkableLinkTH { - width: 64px; -} - -div.directLoginGrid table.rows thead tr th.deleteTH { - width: 50px; -} - -div.directLoginGrid table.rows thead tr th.latestAccessTH { - width: 100px; -} - -div.directLoginGrid table.rows thead tr th.commandsTH { - width: 100px; -} -/* -div.directLoginGrid table.rows thead a { - font-weight: normal; - text-decoration: none; - color: #e9e9df; - font-size: 9pt; - line-height: 20px; -} -*/ -div.directLoginGrid table.rows thead img { - padding-left: 10px; - vertical-align: middle; -} - -div.directLoginGrid table.rows thead tr th.unsorted span.sortable a { - background: url(../images/old/main/grid/directLogins/unsorted.png) no-repeat; -} - -div.directLoginGrid table.rows thead tr th.descending span.sortable a { - background: url(../images/old/main/grid/directLogins/descending.png) no-repeat; -} - -div.directLoginGrid table.rows thead tr th.ascending span.sortable a { - background: url(../images/old/main/grid/directLogins/ascending.png) no-repeat; -} - -/* @end */ - - - -/* @end */ - - - -/* @end */ - - -/* @end */ - -/* @group other Panels */ - -/* @group common styles */ -div.subPanelTabs { -} - -div.subPanelTabs ul { - margin: 0px; - margin-right: 7px; - padding: 0px; -} - -div.subPanelTabs ul li.first { -} - -div.subPanelTabs ul li { - display: inline-block; - vertical-align: middle; -/* width: 130px; */ - height: 50px; -/* border-right: 1px solid #a5a79c; - border-bottom: 1px solid #a5a79c;*/ - border-right: 1px solid #eef0e3; - border-bottom: 1px solid #d5d5bc; -} - -div.subPanelTabs ul li.first:hover { -/* background: url(../images/old/main/blocks/otherPanelBackground_selected.png) no-repeat -9px -5px; */ -} - -div.subPanelTabs ul li:hover { -/* background: url(../images/old/main/blocks/otherPanelBackground_selected.png) no-repeat -45px -5px; */ - border-right: 1px solid #d5d5bc; - background-color: #eef0e3; -} - -div.subPanelTabs ul li a { - color: #787872; - text-decoration: none; - display: block; - text-align: center; - padding-top: 15px; - padding-left: 20px; - padding-right: 20px; - font-size: 13pt; -} - -div.subPanelTabs ul li.first { -/* background: url(../images/old/main/blocks/otherPanelBackground_selected.png) no-repeat -9px -5px; */ - -webkit-border-top-left-radius: 20px; - -moz-border-radius-topleft: 20px; - border-top-left-radius: 20px; -} - -div.subPanelTabs ul li.selected { -/* background: url(../images/old/main/blocks/otherPanelBackground_selected.png) no-repeat -45px -5px; */ - background-color: #eef0e3; - border-bottom: 1px solid #eef0e3; - border-right: 1px solid #d5d5bc; -} - -div.subPanelTabs ul li.selected:hover { - border-right: 1px solid #d5d5bc; -} - - -div.subPanelTabs ul li.selected a { - color: #444440; -} - - - - - - -div.subPanelContent { - padding-top: 20px; - padding-left: 30px; - padding-right: 30px; - min-height: 280px; - color: #787872; - margin: 0px 6px 0 9px; -} - -div.subPanelContent ul { - margin: 0px; - padding: 0px; - list-style-type: none; -} - -div.subPanelContent ul li.selected { - display: block; -} - -div.subPanelContent ul li { - display: none; -} - -div.subPanelContent h3 { - margin: 0px; - border: 0px; - padding: 0px; -} - -/* @end */ - -/* @group mainPanels otherPanel */ -div.mainPanels div.otherPanel { - margin: 5px 10px; - background-color: #eef0e3; - - -webkit-border-radius: 20px; - -moz-border-radius: 20px; - border-radius: 20px; - - -webkit-box-shadow: 2px 2px 9px rgba(0,0,0,0.6); - -moz-box-shadow: 2px 2px 9px rgba(0,0,0,0.6); - box-shadow: 2px 2px 9px rgba(0,0,0,0.6); -} -div.mainPanels div.otherPanel div.header { -/* background: url(../images/old/main/blocks/otherPanelBackground.png) no-repeat; */ -/* - height: 90px; -*/ - background-color: #d5d5bc; - -/* padding-left: 9px; - padding-top: 5px; */ - margin: 0px; - margin-bottom: 0px; - - -webkit-border-top-left-radius: 20px; - -webkit-border-top-right-radius: 20px; - -moz-border-radius-topleft: 20px; - -moz-border-radius-topright: 20px; - border-top-left-radius: 20px; - border-top-right-radius: 20px; -} - -div.mainPanels div.otherPanel div.body { -/* background: url(../images/old/main/blocks/otherPanelBackground.png) repeat-y -836px; */ - margin: 0px; - border: 0px; - padding: 0px; -} - -div.mainPanels div.otherPanel div.footer { -/* background: url(../images/old/main/blocks/otherPanelBackground.png) 834px -18px; */ - height: 45px; -} - -div.mainPanels div.otherPanel div.body h1 { - margin: 0px; -} - -/* @end */ - -/* @group Account */ - -form.changePassphrase { -} - -form.changePassphrase div.currentCredentials, -form.changePassphrase div.newPassphrase { - float: left; - padding: 10px 20px; -} - -form.changePassphrase label { - display: inline-block; - width: 150px; -} - -form.changePassphrase div.confirm { - clear: both; - padding: 10px 20px; -} - -form.changePassphrase div.confirm label { - width: 500px; -} - -div.currentCredentials { -} - -div.accountPanel h3.manageOTP { - margin-top: 20px; - margin-left: -20px; - padding-top: 10px; - padding-left: 20px; - border-top: 1px solid #aaaaaa; -} - -/* @end */ - - - -/* @end */ - -/* @group Message Panel (?) */ -/* -div.messagePanelWrapper div.mask { - position: fixed; - top: 0px; - left: 0px; - right: 0px; - bottom: 0px; - - background-color: black; - z-index:50001; - - -moz-opacity: 0.0; - opacity:.0; - filter: alpha(opacity=0); -/ * - -moz-opacity: 0.7; - opacity:.70; - filter: alpha(opacity=70); -* / -} - -div.messagePanelFrame { - border: 1px solid white; - z-index:50002; -/ * - width: 443px; - height: 155px; - position: fixed; - top: 205px; - left: 260px; - margin-left: auto; - margin-right: auto; - max-width: 468px; -* / -} - - -div.messagePanel { - position: fixed; - z-index:50003; - top: 0px; - left: 0px; -/ * - margin-left: auto; - margin-right: auto; - max-width: 468px; - top: 200px; - left: 250px; - left: 100px; - right: 100px; -* / -} - -div.messagePanel div.header { - height: 34px; - width: 468; - background-image: url(../images/old/alert/header.png); -} - -div.messagePanel div.body { - background-image: url(../images/old/alert/body.png); - padding: 0px 20px 10px 20px; - min-height: 100px; -} -/ * -div#javaScriptAlert div.body div.alert { - padding-left: 100px; - background: url(../images/old/alert/alert.png) no-repeat; -} -* / - -div.messagePanel div.body img.alert { - float: left; -} - -div.messagePanel div.body div.alert { - padding-left: 100px; -} - -div.messagePanel div.footer { - height: 34px; - width: 468; - background-image: url(../images/old/alert/footer.png); -} - -div.messagePanel div.message h1 { - font-size: 16pt; - margin: 0px; - color: #ff5930; -} - -div.messagePanel div.message p { - margin-top: 0px; - color: #999999; -} - -div.messagePanel div.message h3 { - font-size: 12pt; - margin-bottom: 0px; - color: #ff5930; -} - -div.messagePanel div.message h5 { - margin: 0px; - color: #999999; -} - - -*/ -/* @end */ - -/* @group LoginProgress (?) */ -/* -div#loginProgress { - position: relative; - left: -198px; - top: -118px; - width: 397px; - height: 236px; - background: url(../images/old/loginProgress/background.png); -} - -div#loginProgress div.header { - height: 52px; -} - -div#loginProgress div.header h3 { - font-size: 12pt; - font-weight: normal; - margin: 0px; - color: #787872; - padding-top: 25px; - padding-left: 35px; -} - -div#loginProgress div.body { - height: 120px; - overflow: auto; - margin-left: 19px; - margin-right: 18px; -} - -div#loginProgress div.footer { - margin-left: 19px; - margin-right: 18px; -} - -div#loginProgress div.footer a { - font-weight: bold; - text-decoration: none; - text-align: center; - color: #787872; - display: block; - font-size: 11pt; - width: 100px; - margin-top: 13px; - margin-left: auto; - margin-right: auto; -} - -div#loginProgress div.footer a:hover { - color: #515247; -} - -*/ - -/* @end */ - - - -div#modalDialogMask, -div.modalDialogMask { - z-index: 20000; -/* position: absolute; */ - position: fixed; - top:0; - left:0; - -moz-opacity: 0.5; - opacity: .50; - filter: alpha(opacity=50); -/* background-color: #cccccc; */ - background-color: #000000; - width: 100%; - height: 100%; - zoom: 1; -} - -div#modalDialogFrame, -div.modalDialogFrame { - position: absolute; -/* border: 1px solid white; */ - -moz-opacity: 0.5; - opacity: .50; - filter: alpha(opacity=50); - background-color: #333333; - z-index: 20001; - - -webkit-border-radius: 20px; - -moz-border-radius: 20px; - border-radius: 20px; -} - -div#modalDialog, -div.modalDialog { - z-index: 20001; -} - -/*div#modalDialog.scrollable,*/ -div.modalDialog.scrollable { - position: absolute; - top: 0; - left: 50%; -} - -/*div#modalDialog.fixed,*/ -div.modalDialog.fixed { - position: fixed; - top: 40%; - left: 50%; -} - -div#modalDialog div, -div.modalDialog div { - z-index: 20002; - list-style-type: circle; -} - - - -div.modalDialogMask.simpleMessagePanelMask { - z-index: 20010; -} - -div.modalDialogFrame.simpleMessagePanelMask { - z-index: 20011; -} - -div.modalDialog.simpleMessagePanelMask { - z-index: 20011; -} - -div.modalDialog.simpleMessagePanelMask div { - z-index: 20012; -} - - -/* @group Bookmarklet */ - -div.bookmarklet { -} - -div.bookmarklet div.bookmarklet_link { -/* - padding-top: 5px; - padding-left: 4px; - padding-right: 3px; - - float: right; - margin-top: 12px; - margin-right: 13px; -*/ - height: 34px; -} - -div.bookmarklet div.bookmarklet_link a { - color: #838975; - text-decoration: none; - font-weight: bold; - font-size: 10pt; -/* - display: block; - text-align: right; - padding-top: 7px; - padding-right: 11px; - padding-bottom: 6px; -*/ -} - -div.bookmarklet div.bookmarklet_link a div.icon { - background: url(../images/old/bookmarklet/placeholder_icon.png) no-repeat 0 0; - float: left; - width: 34px; - height: 34px; -} - -div.bookmarklet div.bookmarklet_link a:hover div.icon { - background: url(../images/old/bookmarklet/placeholder_selected_icon.png) no-repeat 0 0; -} - -div.bookmarklet div.bookmarklet_link a div.text { - display: block; - float: right; - background: url(../images/old/bookmarklet/placeholder.png) no-repeat right 0; - white-space: nowrap; - height: 34px; -} - -div.bookmarklet div.bookmarklet_link a:hover div.text { - background: url(../images/old/bookmarklet/placeholder_selected.png) no-repeat right 0; -} -div.bookmarklet div.bookmarklet_link a div.text span { - display: block; - padding-top: 10px; - padding-right: 10px; - padding-left: 6px; - - clear: both; -} - -/* @end */ - -/* @group Tooltip */ - -/* -div#Clipperz_PM_UI_Common_Components_Tooltip_wrapperNode { - position: absolute; - top: 0px; - left: 0px; -} -*/ - -div.tooltip { - position: absolute; - z-index: 30001; -} - - -div.tooltip div.tooltip_body { - position: absolute; -} - -div.tooltip div.tooltip_arrow { - position: absolute; -} - -div.tooltip.BELOW div.tooltip_arrow { - background: url(../images/old/tooltips/top_arrow.png) no-repeat; -} - -div.tooltip.ABOVE div.tooltip_arrow { - background: url(../images/old/tooltips/bottom_arrow.png) no-repeat; -} - -div.tooltip.LEFT div.tooltip_arrow { - background: url(../images/old/tooltips/right_arrow.png) no-repeat; -} - -div.tooltip.RIGHT div.tooltip_arrow { -/* margin-top: 7px; */ - background: url(../images/old/tooltips/left_arrow.png) no-repeat; -} -div.tooltip.RIGHT div.tooltip_body { -/* padding-left: 13px; */ -} - - -div.tooltip div.tooltip_body div.tooltip_text { - width: 171px; - background: url(../images/old/tooltips/body.png) no-repeat center top; -} - -div.tooltip.LEFT div.tooltip_body div.tooltip_text, -div.tooltip.RIGHT div.tooltip_body div.tooltip_text { - min-height: 45px; -} - -div.tooltip div.tooltip_body span { - display: block; - padding: 10px; - padding-bottom: 4px; - font-size: 10pt; - color: white; -} - -div.tooltip div.tooltip_footer { - height: 7px; - background: url(../images/old/tooltips/body_bottom.png) no-repeat; -} - -/* @end */ - -/* @group News */ -/* -div#news { - top: 11px; - left: 240px; - width: 353px; - height: 85px; - padding-top: 4px; - position: absolute; - overflow: hidden; - background: url(../images/old/note.png) 1px 3px; -} - -div#news.hidden { - display: none; -} - -div#news div.close { - display: inline; - margin-top: 6px; - margin-left: 17px; - float: left; - width: 15px; -} - -div#news div.close a { - text-decoration: none; - color: #929c1b; -} - -div#news div.close a:hover { - text-decoration: none; - color: #3d420b; -} - -div#news div#newsframe { - display: block; - overflow: hidden; - width: 305px; - height: 70px; -} - -div#news div#newsframe iframe { - border: 0px; -} -*/ -/* --------------------------------------- */ - -div#news { - top: -82px; - left: 240px; - width: 310px; - height: 90px; - position: absolute; -/* background: url(../images/old/tips/Tips_background.png) 0 -5px; */ - - background-color: #616474; - - -webkit-border-bottom-right-radius: 8px; - -webkit-border-bottom-left-radius: 8px; - -moz-border-radius-bottomright: 8px; - -moz-border-radius-bottomleft: 8px; - border-bottom-right-radius: 8px; - border-bottom-left-radius: 8px; - - -webkit-box-shadow: 2px 2px 9px rgba(0,0,0,0.6); - -moz-box-shadow: 2px 2px 9px rgba(0,0,0,0.6); - box-shadow: 2px 2px 9px rgba(0,0,0,0.6); -} -/* -div#news.open { - background: url(../images/old/tips/Tips_open.png) 0 -5px; -} - -div#news.hidden { - background: url(../images/old/tips/Tips_close.png) 0 -5px; -} -*/ -div#news div#newsframe { - margin-left: 10px; - margin-right: 10px; - height: 75px; - overflow: hidden; -} - -div#news div#newsframe.loading { - background: url(../images/old/loading/news.gif) no-repeat center center; -} - -div#news div#newsframe iframe { - width: 290px; - border: 0px; - color: #616474; - background-color: #616474; -} - -div#news div.grip { - width: 310px; - height: 12px; - margin-top: 2px; - cursor: pointer; -} - -div#news.open div.grip { - background: url(../images/old/tips/close.png) no-repeat center 6px; -} - -div#news.hidden div.grip { - background: url(../images/old/tips/open.png) no-repeat center 6px; -} - -/* @end */ - -/* @group mainDialog */ -div.mainDialog { - position: relative; - left: -263px; - width: 525px; - height: 325px; -} - -div.scrollable div.mainDialog { - top: 0px; -} - -div.fixed div.mainDialog { - top: -118px; -} - -div.mainDialog div.header { - height: 55px; - background: url(../images/old/cardDialog/background_header.png) no-repeat; -} - -div.mainDialog div.header div.title { - padding-top: 16px; - padding-left: 20px; - padding-right: 20px; -} - -div.mainDialog div.header div.title input { - width: 100%; - display: block; - font-size: 16pt; - margin: 0px; - border: 0px; - padding: 3px 10px; - color: #787872; - border: 1px solid #cccec0; - background-color: #cccec0; -} - -div.mainDialog div.header div.title h3 { - display: block; - font-size: 16pt; - color: #787872; - margin: 0px; - border: 0px; - padding: 3px 10px; -} - -div.mainDialog div.header div.title.selectedField input, -div.mainDialog div.header div.title:hover input { - border: 1px solid #515247; - background-color: #b5b7ab; -} - -div.mainDialog div.header div.title.disabled:hover input { - border: 1px solid #cccec0; - background-color: #cccec0; -} - -div.mainDialog div.body { - padding-top: 0px; - padding-left: 10px; - padding-right: 9px; - min-height: 200px; - background: url(../images/old/cardDialog/background_body.png) repeat-y; -} - -div.mainDialog div.body div.mask { - display: none; -} - -div.mainDialog.loading div.body div.mask { - display: block; - position: absolute; - top: 55px; - left: 10px; - right: 9px; - bottom: 70px; - z-index:1001; - background-color: white; - padding-left: 146px; - padding-right: 146px; - padding-top: 70px; -} - -div.mainDialog.loading div.body .tabPanels { - display: none; -} - -div.mainDialog.loading div.body div.mask h3.progressDescription { - margin: 0px; - text-align: center; - padding-bottom: 10px; - color: #cccec0; - font-size: 14pt; - font-weight: normal; -} - -div.loadingBar { - height: 22px; - width: 214px; - background: url(../images/old/loading/loadingBar.gif) no-repeat center top; -} - -div.loadingBar div.loadingBarProgressBox { - padding: 2px; -} - -div.loadingBar div.loadingBarProgress { - height:18px; - width: 0%; -/* background-repeat: no-repeat; */ - background-color: rgba(248,79,0,0.6); - -webkit-border-radius: 9px; - -moz-border-radius: 9px; - border-radius: 9px; -} - -/* -div.loadingBar div.loadingBarProgress div.loadingBarProgress_left { - height: 100%; - max-width: 8px; - background: url(../images/old/loading/loadingBarProgress.png) no-repeat 0; -} - -div.loadingBar div.loadingBarProgress div.loadingBarProgress_right { - position: relative; - height: 100%; - margin-left: 8px; - background: url(../images/old/loading/loadingBarProgress.png) no-repeat right; - top: -22px; -} -*/ - -div.mainDialog div.body div ul { - padding: 0px; - clear: both; - margin: 0px; - list-style-type: none; -} - -div.mainDialog div.body div.tabs { - height: 20px; -} - -div.mainDialog div.body div.tabs ul.tabs { - height: 33px; -/* border-bottom: 1px solid #515247;*/ -/* background: #cccec0 url(../images/old/cardDialog/tabs_shadow.png) repeat-x 0 -5px;*/ - background: url(../images/old/cardDialog/tabs_background.png) repeat-x; -} - -div.mainDialog div.body div.tabs ul.tabs li { -/* width: 150px; */ - height: 32px; - font-size: 11pt; - text-align: center; - border-right: 1px solid #515247; - float: left; - color: #787872; - border-bottom: 1px solid #515247; - - background: #cccec0 url(../images/old/cardDialog/tabs_shadow.png) repeat-x 0 -5px; - cursor: pointer; -} - -div.mainDialog div.body div.tabs ul.tabs li div { - display: none; -} - -div.mainDialog div.body div.tabs ul.tabs li span { - display: block; - padding-top: 9px; - padding-bottom: 6px; - padding-left: 40px; - padding-right: 40px; -} - -div.mainDialog div.body div.tabs ul.tabs li:hover { - color: #515247; -} - -div.mainDialog div.body div.tabs ul.tabs li.disabled:hover { - color: #787872; - cursor: default; -} - -div.mainDialog div.body div.tabs ul.tabs li.selected { - color: #515247; - background-color: #f1f2e9; - border-bottom: 1px solid #f1f2e9; - cursor: default; -} - -div.mainDialog div.body div.tabs ul.tabs li.selected.disabled:hover { - color: #515247; -} - -div.mainDialog div.body div.tabs ul.tabs li.selected div.backToDirectLoginList { - position: absolute; - display: block; - top: 63px; - left: 140; - width: 20px; -} - -div.mainDialog div.body div.tabs ul.tabs li.selected div.addDirectLoginButton { - position: absolute; - display: block; - top: 63px; - left: 265px; - - width: 20px; -} - -div.mainDialog div.body div.tabs ul.tabs li.selected div span { - padding: 0px; - margin: 0px; -} - -div.mainDialog div.body div.tabs ul.tabs li.selected div:hover { - cursor: pointer; -} - -div.mainDialog div.body .tabPanels { - clear: both; -} - -div.mainDialog div.body ul.tabPanels li.tabPanel { - display: none; -} - -div.mainDialog div.body ul.tabPanels li.tabPanel.selected { - display: block; -} - -div.mainDialog div.body ul.tabPanels li.tabPanel.selected h2 { - margin: 0px; - text-align: center; - padding-top: 50px; - color: #787872; -} - -div.mainDialog div.body ul.tabPanels li.tabPanel.selected div.wizardStepDescription { - margin: 0px 20px 10px; - font-size: 10pt; - color: b0b0b0; - font-style: italic; - text-align: center; -} - -div.mainDialog div.footer { - height: 70px; - background: url(../images/old/cardDialog/background_footer.png) no-repeat 0 -14px; -} - -div.mainDialog div.footer div.buttonArea { - padding-left: 40px; - padding-right: 40px; - padding-top: 15px; -} - -div.mainDialog div.footer div.buttonArea div { - padding-left: 20px; - padding-right: 20px; - float: left; - - font-weight: bold; - color: #787872; -} - -div.mainDialog div.footer div.buttonArea div.disabled { - color: #b1b1a8; -} - -div.mainDialog div.footer div.buttonArea div.disabled:hover { - color: #b1b1a8; - cursor: default; -} - -div.mainDialog div.footer div.buttonArea div:hover { - color: #515247; - cursor: pointer; -} - -div.mainDialog div.footer div.buttonArea div.save { - float: right; -} - - -/* @end */ - -/* @group Card Dialog */ - -div.addDirectLoginButton { - height: 20px; - width: 20px ; - background: url(../images/old/cardDialog/addDirectLogin_disabled_background.png) no-repeat -9px -9px; - color: white; - font-weight: bold; -} - -div.addDirectLoginButton span { - display: block; - height: 20px; - width: 20px ; -} - -div.addDirectLoginButton:hover { - background: url(../images/old/cardDialog/addDirectLogin_background.png) no-repeat -9px -9px; -} - -/* @group Card Dialog - Direct Login */ - -div.directLoginsComponentContainer { - overflow: hidden; -/* background-color: green; */ -} - -div.CardDialog div.directLogins { -/* background-color: yellow; */ - padding-top: 2px; -} - -div.CardDialog div.addNewDirectLoginSplash { - margin: 0px 80px; -} - -div.CardDialog div.addNewDirectLoginSplash h3 { - color: #aaaaaa; - text-align: center; - font-weight: normal; - font-size: 11pt; -} - -div.CardDialog div.addNewDirectLoginSplash a { - display: block; - text-decoration: none; - margin-left: auto; - margin-right: auto; - width: 190px; -/* color: #787878; */ - color: rgba(255,98,6,0.75); - text-transform: uppercase; - background: url(../images/old/cardDialog/addDirectLogin_disabled_background.png) no-repeat right; -} - -div.CardDialog div.addNewDirectLoginSplash a span { - text-align: center; -} - -div.CardDialog div.addNewDirectLoginSplash a:hover { - color: #ff6206; - background: url(../images/old/cardDialog/addDirectLogin_background.png) no-repeat right; -} - -div.CardDialog div.directLoginItem { - clear: both; - min-height: 32px; - padding-left: 10px; - padding-top: 4px; - padding-bottom: 2px; - -/* width: 100px; */ - max-height: 32px; - overflow: hidden; -} - -div.CardDialog div.directLoginItem:hover { - background-color: #cccec0; -} - -div.CardDialog div.addDirectLoginListItem { - min-height: 32px; - padding-left: 10px; - padding-top: 4px; - padding-bottom: 2px; - - max-height: 32px; - overflow: hidden; - - background: url(../images/old/cardDialog/addDirectLogin_disabled_background.png) no-repeat 22px 0; -} - -div.CardDialog div.addDirectLoginListItem a { - display: block; - font-size: 11pt; - padding-top: 6px; - padding-left: 50px; - color: rgba(255,98,6,0.75); - text-decoration: none; - text-transform: uppercase; -} - -div.CardDialog div.addDirectLoginListItem:hover { - background: url(../images/old/cardDialog/addDirectLogin_background.png) no-repeat 22px 0; - color: #ff6206; - background-color: #cccec0; -} - -div.CardDialog div.addDirectLoginListItem:hover { -} - - -div.CardDialog div.directLoginItem div.cardDialogRecordDirectLoginComponent_favicon img.favicon { - width: 32px; - height: 32px; - float: left; -} -div.CardDialog div.directLoginItem div.cardDialogRecordDirectLoginComponent_label input { - float: left; - font-size: 11pt; - border: 0px; - padding: 5px; - color: #787872; - border: 1px solid #ededeb; - background-color: #ededeb; - height: 30px; - margin-left: 10px; - width: 68%; - margin-right: 5px; -} - -div.CardDialog div.directLoginItem:hover div.cardDialogRecordDirectLoginComponent_label input { - border: 1px solid #515247; - background-color: #b5b7ab; -} - -div.CardDialog div.directLoginItem > div.open { - float: left; - margin-top: 5px; - margin-right: 2px; - padding-left: 5px; - visibility: hidden; -} - -div.CardDialog div.directLoginItem > div.edit, -div.CardDialog div.directLoginItem > div.delete { - float: left; - margin-top: 5px; - margin-left: 3px; - padding-left: 5px; - visibility: hidden; -} - -div.CardDialog div.directLoginItem > div.open a { - display: block; - width: 22px; - height: 22px; - background: url(../images/old/cardDialog/openDirectLogin.png) no-repeat 0 -2px; -} - -div.CardDialog div.directLoginItem > div.open a:hover { - background: url(../images/old/cardDialog/openDirectLogin_selected.png) no-repeat 0 -2px; -} - -div.CardDialog div.directLoginItem:hover > div.open, -div.CardDialog div.directLoginItem:hover > div.edit, -div.CardDialog div.directLoginItem:hover > div.delete { - visibility: visible; -} - -div.CardDialog div.directLoginItem div.edit span { - padding-right: 6px; - display: block; -} - -div.CardDialog div.directLoginItem div.open span a, -div.CardDialog div.directLoginItem div.edit span a, -div.CardDialog div.directLoginItem div.delete span a { - font-size: 8pt; - color: #666666; - text-decoration: none; - line-height: 19px; -} - -div.CardDialog div.directLoginItem div.edit:hover { - background: url(../images/old/new_background_left.png) no-repeat; -} - -div.CardDialog div.directLoginItem div:hover span a { - color: white; -} - -div.CardDialog div.directLoginItem div.edit:hover span { - background: url(../images/old/new_background.png) no-repeat right center; -} - -div.CardDialog div.directLoginItem div.delete:hover { - background: url(../images/old/delete_background_left.png) no-repeat; -} - -div.CardDialog div.directLoginItem div.delete:hover span { - background: url(../images/old/delete_background.png) right; -} - -/* @group Direct Login Editing */ - -div.CardDialog div.directLoginEditDetail { - position: relative; -/* background-color: red; */ -} - -/* -div.CardDialog div.directLoginEditDetail div.back { - float: left; - width: 30px; -} - -div.CardDialog div.directLoginEditDetail div.back a { - display: block; - padding: 5px; - text-decoration: none; - font-weight: bold; - font-size: 14pt; - color: #cccec0; - - background: url(../images/old/cardDialog/back.png) no-repeat 5px 14px; - width: 20px; - height: 200px; -} - -div.CardDialog div.directLoginEditDetail div.back a:hover { - color: #7f7872; - background: url(../images/old/cardDialog/back_selected.png) no-repeat 5px 14px; -} -*/ - - -form.directLoginEditingForm div.title, -form.directLoginEditingForm div.favicon { - padding: 5px 10px; -} - -form.directLoginEditingForm div.title.disabled:hover { - background-color: #f1f2e9; -} - -form.directLoginEditingForm div.title:hover, -form.directLoginEditingForm div.favicon:hover { - background-color: #cccec0; -} - -form.directLoginEditingForm div.title input { -/* width: 100%; */ - margin: 0px; - margin-left: 10px; - width: 440px; -} - -form.directLoginEditingForm div.favicon { - padding-left: 10px; -} - -/*form.directLoginEditingForm div.favicon img.favicon {*/ -form.directLoginEditingForm img.favicon { - float: left; - width: 32px; - height: 32px; -} - -form.directLoginEditingForm div.favicon input { - margin-top: 1px; - width: 465px; -} - -form.directLoginEditingForm div.disabled:hover input, -form.directLoginEditingForm div input { - font-size: 11pt; - border: 0px; - padding: 5px; - color: #787872; - border: 1px solid #ededeb; - background-color: #ededeb; - height: 30px; -} - -form.directLoginEditingForm div:hover input { - border: 1px solid #515247; - background-color: #b5b7ab; -} - -/* @group Bindings */ - -div.bindings div.binding > span.formFieldName { - display: inline-block; - width: 140px; - overflow: hidden; - margin-right: 10px; - color: #6b5147; - text-overflow:ellipsis; -} - -div.bindings div.binding { - padding-bottom: 3px; -} - -div.bindings div.binding > input { - margin-right: 10px; - background: #cccec0; - width: 150px; - border: 1px solid #cccec0; -} - -div.bindings div.binding:hover > input { - border: 1px solid #cccec0; -} - -div.bindings div.binding > select { - font-size: 13pt; -} - -div.bindings div.binding span.fieldLock { - display: inline-block; - width: 20px; - height: 20px; - margin-right: 3px; -} - -div.bindings div.binding.showLocked input { - background: url(../images/old/cardDialog/password_background.png) no-repeat 2px 3px; -/* color: black; */ - overflow: hidden; - - background: #cccec0 url(../images/old/cardDialog/password_background.png) no-repeat 2px 3px; - color: rgba(237,237,235,0.1); -} - -div.bindings div.binding span.fieldLock a { - display: none; -} - -div.bindings div.binding.locked span.fieldLock { -} - -div.bindings div.binding.locked span.fieldLock a { - display: block; - width: 20px; - height: 20px; - text-decoration: none; - - background-image: url(../images/old/cardDialog/lock_open.png); -} - -div.bindings div.binding.locked.showLocked span.fieldLock a { - background-image: url(../images/old/cardDialog/lock_closed.png); - text-decoration: none; -} - -/* @end */ - -/* @group FormValues */ - -div.formValues { - padding-top: 15px; -} - -div.formValues div.formValue div { - margin: 0px; - display: inline-block; -} - -div.formValues div.formValue > span.formFieldName { - display: inline-table; - width: 160px; - overflow: hidden; - margin-right: 10px; - color: #6b5147; -} - -/* @end */ - - -/* @group FormValues */ -/* -div.formValues { - padding-top: 15px; -} - -div.formValues div.formValue > span.formFieldName { - display: inline-table; - width: 150px; - overflow: hidden; - margin-right: 35px; - color: #6b5147; -} - -div.formValues div.formValue > select { - padding-left: 20px; -} -*/ -/* @end */ - -/* @group Panels */ - -div.directLoginEditing { - padding-top: 2px; -} - -div.directLoginEditing div.tabContainer { - min-height: 150px; - height: 200px; -} - -div.directLoginEditing div.tabContainer > ul.tabs { - display: none; -} - -/* -div.directLoginEditing li.configuration, -div.directLoginEditing li.bindings, -div.directLoginEditing li.favicon { - padding: 10px; -} -*/ -div.directLoginEditing li { - padding: 10px; -} - -div.directLoginEditing li.configuration > .bookmarkletConfigurationWrapper > textarea { - float: left; - width: 320px; - height: 125px; - font-family: monospace; - font-weight: normal; - font-size: 8pt; - border: 1px solid #ccc; -} - -div.directLoginEditing li.configuration > .bookmarkletConfigurationWrapper .bookmarkletComponent { - float: right; -} - -div.directLoginEditing li.configuration > textarea.error { - border: 1px solid red; - background-color: rgba(255,0,0,0.1); -} - -/* -div.directLoginEditing > form.directLoginEditingForm > div.tabContainer { - padding-top: 10px; -} - -div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li { - float: left; - padding-left: 10px; - padding-right: 10px; - display: block; - font-size: 10pt; - color: #787872; - cursor: pointer; - - height: 22px; - text-align: center; - border-right: 1px solid #aaa; - border-bottom: 1px solid #aaa; - border-top: 1px solid #aaa; - - background-color: #cccec0; -} - -div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li:first-child { - border-left: 1px solid #aaa; -} - -div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs { - height: 23px; - padding-left: 10px; - border-bottom: 1px solid #aaa; - margin-left: 10px; - margin-right: 10px; -} - -div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li > span { - line-height: 23px; -} - -div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li.selected { - color: #6a5147; - cursor: default; - border-bottom: 1px solid #f1f2e9; - background-color: #f1f2e9; -} - -div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li:hover { - color: #6a5147; -} - -div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabPanels { - padding-bottom: 5px; - margin-left: 10px; - margin-right: 10px; -} - -div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabPanels > li.selected { - border-bottom: 1px solid #aaa; - border-left: 1px solid #aaa; - border-right: 1px solid #aaa; -} - -div.directLoginEditing li.configuration { - padding: 5px; -} - -div.directLoginEditing li.configuration > textarea { - width: 100%; - height: 100px; - font-family: monospace; - font-weight: normal; - font-size: 8pt; -} -*/ -/* @end */ - -/* @end */ - -/* @end */ - -/* @group Card Dialog FIELDS */ - -div.CardDialog div.body { - padding-bottom: 1px; -} - -div.CardDialog div.body table.fields { - width: 100%; - padding-top: 8px; - padding-bottom: 1px; -} - -div.CardDialog div.body table.fields thead { - background: url(../images/old/cardDialog/dottedLine_background.png) repeat-x 0 15px; -} - -div.CardDialog div.body table.fields tfoot { - background: url(../images/old/cardDialog/dottedLine_background.png) repeat-x 0 bottom; -} - -div.CardDialog div.body table.fields thead th { - text-align: left; - font-weight: normal; - font-size: 9pt; - color: #787872; - padding-left: 10px; - padding-bottom: 3px; - -/* - border-bottom: 1px dotted; -*/ -} - - -div.CardDialog div.body table.fields thead th.fieldStateTH { - width: 10px; -} - -div.CardDialog div.body table.fields thead th.fieldLabelTH { -} - -div.CardDialog div.body table.fields tbody td.fieldLabel input { - width: 130px; -} - -div.CardDialog div.body table.fields thead th.fieldLockTH { - width: 10px; -} - - -div.CardDialog div.body table.fields thead th.fieldValueTH { -} - -div.CardDialog div.body table.fields tbody td.fieldValue input { - width: 280px; -} - -div.CardDialog div.body table.fields thead th.fieldActionTH { - width: 30px; -} - -div.CardDialog div.body table.fields tbody td.fieldAction div { -} - -div.CardDialog div.body table.fields thead th.fieldDeleteTH { - width: 40px; -} - -div.CardDialog div.body table.fields tbody tr:hover, -div.CardDialog div.body table.fields tbody tr.selectedField { - background-color: #cccec0; -} - -div.CardDialog div.body table.fields tbody tr td { - font-size: 11pt; - color: #787872; - height: 35px; -} - - -div.CardDialog div.body table.fields tbody tr td input { - font-size: 11pt; - border: 0px; - padding: 5px; - color: #787872; - border: 1px solid #ededeb; - background-color: #ededeb; - height: 30px; -} -/* -div.CardDialog div.body table.fields tbody tr td.fieldValue div { - margin-right: 10px; -} - -div.CardDialog div.body table.fields tbody tr td.fieldValue div input { - width: 100%; -} -*/ -div.CardDialog div.body table.fields tbody tr td.fieldValue div.locked input { - background: #ededeb url(../images/old/cardDialog/password_background.png) no-repeat 2px 3px; - color: #ededeb; - color: rgba(237,237,235,0.1); -/* color: black; */ -/* line-height: 100px; */ - overflow: hidden; -} - -div.locked input.value::-moz-selection { - background: #ff0000; -} - -div.locked input.value::selection { - background: #ff0000; -} - - -div.CardDialog div.body table.fields tbody tr.new.selectedField td input, -div.CardDialog div.body table.fields tbody tr.new:hover td input, -div.CardDialog div.body table.fields tbody tr:hover td input, -div.CardDialog div.body table.fields tbody tr.selectedField td input { - border: 1px solid #515247; - background-color: #b5b7ab; -} - -div.CardDialog div.body table.fields tbody tr:hover td.fieldValue div.locked input, -div.CardDialog div.body table.fields tbody tr.selectedField td.fieldValue div.locked input { - background: #b5b7ab url(../images/old/cardDialog/password_background.png) no-repeat 2px 3px; - color: #b5b7ab; - color: rgba(237,237,235,0.1); -} - - - -div.CardDialog div.body table.fields tbody td.fieldLock div { - width: 20px; - height: 19px; - cursor: pointer; -} - -div.CardDialog div.body table.fields tbody tr:hover td.fieldLock div.locked { - background-image: url(../images/old/cardDialog/lock_closed.png); -} - -div.CardDialog div.body table.fields tbody tr:hover td.fieldLock div.unlocked { - background-image: url(../images/old/cardDialog/lock_open.png); -} - -div.CardDialog div.body table.fields tbody tr td.fieldAddDelete div span a { - text-decoration: none; - visibility: hidden; - font-size: 8pt; - vertical-align: -13px; - color: black; -} - -div.CardDialog div.body table.fields tbody tr.selectedField td.fieldAddDelete div span a { - visibility: visible; -} - -div.CardDialog div.body table.fields tbody tr:hover td.fieldAddDelete div span a { - visibility: visible; -} - -div.CardDialog div.body table.fields tbody tr:hover td.fieldAddDelete div:hover span a { - color: white; -} - - -div.CardDialog div.body div.notes { - background: url(../images/old/cardDialog/dottedLine_background.png) repeat-x 0 0; - padding-top: 2px; -} - -div.CardDialog div.body div.notes div { - padding-left: 20px; - padding-right: 20px; - padding-top: 4px; - padding-bottom: 4px; -} - -div.CardDialog div.body div.notes div:hover, -div.CardDialog div.body div.notes.selectedField div { - background-color: #cccec0; -} - -div.CardDialog.loading div.body div.notes div textarea { - display: none; -} - -div.CardDialog div.body div.notes div textarea { - border: 0; - width: 470px; -/* - width: 100%; - height: 100px; - min-height: 400px; - overflow: hidden; -*/ - color: #787872; - border: 1px solid #ededeb; - background-color: #ededeb; - display: block; - line-height: 12pt; - min-height: 50px; -} - -div.CardDialog div.body div.notes div:hover textarea, -div.CardDialog div.body div.notes.selectedField div textarea { - border: 1px solid #515247; - background-color: #b5b7ab; -} - - -div.CardDialog div.body table.fields tbody tr td.fieldAction { -/* background-color: red; */ - padding-left: 4px -} - -div.CardDialog div.body table.fields tbody tr td.fieldAction a { - display: inline-block; - text-decoration: none; - text-align: center; - width: 16px; - height: 16px; -} - -div.CardDialog div.body table.fields tbody tr td.fieldAction a.email { - background: url(../images/old/cardDialog/fieldTypes/email.png) no-repeat 0 0; -} - -div.CardDialog div.body table.fields tbody tr td.fieldAction a.email:hover { - background: url(../images/old/cardDialog/fieldTypes/email_selected.png) no-repeat 0 0; -} - -div.CardDialog div.body table.fields tbody tr td.fieldAction a.url { - background: url(../images/old/cardDialog/fieldTypes/url.png) no-repeat 0 0; -} - -div.CardDialog div.body table.fields tbody tr td.fieldAction a.url:hover { - background: url(../images/old/cardDialog/fieldTypes/url_selected.png) no-repeat 0 0; -} - -div.CardDialog div.body table.fields tbody tr td.fieldAction a.password { - background: url(../images/old/cardDialog/fieldTypes/password.png) no-repeat 0 0; -} - -div.CardDialog div.body table.fields tbody tr td.fieldAction a.password:hover { - background: url(../images/old/cardDialog/fieldTypes/password_selected.png) no-repeat 0 0; -} - -/* -/ *div.CardDialog div.body table.fields tbody* / tr.new { - background: yellow; -} - -div.CardDialog div.body table.fields tbody tr.new td input { - border: 1px solid red; - background-color: green; -} -*/ -/* @end */ - - - -/* @end */ - -div#disabledZone { - display: block; - visibility: visible; -} - -div#messageZone { - display: block; - visibility: visible; -} - - -div.CardDialog div.error div.img { - margin: 10px; - width: 50px; - height: 50px; - float: left; - - background-image: url(../images/old/simpleMessageBox/Alert.png); -} - -/* @group Ruler */ -/* -div.rulerExtraWrapper { - position: absolute; - top: 0px; - left: 0px; - width: 100%; - height: 100%; - overflow: hidden; - background-color: rgba(255, 0, 0, 0.2); - z-index: 24999; -} -*/ - -div.rulerWrapper { - left: -1000px; - margin-top: -30px; - margin-left: 50%; - z-index: 25000; -} - -div.rulerWrapper.fixed { - position: fixed; -} - -div.rulerWrapper.scrollable { - position: absolute; -} - -div.ruler { -/* position: absolute; */ - width: 541px; - height: 96px; - margin-left: -270px; - - background: url(../images/old/ruler/ruler.png) no-repeat; -} - -div.ruler a { - position: absolute; - display: block; - - width: 15px; - height: 15px; - top: 3px; - text-decoration: none; -} - -div.ruler a.exit { - margin-left: 2px; - background: url(../images/old/ruler/exit.png) no-repeat; -} - -div.ruler a.exit:hover { - background: url(../images/old/ruler/exit_selected.png) no-repeat; -} - -div.ruler a.smallButton.previous { - right: 16px; - background: url(../images/old/ruler/small_previous.png) no-repeat; -} - -div.ruler a.smallButton.previous:hover { - cursor: pointer; - background: url(../images/old/ruler/small_previous_selected.png) no-repeat; -} - -div.ruler a.smallButton.previous.disabled, -div.ruler a.smallButton.previous.disabled:hover { - cursor: default; - background: url(../images/old/ruler/small_previous_disabled.png) no-repeat; -} - -div.ruler a.smallButton.next { - right: 3px; - background: url(../images/old/ruler/small_next.png) no-repeat; -} - -div.ruler a.smallButton.next:hover { - cursor: pointer; - background: url(../images/old/ruler/small_next_selected.png) no-repeat; -} - -div.ruler a.smallButton.next.disabled, -div.ruler a.smallButton.next.disabled:hover { - cursor: default; - background: url(../images/old/ruler/small_next_disabled.png) no-repeat; -} - -div.ruler div.steps, div.ruler div.dots { - position: absolute; - background-color: rgba(255,255,255,0); - - margin-left: 30px; - margin-right: 30px; -} - -div.ruler div.steps { - top: 25px; - height: 30px; -} - -div.ruler div.dots { - top: 58px; - height: 25px; -} - -div.ruler div ul { - list-style-type: none; - margin: 0px; - padding: 0px; -} - -div.ruler div ul li { - display: inline-block; - vertical-align: top; -} - -div.ruler > div.steps > ul > li:first-child, -div.ruler > div.dots > ul > li:first-child { - margin-left: 0px; -} - -div.ruler div.steps_3 ul li { - margin-left: 135px; -} - -div.ruler div.steps_4 ul li { - margin-left: 67px; -} - -div.ruler div.steps_5 ul li { - margin-left: 32px; -} - -div.ruler div.steps_6 ul li { - margin-left: 12px; -} - -div.ruler div ul li span { - font-weight: bold; - text-align: center; - width: 70px; - display: block; - font-size: 8pt; - overflow: hidden; - color: rgba(0, 0, 0, 0.3); -} - -div.ruler div ul li.selected span { - color: black; -} - -div.ruler div.steps ul li span { -} - -div.ruler div.dots ul li span { -/* - text-align: center; - width: 26px; - margin-left: 22px; - margin-right: 22px; - height: 25px; - background-color: #e57218; -*/ - font-size: 40pt; - line-height: 47px; -} - -div.ruler div.marker { - position: absolute; - top: -3px; -/* left: -246px; */ -} -div.ruler div.marker div.markerBody { - width: 77px; - height: 97px; - background: url(../images/old/ruler/marker.png) no-repeat; -} - -div.ruler div.marker div.next { - position: absolute; - top: 25px; - left: 76px; - width: 27px; - height: 65px; - background: url(../images/old/ruler/next.png) no-repeat -13px; - - z-index: 26000; -} - -div.ruler div.marker div.next:hover { - cursor: pointer; - background: url(../images/old/ruler/next.png) no-repeat -2px; -} - -div.ruler div.marker div.disabled { - display: none; -} - -div.ruler div.marker div.previous { - position: absolute; - top: 25px; - left: -24px; - width: 27px; - height: 65px; -/* background: url(../images/old/ruler/previous.png) no-repeat 13px 1px; */ - background: url(../images/old/ruler/previous.png) no-repeat 18px 1px; - - z-index: 26000; -} - -div.ruler div.marker div.previous:hover { - cursor: pointer; -/* background: url(../images/old/ruler/previous.png) no-repeat 2px 1px; */ - background: url(../images/old/ruler/previous.png) no-repeat 7px 1px; -} - -/* @end */ - -div.createNewCardSplash { - margin-top: -450px; - margin-left: 250px; - width: 354px; - float: left; - height: 186px; - - text-align: center; - background: url(../images/old/main/grid/createNewCardSplash.png) no-repeat; -} - -div.createNewCardSplash:hover { - cursor: pointer; - background: url(../images/old/main/grid/createNewCardSplash_selected.png) no-repeat; -} - -div.createNewCardSplash span { - display: block; - padding-top: 130px; - font-size: 14pt; - color: #9a9586; -} - -div.createNewCardSplash:hover span { - color: #605c4e; -} - - - -/*=============================================*/ - -div.NewUserCreation div.tabContainer { - min-height: 150px; - height: 200px; -} - -div.NewUserCreation div.tabContainer > ul.tabs { - display: none; -} - -ul.createUserStates li.creating { - background: url(../images/old/creatingUser.gif) no-repeat center center; -} - -ul.createUserStates li { - height: 100px; -} - -ul.createUserStates li span { - display: block; - width: 100%; - text-align: center; - color: #999; - font-style: italic; -} - -div.NewUserCreation form.newUserCreationForm ul.tabPanels { - padding-top: 10px; -} - -div.NewUserCreation form.newUserCreationForm ul ul { - margin-left: auto; - margin-right: auto; - width: 400px; -} - -div.NewUserCreation form.newUserCreationForm ul.credentials li { - height: 45px; -} - -div.NewUserCreation form.newUserCreationForm ul.credentials span.label { - text-align: right; - display: inline-block; - font-size: 12pt; - color: #787872; - width: 110px; - vertical-align: baseline; -} - -div.NewUserCreation form.newUserCreationForm ul.credentials input { - font-size: 13pt; - color: #787872; - height: 35px; - margin-left: 15px; - padding-left: 5px; -} - -div.NewUserCreation form.newUserCreationForm ul.termsOfService li { - padding: 0 0 15 0; -} - -div.NewUserCreation form.newUserCreationForm ul.termsOfService input { - display: inline-block; -} - -div.NewUserCreation form.newUserCreationForm ul.termsOfService .label { - display: inline-block; - text-align: left; - font-size: 12pt; - color: #787872; - width: 350px; - vertical-align: top; - padding-left: 10px -} - -div.NewUserCreation form.newUserCreationForm ul.termsOfService a { - font-weight: bold; - color: #787872; - text-decoration: none; -} -div.NewUserCreation form.newUserCreationForm ul.termsOfService a:hover { - color: #444; -} - -div.NewUserCreation form.newUserCreationForm ul.createUserStates li.done span { - font-size: 16pt; - color: green; -} - -div.NewUserCreation form.newUserCreationForm ul.createUserStates li.fail span { - font-size: 16pt; - color: red; -}
\ No newline at end of file diff --git a/frontend/gamma/css/clipperz/iPhone.css b/frontend/gamma/css/clipperz/iPhone.css deleted file mode 100644 index ee1d795..0000000 --- a/frontend/gamma/css/clipperz/iPhone.css +++ b/dev/null @@ -1,461 +0,0 @@ -/* - -Copyright 2008-2011 Clipperz Srl - -This file is part of Clipperz Community Edition. -Clipperz Community Edition is an online password manager. -For further information about its features and functionalities please -refer to http://www.clipperz.com. - -* Clipperz Community Edition is free software: you can redistribute - it and/or modify it under the terms of the GNU Affero General Public - License as published by the Free Software Foundation, either version - 3 of the License, or (at your option) any later version. - -* Clipperz Community Edition is distributed in the hope that it will - be useful, but WITHOUT ANY WARRANTY; without even the implied - warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Affero General Public License for more details. - -* You should have received a copy of the GNU Affero General Public - License along with Clipperz Community Edition. If not, see - <http://www.gnu.org/licenses/>. - -*/ - -/* @override - https://www.example.com/iPHONE/css/iPhone.css - https://www.example.com/DEVELOPMENT/css/iPhone.css - https://www.example.com/WIZARD/css/iPhone.css -*/ - -/* ---------------------------------------- */ - -body { - margin: 0; - font-family: Helvetica; - background: #FFFFFF; - color: #000000; - overflow-x: hidden; - -webkit-user-select: none; - -webkit-text-size-adjust: none; -} - - -div.toolbar { - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - border-bottom: 1px solid #2d3642; - border-top: 1px solid #6d84a2; - padding: 10px; - height: 45px; -/* background: url(../images/old/iPhone/toolbar.png) #6d84a2 repeat-x; */ - background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAArCAIAAAA2QHWOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE1JREFUCNddjDEOgEAQAgn//5qltYWFnb1GB4vdSy4WBAYStKyb9+O0FJMYyjMyMWCC35lJM71r6vF1P07/lFSfPx6ZxNLcy1HtihzpA/RWcOj0zlDhAAAAAElFTkSuQmCCCg==) #6d84a2 repeat-x; -} - -div.toolbar h1#pageTitle { - overflow: hidden; - margin-top: 1px; - margin-bottom: 0px; - margin-left: auto; - margin-right: auto; - width: 150px; - height: 25px; /* 45px */ - font-size: 20px; - width: 150px; - font-weight: bold; - text-shadow: rgba(0, 0, 0, 0.4) 0px -1px 0; - text-align: center; - text-overflow: ellipsis; - white-space: nowrap; - color: #FFFFFF; -} - -div.toolbar a.button { - position: absolute; - overflow: hidden; - top: 8px; - right: 6px; - margin: 0; - border-width: 0 5px; - padding: 0 3px; - width: auto; - height: 30px; - line-height: 30px; - font-family: inherit; - font-size: 12px; - font-weight: bold; - color: #FFFFFF; - text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0; - text-overflow: ellipsis; - text-decoration: none; - white-space: nowrap; - background: none; -/* -webkit-border-image: url(../images/old/iPhone/toolButton.png) 0 5 0 5; */ -} - -div.toolbar a#backButton { -/* display: none; */ - left: 6px; - right: auto; - padding: 0px; - max-width: 55px; - border-width: 0 8px 0 14px; -/* -webkit-border-image: url(../images/old/iPhone/backButton.png) 0 8 0 14; */ - -webkit-border-image: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAeCAIAAAA6iHCJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtJJREFUeNrEV21P01AYbbtubNExBnXDbYjjZYI4BMdgEANDQoTElw/+Rw0mBs0UiSGaoJFEQEPwjRhFCW/JxrZ2Xdu1fe71bpAhCHzqupPnS5ObPOeec+5zb+lHLxao05HPiwvzr3/++J7N7FFGgaaDLe034+O+wCXyxSKET1u5+Wc98XTK39zeOzjudLmNIoAR2tlaf/Zkqm9gKNI/RBigE9dtb23MJKZj8fvuC16b3WGxsJRxOFfHeQOtH+ZnOI+XRfgEBoLAzz6fjo7ebfD4GYYhMiEdDGRAW6xOt6d7YGzl4xIL/7mgyPL044edkVt19T4EFAJEVQYud+MvOCkHc7MJ3+VrXGOzXrHeZS1s9trjOVj7tiqpONTWBRgD6BVmQFls9iMaSHnx/bu3ffEHgC2gVVqAIojKR3Iw9zLRcjVmtTnA0NydxQDg0IWvq59kYIOeZtWs9gQkagcMcgK/vLjYNXQHcEkas0AcYPdNIPr7Q/0M69B089ofavB5ZVm3OJ2cTwegzAUgxGbSe8tLS52xewjRZGabzAABZt+8mvGHBsiYNF+AAw1cXEBGNUiQqWpAlArM5MSYBXgEOl0NkLcCkxak28MRKbuDMa6KDAwAUnU8HO2Q+N0SJ3OLMCA7V1S9vt7d3tSg5LNV0ACXwOekcGfreVbVVYUqMjOvyPsH71cqkxsZ7NHFJIXBTCMONMAlEryoxAfDucyOmaOpmINyaTowrK23IyDxKbNzUIYoKU3+i37OXpCESvfGCOw11uMMcCkQke4rDlrS1coOSk2VOXftERfKtZsURmLXQUqBVqiUABgrQirc0Xp4Fv4t8kxN8dLkaJQupOVcGnTN0PuQHHlRSG1Eu9tUTLOnxZ5clclsfmK078va7/WN7axomCN2e42Xc/VEIoiiM0KePeM20DTY3M22BZtuhENW1rC/NrI3WVGTmZxSKEr7V4ABAJ+53J1I3nPjAAAAAElFTkSuQmCCCg==) 0 8 0 14; -} - -/* ------------------------------------------- */ - -body.iPhone form.loginForm { - min-height: 372px; - - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - padding: 10px; -/* background: #c8c8c8 url(../images/old/iPhone/pinstripes.png); */ - background: #c8c8c8 url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAIAAACdaSOZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpiPHrmCgMC/GNjYwNSAAEGADdNA3dnzPlQAAAAAElFTkSuQmCCCg==); -} - -fieldset { - position: relative; - margin: 0 0 20px 0; - padding: 0; - background: #FFFFFF; - -webkit-border-radius: 10px; - -moz-border-radius: 10px; - border: 1px solid #999999; - text-align: right; - font-size: 16px; -} - -.row { - position: relative; - min-height: 42px; - border-bottom: 1px solid #999999; - -webkit-border-radius: 0; - text-align: right; -} - -fieldset > .row:last-child { - border-bottom: none !important; -} - - -.row > input:not(input[type|=radio]):not(input[type|=checkbox]), -.row > div.fieldValue { - width: 100%; - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - margin: 0; - border: none; -/* padding: 0px; */ - padding: 0px 10px 0 112px; - height: 42px; - background: none; - font-size: 16px; - font-weight: normal; - - color: #666a60; - -webkit-user-select: text; -} - -/*.row > span.fieldValue {*/ -.row > div.fieldValue p { -/*.row > input.fieldValue {*/ - margin: 0px; - text-align: left; - height: 40px; - vertical-align: middle; - line-height: 40px; -/* padding: 0px 10px 0 112px; */ -} - -/*body[orientation="landscape"] .row > span.fieldValue.password {*/ -body[orientation="landscape"] .row > div.fieldValue.password { -/*body[orientation="landscape"] .row > input.fieldValue.password {*/ - padding-right: 120px; -/* background: url(../images/old/iPhone/password_background.png) no-repeat 105px; */ - background: url(data:image/png;charset=utf-8;base64,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) no-repeat 105px; -} - -/*.row > span.fieldValue.password {*/ -.row > div.fieldValue.password { -/*.row > input.fieldValue.password {*/ - color: rgba(255,255,255,0.5); -/* background: url(../images/old/iPhone/password_background.png) no-repeat 106px; */ - background: url(data:image/png;charset=utf-8;base64,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) no-repeat 106px; -} - -.row > div.fieldValue.password.clear { - color: #666a60; - background: none; -} - -.row > input[type|=radio], .row > input[type|=checkbox] { - margin: 7px 7px 0 0; - height: 25px; - width: 25px; -} - - -.row > label { - position: absolute; - margin: 0 0 0 14px; - line-height: 42px; - font-weight: bold; - max-width: 92px; - overflow: hidden; - white-space: nowrap; -} - -body[orientation="landscape"] .row > label { - max-width: 150px; -} - -body[orientation="landscape"] .row > input:not(input[type|=radio]):not(input[type|=checkbox]) { - padding-left: 140px; -} - -.row > img.favicon { - position: absolute; - width: 20px; - height: 20px; - top: 12px; - left: 11px; -} - -.row > span { - padding: 8px 13px; - text-align: left; - display: block; - color: #666a60; - font-size: 10pt; -} - -.row.notes { - -webkit-user-select: text; -} - -/* ------------------------------------------- */ - -.whiteButton { - margin-left: auto; - margin-right: auto; - width: 150px; - display: block; - border-width: 0 12px; - padding: 10px; - text-align: center; - font-size: 20px; - font-weight: bold; - text-decoration: inherit; - color: inherit; - -/* -webkit-border-image: url(../images/old/iPhone/whiteButton.png) 0 12 0 12; */ - -webkit-border-image: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAuCAQAAAB+dNqHAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAdAAAALgChnaVgAAAAAmJLR0QA/4ePzL8AAANhSURBVEjHnZZNaFxVFMd/5747mclMkpmxzYdJtFaJglgFpYSiBAVX7l0UUZGuSkEEu3PtSulCUXFdxYXL7kQQIWD9CsRIqdomGGOaSdJmZjKTeW/eu/e4mKRmrE3n5X83j/ve7/3POfe+d67QrTxP8QLDnMTenkv4kQ2+YZ6d/Y/Kvut+XuZVKtygzVbXC8v0cT+jXORLWneix/mAZZZwKIrSbSAIAcd5kDdZ6kaf4zzfEeLPnHrr+UeOWpMJ9rjYxe7a5ntff/YThhyneJ/Zf9Ep3uEXkhNjX50bHoiStoPE76HWiPQFfcGN+kufLKxheZJ3+aOD5vmIBaLXpz89HSVhzF2Uy2TtGxe/+JksJzjHjgCvMEHz6cnZt7dD5zlAgSlkZy7MrVDgbz43FJimhV46W2vFzutBI3aN8NJZlBbTFAKepZ/o/IszU1Gs95Tz2Uw1nFuiiTE8Rhs9fbIROt/LaISvTaO0mbIM0kTKeefoUSMDCI6SxRCT9d77XlFrCYgQi0PH72vH9CyNMSjO4tGM9do76hXB4y2KU+c8aaR41KJ4SIn6DgqgPq2rggWc+kMEjBUBVDUNKQBiOx+218Pl6tVr+jJhUZx4PYSr4XBSsAKaJH9tpirT7uIoTj3pAna43TJJWtSjYDpxp5bv5OpTb4mOq3IIX0W14ypeUq+rYBH5T9fqbRerWMClrbB4PBgUjZPUuXrUGBW51Yhc71y9LSJi1NgQxVWj3a7aw2gmONSGJtNAxC9v9+56vaoe6aubXEWy4meXe/+VXl42TvqzG4ZFCkRzv/+w3lu436/PX6NNnsUgCctjUUJwnWdGC/ZenpXw47loTRrldu3XwLkSrQmiHbkSP3FkwB4MXpjfWDE3JTfw29ZGAGHjgWJdcDW9XC/0PVS4W47fVj5cuLUmFWlOVlevei8ApVLp8bWclnWU4khpZvTRwaw5VggEINHlZuSv1mcr6zW2ZF22xqLqlWr19uYdGSkeWyn4IY5okX61GBHMrp1HJaYldW4G9Ylm7c/19a4jV6k0+fBmtjbkCwxoDovdQ0lIpEXTNIrbR6OVxWr1joNeJjM+Xhyu2+0+Z6Ocmt17Kj4bBvFgPJTUNlZX4/j/zohAJlMuF4vW5vP7Z3d2kqRW29qKuxr4P1RbNFwZtqq8AAAAAElFTkSuQmCCCg==) 0 12 0 12; - text-shadow: rgba(255, 255, 255, 0.7) 0 1px 0; -} - -/* ------------------------------------------- */ - -body.iPhone .loginProgressPanel { - min-height: 372px; - - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - padding: 10px; -/* background: #c8c8c8 url(../images/old/iPhone/pinstripes.png); */ - background: #c8c8c8 url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAIAAACdaSOZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpiPHrmCgMC/GNjYwNSAAEGADdNA3dnzPlQAAAAAElFTkSuQmCCCg==); -} - -body.iPhone .loadingBar { - margin-left: auto; - margin-right: auto; - margin-top: 60px; -} - -div.loadingBar { - height: 22px; - width: 214px; -/* background: url(../images/old/loading/loadingBar.gif) no-repeat center; */ - background: url(data:image/gif;charset=utf-8;base64,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) no-repeat center; -} - -div.loadingBar div.loadingBarProgress { - height: 100%; - width: 0%; -} - -div.loadingBar div.loadingBarProgress div.loadingBarProgress_left { - height: 100%; - max-width: 8px; -/* background: url(../images/old/loading/loadingBarProgress.png) no-repeat 0; */ - background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAANYAAAAWCAYAAAC8C2KaAAAACXBIWXMAAAsSAAALEgHS3X78AAACIklEQVR4Ae3brU7DUBQH8HO6PQAazx4BRUKDwfChQTGFQ4wRFGEERdgQONRQoGEzGFISFI8w/DQSWHsP565r0xY2BiWY/ivW+530l52cdr0jwgEBCPy5AE9aUc7XV0kcl4jniGR20lj0QaAYAtzXWHgmNh7v3HTGXfOXgSWnKy6VqEZMCKZxcmiHgFCfAjrjva6XxfgUWNJc3tVBG9mBqEMAAmMFrrl+10r2pgJLTpYO9dZvNTkAZQhAYAoBNh3evz+KRsaBJccLevtXakYdOEMAAj8UCII6Hzx6dlY5nipBjXwTV1GAAAR+KiA1neHZWcOMJY35FS03bAMOCEAgl0CDG0/dMGP5by6xk2s1TIYABFRAjKufo8AyfoUkftyCDwQg8FsBloqdGmaswMf7qt9CYh4E0gLDWBrdCg7SXahBAAK5BEYZa9AnZmStXJSYDAEVENEtT/GtYNAjxl5AfDEgkFtAuGfXCDPW4N0jh9zci2IBCBRdwCTeY1kL2Z65RdYq+rcC159LQLjPFy9rdo0wY9nS+2uLSk5qI6FtxgEBCEwpEJg4flIvr2SrfEgOYxPulI4YBoFYwEiHL/2jqJ4KLNuowVXT4NqMBuAMAQh8I2DkSoPqLDnqU2DZTqmWF4mcXTxzJalQhkBGQJ+piEyL2/5DpifchJttjOpSLenmXMfVvboVBFmkgnOhBYbBJPqTuv41vx10C22Bi4fAfwt8AJe2flCLvH1PAAAAAElFTkSuQmCCCg==) no-repeat 0; -} - -div.loadingBar div.loadingBarProgress div.loadingBarProgress_right { - position: relative; - height: 100%; - margin-left: 8px; -/* background: url(../images/old/loading/loadingBarProgress.png) no-repeat right; */ - background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAANYAAAAWCAYAAAC8C2KaAAAACXBIWXMAAAsSAAALEgHS3X78AAACIklEQVR4Ae3brU7DUBQH8HO6PQAazx4BRUKDwfChQTGFQ4wRFGEERdgQONRQoGEzGFISFI8w/DQSWHsP565r0xY2BiWY/ivW+530l52cdr0jwgEBCPy5AE9aUc7XV0kcl4jniGR20lj0QaAYAtzXWHgmNh7v3HTGXfOXgSWnKy6VqEZMCKZxcmiHgFCfAjrjva6XxfgUWNJc3tVBG9mBqEMAAmMFrrl+10r2pgJLTpYO9dZvNTkAZQhAYAoBNh3evz+KRsaBJccLevtXakYdOEMAAj8UCII6Hzx6dlY5nipBjXwTV1GAAAR+KiA1neHZWcOMJY35FS03bAMOCEAgl0CDG0/dMGP5by6xk2s1TIYABFRAjKufo8AyfoUkftyCDwQg8FsBloqdGmaswMf7qt9CYh4E0gLDWBrdCg7SXahBAAK5BEYZa9AnZmStXJSYDAEVENEtT/GtYNAjxl5AfDEgkFtAuGfXCDPW4N0jh9zci2IBCBRdwCTeY1kL2Z65RdYq+rcC159LQLjPFy9rdo0wY9nS+2uLSk5qI6FtxgEBCEwpEJg4flIvr2SrfEgOYxPulI4YBoFYwEiHL/2jqJ4KLNuowVXT4NqMBuAMAQh8I2DkSoPqLDnqU2DZTqmWF4mcXTxzJalQhkBGQJ+piEyL2/5DpifchJttjOpSLenmXMfVvboVBFmkgnOhBYbBJPqTuv41vx10C22Bi4fAfwt8AJe2flCLvH1PAAAAAElFTkSuQmCCCg==) no-repeat right; - top: -22px; -} - -/* ------------------------------------------- */ - -body.iPhone .loginErrorPanel { - position: absolute; - min-height: 372px; - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - padding: 10px; -/* background: #c8c8c8 url(../images/old/iPhone/pinstripes.png); */ - background: #c8c8c8 url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAIAAACdaSOZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpiPHrmCgMC/GNjYwNSAAEGADdNA3dnzPlQAAAAAElFTkSuQmCCCg==); -} - -body.iPhone .loginErrorPanel h2 { - text-align: center; - color: red; - margin-top: 40px; -} - -/* ------------------------------------------- */ - - - - - - - - -form.cardListSearchForm { - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - border-bottom: 1px solid #2d3642; - border-top: 1px solid #6d84a2; - padding: 6px; - height: 45px; -/* background: url(../images/old/iPhone/toolbar.png) #6d84a2 repeat-x; */ - background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAArCAIAAAA2QHWOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE1JREFUCNddjDEOgEAQAgn//5qltYWFnb1GB4vdSy4WBAYStKyb9+O0FJMYyjMyMWCC35lJM71r6vF1P07/lFSfPx6ZxNLcy1HtihzpA/RWcOj0zlDhAAAAAElFTkSuQmCCCg==) #6d84a2 repeat-x; - margin: 0px; -} - -form.cardListSearchForm input { - margin: 7px; - -webkit-appearance: searchfield; - width: 200px; -} - -ul.cardListPanel { - margin: 0px; - padding: 0px; - list-style-type: none; - min-height: 372px; -} - -li.cardListItem { - height: 43px; - border-bottom: 1px solid #cccccc; -/* background: url(../images/old/iPhone/listArrow.png) no-repeat right center; */ - background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKVJREFUeNpi/P//PwOtARMDHcDwsYQFRJSXl8P4dVC6CZvizs5O8i1BsqARid9Ei+BiQ2KDLKumhSU1QNyKxG+hlkXoEQ+yqAPNogpapK5KNIvaKbUIVxKeAsTvkPg5QCxETUukgfgAkqFPgdgBzVKKLIFZoIJmwR1qBRdNLEC2BJQpV9LCAmRL/gBxAtRwqlqAXqzcgRrOQE0LQIBxtNIiBQAEGAA7xCa2yF9zEgAAAABJRU5ErkJgggo=) no-repeat right center; - -} - -li.cardListItem a { - position: relative; - top: -22px; - left: 40px; - display: block; - white-space: nowrap; - overflow: hidden; -} - -body[orientation="portrait"] li.cardListItem a { - max-width: 250px; -} - -body[orientation="landscape"] li.cardListItem a { - max-width: 400px; -} - -li.cardListItem img { - height: 20px; - width: 20px; - padding: 12px 10px 0px 10px; -} - -li.cardListItem a { - text-decoration: none; - color: black; - font-weight: bold; - font-size: 14pt; - vertical-align: 3px; -} - - -div.cardDetailPanel { - position: absolute; - top: 45px; - min-height: 372px; - - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - padding: 10px; -/* background: #c8c8c8 url(../images/old/iPhone/pinstripes.png); */ - background: #c8c8c8 url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAIAAACdaSOZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpiPHrmCgMC/GNjYwNSAAEGADdNA3dnzPlQAAAAAElFTkSuQmCCCg==); -} - -/*div.cardDetailPanel > fieldset > div.row > input.directLogin {*/ -div.cardDetailPanel > fieldset > div.row > span.directLogin { - width: 100%; - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - margin: 0; - border: none; - padding: 12px 10px 0 110px; - height: 42px; - background: none; - font-size: 16px; - font-weight: normal; - - padding-left: 40px; - color: black; -/* background: url(../images/old/iPhone/listArrow.png) no-repeat right center; */ - background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKVJREFUeNpi/P//PwOtARMDHcDwsYQFRJSXl8P4dVC6CZvizs5O8i1BsqARid9Ei+BiQ2KDLKumhSU1QNyKxG+hlkXoEQ+yqAPNogpapK5KNIvaKbUIVxKeAsTvkPg5QCxETUukgfgAkqFPgdgBzVKKLIFZoIJmwR1qBRdNLEC2BJQpV9LCAmRL/gBxAtRwqlqAXqzcgRrOQE0LQIBxtNIiBQAEGAA7xCa2yF9zEgAAAABJRU5ErkJgggo=) no-repeat right center; -} - -/*body[orientation="landscape"] div.cardDetailPanel > fieldset > div.row > input.directLogin { */ -body[orientation="landscape"] div.cardDetailPanel > fieldset > div.row > span.directLogin { - padding-left: 50px; -} - -div.cardDetailPanel h2 { - margin: 0 0 8px 14px; - font-size: inherit; - font-weight: bold; - color: #4d4d70; - text-shadow: rgba(255, 255, 255, 0.75) 1px 1px 0; -} - - - - -/* body[orientation="portrait"] div.cardList { */ -body[orientation="portrait"] > * { - width: 320px; -} - -/* body[orientation="landscape"] div.cardList { */ -body[orientation="landscape"] > * { - width: 480px; -} diff --git a/frontend/gamma/css/clipperz/ie.css b/frontend/gamma/css/clipperz/ie.css deleted file mode 100644 index 3c2d59a..0000000 --- a/frontend/gamma/css/clipperz/ie.css +++ b/dev/null @@ -1,353 +0,0 @@ -/* - -Copyright 2008-2011 Clipperz Srl - -This file is part of Clipperz Community Edition. -Clipperz Community Edition is an online password manager. -For further information about its features and functionalities please -refer to http://www.clipperz.com. - -* Clipperz Community Edition is free software: you can redistribute - it and/or modify it under the terms of the GNU Affero General Public - License as published by the Free Software Foundation, either version - 3 of the License, or (at your option) any later version. - -* Clipperz Community Edition is distributed in the hope that it will - be useful, but WITHOUT ANY WARRANTY; without even the implied - warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Affero General Public License for more details. - -* You should have received a copy of the GNU Affero General Public - License along with Clipperz Community Edition. If not, see - <http://www.gnu.org/licenses/>. - -*/ - -<!--[if IE]> - -<style> - -{ - background-color: white; -} - -div#logoFrame { - height: 44px; -} - -div#logo { -/* padding-left: 15px; */ - background: url(../images/old/logo_blue.png); -} - -div.clipperzLoginForm div.loginForm form { - padding-left: 20px; -} - -div.clipperzLoginForm div.registrationForm form { - padding-left: 20px; -} - -div#newRecordInnerPanel { - width: 350px; - height: 160px; - background: url(../images/old/newRecordPanelBackground.png) no-repeat 0 -165px; -/* background: url(data:image/png;charset=utf-8;base64,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) no-repeat 0 -165px; */ -} - -img#donateHeaderIcon { - padding-top: 0px; - margin-bottom: 0px; -} - -/* ========================================================== */ - -div#applicationVersionType { - position: absolute; -} - -div#applicationVersionType.readOnly { - background: url(../images/old/read-only.png) no-repeat fixed -5px -8px; -} - -div#applicationVersionType.TEST { - background: url(../images/old/test-database.png) no-repeat fixed -5px -8px; -} - -div#mainTabs { - background: #ff9400 url(../images/old/menubarSprite.gif) repeat-x; -} - -div#menus { - background: url(../images/old/menubarSprite.gif) no-repeat right -26px; -} - -div#menus table { - background: url(../images/old/menubarSprite.gif) no-repeat 0 -52px; -} - -div#menus table tbody tr td div { - background: url(../images/old/menubarSprite.gif) no-repeat right -52px; -} - -div#menus table tbody tr td div a { - background: url(../images/old/menubarSprite.gif) no-repeat left -26px; -} - -div#menus table tbody tr td.selectedTab { - background: url(../images/old/menubarSprite.gif) repeat-x right -78px; -} - -div#menus table tbody tr td.selectedTab div { - background: url(../images/old/menubarSprite.gif) no-repeat right -130px; -} - -div#menus table tbody tr td.selectedTab div a { - background: url(../images/old/menubarSprite.gif) no-repeat left -104px; -} - -div.clipperzLoginForm div.loginFormHeaderBox { - background: url(../images/old/loginFormBox.png) no-repeat -3px top; -} - -div.clipperzLoginForm div.loginForm { - background: url(../images/old/loginFormBox.png) repeat-y -408px; -} - -div.loginForm div.loginFormFooterBox { - background: url(../images/old/loginFormBox.png) no-repeat -813px bottom; -} - -div.clipperzLoginForm div.registrationForm { - background: url(../images/old/loginFormBox.png) repeat-y -408px; -} - -div.clipperzLoginForm form.read-only table.formLayout, div.panelform.read-only table.panelBody, div.clipperzSubPanel span.read-only, div.read-only { - background-image: url(../images/old/read-only_background.png); -} - -div.registrationForm div.loginFormFooterBox { - background: url(../images/old/loginFormBox.png) no-repeat -813px bottom; -} - -div.loginPanelSwitchLanguageBox { - background: url(../images/old/languageBox.png) no-repeat 19px -15px; -} - -div#directLoginsBlock { - background: url(../images/old/directLoginBox.png) repeat-y -262px bottom; -} - -div#directLoginsBlock div.directLoginsBlockHeaderBox { - background: url(../images/old/directLoginBox.png) no-repeat -11px -13px; -} - -ul#directLogins { - background: url(../images/old/directLoginBox.png) no-repeat -513px bottom; -} - -div#directLoginsDescription { - background: url(../images/old/directLoginBox.png) no-repeat -513px bottom; -} - -/* -div#recordListFilterHeader { - background: url(../images/old/cardFiltersSprite.gif) repeat-x 0 -114px; -} - -div#recordFiltersTableWrapper { - background: url(../images/old/cardFiltersSprite.gif) no-repeat left -38px; -} - -div#recordFiltersDIV table { - background: url(../images/old/cardFiltersSprite.gif) no-repeat right -19px; -} - -div#recordFiltersDIV table tbody tr td div { - background: url(../images/old/cardFiltersSprite.gif) no-repeat right -38px; -} - -div#recordFiltersDIV table tbody tr td div a { - background: url(../images/old/cardFiltersSprite.gif) no-repeat left -19px; -} - -div#recordFiltersDIV table tbody tr td.selectedTab { - background: url(../images/old/cardFiltersSprite.gif) repeat-x -57px; -} - -div#recordFiltersDIV table tbody tr td.selectedTab div { - background: url(../images/old/cardFiltersSprite.gif) no-repeat right -95px; -} - -div#recordFiltersDIV table tbody tr td.selectedTab div a { - background: url(../images/old/cardFiltersSprite.gif) no-repeat left -76px; -} -*/ - -div#recordFiltersSearchInnerPanel { - background: url(../images/old/recordFilterBackground.png) no-repeat -10px -138px; -} - -table#recordListAndDetailBlockTABLE { - background: url(../images/old/cardBlockLowerBorder.gif) repeat-x 0 bottom; -} - -div#recordListBlockHeader table.recordListBlockHeaderTABLE { - background: url(../images/old/cardsBlockRoundCorners.gif) no-repeat right -51px; -} - -div#recordListBlockHeader table.recordListBlockHeaderTABLE tbody tr td.recordBlockTitleTD { - background: url(../images/old/cardsBlockRoundCorners.gif) no-repeat left 0px; -} - -td#cardBoxLowerLeftTD { - background: url(../images/old/cardBlockLowerRoundedCorner.gif) no-repeat left -32px; -} - -td#cardBoxLowerRightTD { - background: url(../images/old/cardBlockLowerRoundedCorner.gif) no-repeat right -82px; -} - -div#newRecordInnerPanel { - background: url(../images/old/newRecordPanelBackground.png) no-repeat 0 -165px; -} - -.resizable-textarea .grippie { - background: #eee url(../images/old/grippie.png) no-repeat center 1px; -} - -div.Clipperz_recordFieldData div.passwordBackground, div.passwordEntropy { - background: url(../images/old/entropyBackground.gif) repeat-x 0 0; -} - -div.Clipperz_recordFieldData input.scrambledField { - background: transparent url(../images/old/scrambledValue.png) no-repeat 0 0px; -} - -div.Clipperz_recordFieldData input.scrambledField:focus { - background: transparent url(../images/old/scrambledValue.png) no-repeat 0 -16px; -} - -div.directLoginCollapseLink { - background: url(../images/old/directLogin/toggle.png) no-repeat; -} - -#mb-dlg .ext-mb-progress { - background:transparent url(../images/old/default/basic-dialog/progress2.gif) repeat-x 1px 1px; -} - -.ydlg .ydlg-hd { - background: url(../images/old/clipperz/basic-dialog/hd-sprite.gif) repeat-x 0 -82px; -} -.ydlg .ydlg-hd-left { - background: url(../images/old/clipperz/basic-dialog/hd-sprite.gif) no-repeat 0 -41px; -} -.ydlg .ydlg-hd-right { - background: url(../images/old/clipperz/basic-dialog/hd-sprite.gif) no-repeat right 0; -} - -.ydlg .ydlg-close { - background-image:url(../images/old/clipperz/basic-dialog/close.gif); -} - -body .ybtn-left{ - background:url(../images/old/default/basic-dialog/btn-sprite.gif) no-repeat 0 0; -} -body .ybtn-right{ - background:url(../images/old/default/basic-dialog/btn-sprite.gif) no-repeat 0 -21px; -} -body .ybtn-center{ - background:url(../images/old/default/basic-dialog/btn-sprite.gif) repeat-x 0 -42px; -} - - - - -div.Clipperz_PasswordGenerator_button { - background: url(../images/old/passwordAssistant.png) 0 22px; -} - -div.Clipperz_PasswordGenerator_button.hover { - background: url(../images/old/passwordAssistant.png) 0 -1px; -} - -body ul.radioList li h4 { - cursor: auto; -} - -/* ========================================================== */ - -</style> - -<![endif]--> - - - -<!--[if lt IE 7]> - -<style> - -div#newRecordPanel { - position: absolute; - margin-left: 0px; - width: 350px; - height: 160px; -} - -div#newRecordInnerPanel { - width: 350px; - height: 160px; - background: url(../images/old/newRecordPanelBackground.gif) no-repeat 0 -165px; -/* background: url(data:image/gif;charset=utf-8;base64,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) no-repeat 0 -165px; */ -} - -div.newRecordInnerInnerPanel { - background-color: white; - padding: 0px; - margin-left: 15px; - margin-right: 15px; -} - -div#newRecordPanel table td.newRecordPanelLabelTD { - padding-left: 0px; - padding-top: 3px; - font-size: 9pt; - width: 100px; -} - -div#readOnlyBanner { - background: url(../images/old/read-only.gif) no-repeat fixed -5px -8px; -/* background: url(data:image/gif;charset=utf-8;base64,R0lGODlhjQCSAPe9AP+SAP/////If//Jgv+fIP+ZEf2SAv+lLf+oNP+iJv+XDf/Jgfv///+aFf6SAf+UB/L/////+/+oM//krv+yTf/IgP//6v//9+n47/+rPP+7YP//7v/Tjv/NjP/Kg/+TAP+2Vv6dG/+dG/+WCvuTBOX47/+SAf//5f//8ur///+dGv+vRPiUB/+SAv/Nf/+TBP+/aunx3/+7We7//+3q0Pu/av2aFff///myTf+yS+Pq0P+2UPTTmf+rO/rq0P+/Yv//4P/ep/+7Xf//3P+yR//YmP+lK//Ea//EdfmdG//qtNz//+D47//enures/HYpv/47//es/7EdfXEdeD///ufIP/41fqvRP+iI/+vQ//xxP/ku/SyTf/esP/NhP/Ice/Tmf/eo/yXDfDIgP6rPP/IevmoNO747/+aE/+fHPyiJv/Tmf+/Xf/42f6WCv/xwODx3/+UAP/YlP/Tif6oNP/45v/EZ//Ynf/40P/xzvy7YP+oLvnIgOX///mrPNv47/3kwfjes/+rMv/Thfm2VuvTmf+2S+Lkwf/kt+/es/e/aujq0PeaFf+/Zv/x3/L47//Yj/2lLf/qy//emv/43v/Yof+rNvrYpv/xyf/Ypv22Vv/4y/+7VPPes//Nev/NiPbYpv/IfvDkwf+XAP/44v/xu/Lx3/f/7v/Tkvb47+r/8v+vP//kqfK/avO7YOfkwfHEdf/EcP/qxvWWCvHq0P/EdP/szfXq0P/Idf/YpfilLf2yTfOdG////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAL0ALAAAAACNAJIAAAj/AHsJHEiwoMGDCBMa9ACgocOHECNKnEixokWHAhRq3MixY0KGF0OKHDkyo8eTKFP2AkmypcuWJlXKnLnwpc2bFWPS3CmTJc6fOHXyHOrRJ9CjMIkqLYq0adKlUBUOcEo1pNCoWAVOrcp14tWsUbd2HYsRrNleYsmO/XqWaFq1XNm25fkWLlW5c2nWDWlAld2LePPK3BuSSwBOfykGFpySsEgqJxJLXMz4pOOKJEQ09BOgh+SHlCt3vByxhmcDKQJEKQCACZ7PDUOL3kgaopsAASQASOAD9xokAbB8lj1bqksCuHUDKJAJdwAlkokXR1h7IvLcDh9UwK3ir/TpBqtT/7yuvGGVAF8sgrEE9Dt4guIjJkDCmrxDENgpsmCg5af791rZpIdznl2XQUNLcHDRGAGkcdN/AMYXEQQwUMBAAFkAgFwOISXQEAkQsGIThO9J+NABFYTRUAMXZvhASGAEUAcCALgSAGtPAdjYTVQE0N+KFxohkgId4EYKBTdAkqOOluGEWgBlOBRCECFlAIOHLcBwYQAXxFESkzu+9AACmj3pAkkxOEdlQytAEAAuIpEInokOaeAcJQ886YVIXGzQQAG3BNDEQ31sYhWYKNHZ0BUBUFDAGgFEhtoEIUnhyB4OLRJAdwA0cMOgFsk5naIIntkQHwHsAMALIYWAmwwOJf+RakOKWPBBqIg2aZMBEMjhEK92kHRAABFoBgAdAaDxZa6j/aRDfiQwoOpFDSCgAADDBlABcHvGyWyzP9mAWwUHnAFESDQ4hwq2uFVyrbff0kYSjhBpoKGbAcgS0isbiEDAIwGcOWyx8MZr3EgNBEDpQzwEsEpDBYwQkrjCNYRBl+wG4CGuBh88kgPpLgxAw0e4dF55ugTXEB0WvJhTxx631InCAIBYsktuMGDrZhHcWjDMBi1gEwFF0txCSw8kcO0UAaCwAgXoLQt00AIGoAEBvYkskia4XXArDM7VIvXUBAn9kgMQeOKQKDSLxCgFB1x7dAsFsPoz2QKZ/RKvpgL/MMuFN1+0RN8kzKAsSaIWpzdJIxwIQB8RcMrCKfbyBQGoywUA69h497L4SPhFqiFuV54xCUnPKseCxpzj/blIOFyQQJEWAICAc5HNO+4Bppx7t+t73yCkGbjZ6kACBLxEwA245eEzYJ2XbdN5ghjAwAOFNE2vRSYcHVHErZP9+kgGfAIAHEQAwEgAa14UCG6SvPtS4rONH5LdAIgrpBOGiKQDChnYzhBGFL2B2M8iDZjBuAAgBucMMCSyGgUApnACE1DAJfQTzQErsp8uIAAQAWADADIAhVyMJAQReMEYaseLCCwpejaBxQNLMAgTOI4k4gpAGxqCgw0groAEGQkB/w7gEB28wQRUmAMADlGKkVCgck4IACIUcLsfhK9zIkkXl1jTCtxECQB/8FVI0hSAlgEAFM4JxRWxeJE0daA30DGAAjUwgu1sjyJmuAACirSBF40gARL7HRDb2JmG0OANDVGAAom1MYtIIRWYAkANAtDHFwJRIBVxAC0CQMSGOCECUOjCipJHkRDcoSGu0pxDJunDNRawIpHAjRAasosAQOFCG7ijRJiQu4yRcoIcEuQle2GR21ltBQGIRUMuQcmKXMsAAFCDinyJwWEi5CLGDMAs6yS/iCRMQQAoQQCK0JBsdVKY1gyJMbd5ERMYAAMBUJADxElOdgXzUNa8pjpx0/+Ii7jKQfCUJz0T6cp0isSYVqwIHF5jsXgCYJ4BOGVBDXpQFHRzlygAwQUaKk8MaI1j+UxIS0xAkRrUDqENcUBAHzrRfCJlP8G6DsEeCs/N4TOkCkFKAQKwhQ7YAgG3i1xDDNCBloa0KQ27UUPIQCxOGfWoSEFVAPLgEKYGoAFPhapNXpABEHhoBQpomBUccoWPvgynHbkJ1Jwju4Y8IQBjtSRaRfoSHMhoBRnoTX7eGld0ztUgLwHRDh0iBS75LBH3hN5f0+oSNczqIW8VoVwXq8+WECIA6XtIA6HzQ8oytiWywgRE0GbWs3qWIzYRpxIdYtfM3vS0G7FJwnjagAft4Md3r4WtRm5CgC0Vz2WK1S1qb2IAEEQhChf0q3ALMpzleiQ6zn2ud6IrXbhkcK52uS521aLd7a6FuikhS3f/+l3whjcu5lUJetN7XqeM17N3Ya9M3Cvf+SLlvbC9b31nchT86rY9+6WJfwIs4AcRuMDzOzCCJ6vgz3a2wfZ9MITVK+EJtze3FkZJVjMMWAxz+CQe/nB1FSPiBU+mxCaGiH8JTGIUpzg2Lt7JiWOc4hU3WMU05glocqxjGPNYxgCwsYUrIOQfG/nISE6ykpfM5CY7+clQjrKUp0zlKlv5yljOspa3zOUue/nLBgsIADsK) no-repeat fixed -5px -8px; */ -} - - - -ul#directLogins { - height: 200px; -} - -div#recordListBlock { - height: 200px; -} - -div.clipperzSubPanel { - height: 200px; -} - - - -div.Clipperz_recordFieldData input.scrambledField { - background: transparent url(../images/old/scrambledValue.gif) no-repeat 0 0px; -/* background: transparent url(data:image/gif;charset=utf-8;base64,R0lGODlhRwAgANUmAP///7XV/2ZmZqW/4ODg4HBwcGttcJChuLi4uHZ8hYWFhfX19bDO9YCLmZmZmaOjo4aSo6C31tbW1q2trXuEj4uarY+Pj+vr66rG68LCwpWpwnp6eszMzHF1epuwzMTd/7rY/9Pm/8ng/7/b/87j/9jp/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACYALAAAAABHACAAAAb/QIBwSCwaj8ikcslsOp/QqHRKRV4QkmQGkbxmkVtlGGkyLSUCLtIiSKLVR7ZSTjYfLwvAW0gY9gF0eEKCewB/hkKBeXyJbQCCRGVIDgIOE5UPBQV8AhsTCmmgapSWmJqcnqKiqJ+haUJlsbFFCKACt50TeQSZuLcOHEK1vrm7vb7AfMe4yQCyskcEBbcZRw+3CotE0tTW2NpE1wLZRtBI19fk25qU1UXo4+CG7ALu6wXt5bNHHAIWAAgEPCgCSsICTYcA9PsXcCCRggcLJAQAEWEkO5KMcNhwIREcAAssCZGgIOHGjoA+hpwwsiSRlS0TZsxYpabNmzhz6tzJs6fP/wBAgwodSrSo0aNIkypdyrSp06dQo0o1iuFAhKMaDhytetVoVqRfjZZJGkGAVqMUBBwte7ZoWqRvxZqgyiAAW6ADguYNEBdD3QB+7ZrFqxdo378B9h4G+gHo2AAjQAhtIKBBhcoQDBjAK6BDhQRmQZ+lbBmzZs6eRYtG/Tn04A/PYpUQegC0L891B2Qm1sAD0NrEcCfe7as3XuK4jMOObYIE0QEGbmkoCuFWAsR6owuYTrS6gOvUrWN3HEty+OrghUI3QJm70Orox69v/1wzfaHLy4Qo6kEAhQAHCADBUKBFwIBmewHV338BDihUgQcakCBQECIoVBkigFBGY0N50DIBBoa1FQADlgEVQQITeggiXyKSWIGJKArlIowJajhXABtOpeOOPPbo449ABinkkAEEAQA7Cg==) no-repeat 0 0px; */ -} - -div.Clipperz_recordFieldData input.scrambledField:focus { - background: transparent url(../images/old/scrambledValue.gif) no-repeat 0 -14px; -/* background: transparent url(data:image/gif;charset=utf-8;base64,R0lGODlhRwAgANUmAP///7XV/2ZmZqW/4ODg4HBwcGttcJChuLi4uHZ8hYWFhfX19bDO9YCLmZmZmaOjo4aSo6C31tbW1q2trXuEj4uarY+Pj+vr66rG68LCwpWpwnp6eszMzHF1epuwzMTd/7rY/9Pm/8ng/7/b/87j/9jp/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACYALAAAAABHACAAAAb/QIBwSCwaj8ikcslsOp/QqHRKRV4QkmQGkbxmkVtlGGkyLSUCLtIiSKLVR7ZSTjYfLwvAW0gY9gF0eEKCewB/hkKBeXyJbQCCRGVIDgIOE5UPBQV8AhsTCmmgapSWmJqcnqKiqJ+haUJlsbFFCKACt50TeQSZuLcOHEK1vrm7vb7AfMe4yQCyskcEBbcZRw+3CotE0tTW2NpE1wLZRtBI19fk25qU1UXo4+CG7ALu6wXt5bNHHAIWAAgEPCgCSsICTYcA9PsXcCCRggcLJAQAEWEkO5KMcNhwIREcAAssCZGgIOHGjoA+hpwwsiSRlS0TZsxYpabNmzhz6tzJs6fP/wBAgwodSrSo0aNIkypdyrSp06dQo0o1iuFAhKMaDhytetVoVqRfjZZJGkGAVqMUBBwte7ZoWqRvxZqgyiAAW6ADguYNEBdD3QB+7ZrFqxdo378B9h4G+gHo2AAjQAhtIKBBhcoQDBjAK6BDhQRmQZ+lbBmzZs6eRYtG/Tn04A/PYpUQegC0L891B2Qm1sAD0NrEcCfe7as3XuK4jMOObYIE0QEGbmkoCuFWAsR6owuYTrS6gOvUrWN3HEty+OrghUI3QJm70Orox69v/1wzfaHLy4Qo6kEAhQAHCADBUKBFwIBmewHV338BDihUgQcakCBQECIoVBkigFBGY0N50DIBBoa1FQADlgEVQQITeggiXyKSWIGJKArlIowJajhXABtOpeOOPPbo449ABinkkAEEAQA7Cg==) no-repeat 0 -14px; */ -} - - - -</style> - -<![endif]--> diff --git a/frontend/gamma/css/clipperz/compact.css b/frontend/gamma/css/compact.css index c6e8661..0b32401 100644 --- a/frontend/gamma/css/clipperz/compact.css +++ b/frontend/gamma/css/compact.css @@ -1,159 +1,151 @@ /* Copyright 2008-2011 Clipperz Srl This file is part of Clipperz Community Edition. Clipperz Community Edition is an online password manager. For further information about its features and functionalities please refer to http://www.clipperz.com. * Clipperz Community Edition is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * Clipperz Community Edition is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. * You should have received a copy of the GNU Affero General Public License along with Clipperz Community Edition. If not, see <http://www.gnu.org/licenses/>. */ /* @override https://www.example.com/css/compact.css */ +/* +Color list: +- login box: + light #ff9955 + dark #ff6622 +- login button: + regular #dd5500 + hover #773311 +- login translations: + box: #cc6622; + not-selected: + color: #ddaa99 + background: #994422 + selected: #772211; +*/ body.compact div#mainDiv { -/* + /* width: 250px; height: 95%; border: 1px solid #333366; */ - padding: 0px; -} + padding: 0px; +} body.compact div#compactHeader { - background-color: #333366; + background-color: #333366; } - body.compact div#compactHeader img { - padding: 2px 20px 2px 4px; - width: 60; + padding: 2px 20px 2px 4px; + width: 60; } - body.compact div#compactHeader a { - color: white; - text-decoration: none; - font-size: 10pt; -/* position: absolute; */ - right: 10px; - top: 6px; -} + color: white; + text-decoration: none; + font-size: 10pt; + /* position: absolute; */ + right: 10px; + top: 6px; +} body.compact div#compactHeader a:hover { - color: #ff9400; + color: #ff9400; } - body.compact h4 { - color: #999999; - text-align: center; - padding: 20px; - font-weight: normal; - font-size: 12pt; - font-style: italic; + color: #999999; + text-align: center; + padding: 20px; + font-weight: normal; + font-size: 12pt; + font-style: italic; } - body.compact div.loginPanel form { - padding: 10px; + padding: 10px; } - body.compact div.loginPanel dt { - color: #aaaaaa; - font-size: 10pt; + color: #aaaaaa; + font-size: 10pt; } - body.compact div.loginPanel input { - width: 180px; + width: 180px; } - body.compact ul#directLogins { - background-image: none; - padding: 4px 0px; + background-image: none; + padding: 4px 0px; } - body.compact ul#directLogins li { - width:auto; + width: auto; } - body.compact ul#directLogins li.hover { - width:auto; - padding-right: 0px; + width: auto; + padding-right: 0px; } - body.compact div.lockPanel { - color: #999999; - font-size: 10pt; - padding: 10px; + color: #999999; + font-size: 10pt; + padding: 10px; } - div#compactMiscLinks ul { -/* text-align: center; */ - display: block; - padding-left: 22px; - background-color: #ff9400; -} + /* text-align: center; */ + display: block; + padding-left: 22px; + background-color: #ff9400; +} div#compactMiscLinks ul li { - display: inline; - padding: 2px 5px; + display: inline; + padding: 2px 5px; } - div#compactHeader div#compactMiscLinks ul li a { - font-size: 9pt; + font-size: 9pt; } - div#compactHeader div#compactMiscLinks ul li a:hover { - color: #333366; + color: #333366; } - div#lockBlock { - position: absolute; - right: 10px; - top: 6px; + position: absolute; + right: 10px; + top: 6px; } - div#lockBlock input { - width: auto; - padding-bottom: 2px; + width: auto; + padding-bottom: 2px; } - div#lockBlock span { - font-size: 9pt; - padding: 0px 5px 0px 4px; - color: #aaaaaa; + font-size: 9pt; + padding: 0px 5px 0px 4px; + color: #aaaaaa; } - div#lockBlock a#lock { - font-size: 9pt; + font-size: 9pt; } - /* @group Donate */ - a#donateHeaderLink { - font-weight: bold; + font-weight: bold; } - div#compactMiscLinks a#donateHeaderIconLink img#donateHeaderLinkIcon { - display: inline; - position: absolute; - top: 22px; - left: 1px; - width: 12px; - height: 12px; + display: inline; + position: absolute; + top: 22px; + left: 1px; + width: 12px; + height: 12px; } - - - /* @end */
\ No newline at end of file diff --git a/frontend/gamma/css/iPhone.css b/frontend/gamma/css/iPhone.css new file mode 100644 index 0000000..e6e233d --- a/dev/null +++ b/frontend/gamma/css/iPhone.css @@ -0,0 +1,428 @@ +/* + +Copyright 2008-2011 Clipperz Srl + +This file is part of Clipperz Community Edition. +Clipperz Community Edition is an online password manager. +For further information about its features and functionalities please +refer to http://www.clipperz.com. + +* Clipperz Community Edition is free software: you can redistribute + it and/or modify it under the terms of the GNU Affero General Public + License as published by the Free Software Foundation, either version + 3 of the License, or (at your option) any later version. + +* Clipperz Community Edition is distributed in the hope that it will + be useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Affero General Public License for more details. + +* You should have received a copy of the GNU Affero General Public + License along with Clipperz Community Edition. If not, see + <http://www.gnu.org/licenses/>. + +*/ + +/* @override + https://www.example.com/iPHONE/css/iPhone.css + https://www.example.com/DEVELOPMENT/css/iPhone.css + https://www.example.com/WIZARD/css/iPhone.css +*/ +/* + +Color list: +- login box: + light #ff9955 + dark #ff6622 +- login button: + regular #dd5500 + hover #773311 +- login translations: + box: #cc6622; + not-selected: + color: #ddaa99 + background: #994422 + selected: #772211; +*/ +/* ---------------------------------------- */ +body { + margin: 0; + font-family: Helvetica; + background: #FFFFFF; + color: #000000; + overflow-x: hidden; + -webkit-user-select: none; + -webkit-text-size-adjust: none; +} +div.toolbar { + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + border-bottom: 1px solid #2d3642; + border-top: 1px solid #6d84a2; + padding: 10px; + height: 45px; + /* background: url(../images/old/iPhone/toolbar.png) #6d84a2 repeat-x; */ + + background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAArCAIAAAA2QHWOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE1JREFUCNddjDEOgEAQAgn//5qltYWFnb1GB4vdSy4WBAYStKyb9+O0FJMYyjMyMWCC35lJM71r6vF1P07/lFSfPx6ZxNLcy1HtihzpA/RWcOj0zlDhAAAAAElFTkSuQmCCCg==) #6d84a2 repeat-x; +} +div.toolbar h1#pageTitle { + overflow: hidden; + margin-top: 1px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + width: 150px; + height: 25px; + /* 45px */ + + font-size: 20px; + width: 150px; + font-weight: bold; + text-shadow: rgba(0, 0, 0, 0.4) 0px -1px 0; + text-align: center; + text-overflow: ellipsis; + white-space: nowrap; + color: #FFFFFF; +} +div.toolbar a.button { + position: absolute; + overflow: hidden; + top: 8px; + right: 6px; + margin: 0; + border-width: 0 5px; + padding: 0 3px; + width: auto; + height: 30px; + line-height: 30px; + font-family: inherit; + font-size: 12px; + font-weight: bold; + color: #FFFFFF; + text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0; + text-overflow: ellipsis; + text-decoration: none; + white-space: nowrap; + background: none; + /* -webkit-border-image: url(../images/old/iPhone/toolButton.png) 0 5 0 5; */ + +} +div.toolbar a#backButton { + /* display: none; */ + + left: 6px; + right: auto; + padding: 0px; + max-width: 55px; + border-width: 0 8px 0 14px; + /* -webkit-border-image: url(../images/old/iPhone/backButton.png) 0 8 0 14; */ + + -webkit-border-image: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAeCAIAAAA6iHCJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtJJREFUeNrEV21P01AYbbtubNExBnXDbYjjZYI4BMdgEANDQoTElw/+Rw0mBs0UiSGaoJFEQEPwjRhFCW/JxrZ2Xdu1fe71bpAhCHzqupPnS5ObPOeec+5zb+lHLxao05HPiwvzr3/++J7N7FFGgaaDLe034+O+wCXyxSKET1u5+Wc98XTK39zeOzjudLmNIoAR2tlaf/Zkqm9gKNI/RBigE9dtb23MJKZj8fvuC16b3WGxsJRxOFfHeQOtH+ZnOI+XRfgEBoLAzz6fjo7ebfD4GYYhMiEdDGRAW6xOt6d7YGzl4xIL/7mgyPL044edkVt19T4EFAJEVQYud+MvOCkHc7MJ3+VrXGOzXrHeZS1s9trjOVj7tiqpONTWBRgD6BVmQFls9iMaSHnx/bu3ffEHgC2gVVqAIojKR3Iw9zLRcjVmtTnA0NydxQDg0IWvq59kYIOeZtWs9gQkagcMcgK/vLjYNXQHcEkas0AcYPdNIPr7Q/0M69B089ofavB5ZVm3OJ2cTwegzAUgxGbSe8tLS52xewjRZGabzAABZt+8mvGHBsiYNF+AAw1cXEBGNUiQqWpAlArM5MSYBXgEOl0NkLcCkxak28MRKbuDMa6KDAwAUnU8HO2Q+N0SJ3OLMCA7V1S9vt7d3tSg5LNV0ACXwOekcGfreVbVVYUqMjOvyPsH71cqkxsZ7NHFJIXBTCMONMAlEryoxAfDucyOmaOpmINyaTowrK23IyDxKbNzUIYoKU3+i37OXpCESvfGCOw11uMMcCkQke4rDlrS1coOSk2VOXftERfKtZsURmLXQUqBVqiUABgrQirc0Xp4Fv4t8kxN8dLkaJQupOVcGnTN0PuQHHlRSG1Eu9tUTLOnxZ5clclsfmK078va7/WN7axomCN2e42Xc/VEIoiiM0KePeM20DTY3M22BZtuhENW1rC/NrI3WVGTmZxSKEr7V4ABAJ+53J1I3nPjAAAAAElFTkSuQmCCCg==) 0 8 0 14; +} +/* ------------------------------------------- */ +body.iPhone form.loginForm { + min-height: 372px; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + padding: 10px; + /* background: #c8c8c8 url(../images/old/iPhone/pinstripes.png); */ + + background: #c8c8c8 url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAIAAACdaSOZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpiPHrmCgMC/GNjYwNSAAEGADdNA3dnzPlQAAAAAElFTkSuQmCCCg==); +} +fieldset { + position: relative; + margin: 0 0 20px 0; + padding: 0; + background: #FFFFFF; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border: 1px solid #999999; + text-align: right; + font-size: 16px; +} +.row { + position: relative; + min-height: 42px; + border-bottom: 1px solid #999999; + -webkit-border-radius: 0; + text-align: right; +} +fieldset > .row:last-child { + border-bottom: none !important; +} +.row > input:not(input[type|=radio]):not(input[type|=checkbox]), .row > div.fieldValue { + width: 100%; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + margin: 0; + border: none; + /* padding: 0px; */ + + padding: 0px 10px 0 112px; + height: 42px; + background: none; + font-size: 16px; + font-weight: normal; + color: #666a60; + -webkit-user-select: text; +} +/*.row > span.fieldValue {*/ +.row > div.fieldValue p { + /*.row > input.fieldValue {*/ + + margin: 0px; + text-align: left; + height: 40px; + vertical-align: middle; + line-height: 40px; + /* padding: 0px 10px 0 112px; */ + +} +/*body[orientation="landscape"] .row > span.fieldValue.password {*/ +body[orientation="landscape"] .row > div.fieldValue.password { + /*body[orientation="landscape"] .row > input.fieldValue.password {*/ + + padding-right: 120px; + /* background: url(../images/old/iPhone/password_background.png) no-repeat 105px; */ + + background: url(data:image/png;charset=utf-8;base64,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) no-repeat 105px; +} +/*.row > span.fieldValue.password {*/ +.row > div.fieldValue.password { + /*.row > input.fieldValue.password {*/ + + color: rgba(255, 255, 255, 0.5); + /* background: url(../images/old/iPhone/password_background.png) no-repeat 106px; */ + + background: url(data:image/png;charset=utf-8;base64,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) no-repeat 106px; +} +.row > div.fieldValue.password.clear { + color: #666a60; + background: none; +} +.row > input[type|=radio], .row > input[type|=checkbox] { + margin: 7px 7px 0 0; + height: 25px; + width: 25px; +} +.row > label { + position: absolute; + margin: 0 0 0 14px; + line-height: 42px; + font-weight: bold; + max-width: 92px; + overflow: hidden; + white-space: nowrap; +} +body[orientation="landscape"] .row > label { + max-width: 150px; +} +body[orientation="landscape"] .row > input:not(input[type|=radio]):not(input[type|=checkbox]) { + padding-left: 140px; +} +.row > img.favicon { + position: absolute; + width: 20px; + height: 20px; + top: 12px; + left: 11px; +} +.row > span { + padding: 8px 13px; + text-align: left; + display: block; + color: #666a60; + font-size: 10pt; +} +.row.notes { + -webkit-user-select: text; +} +/* ------------------------------------------- */ +.whiteButton { + margin-left: auto; + margin-right: auto; + width: 150px; + display: block; + border-width: 0 12px; + padding: 10px; + text-align: center; + font-size: 20px; + font-weight: bold; + text-decoration: inherit; + color: inherit; + /* -webkit-border-image: url(../images/old/iPhone/whiteButton.png) 0 12 0 12; */ + + -webkit-border-image: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAuCAQAAAB+dNqHAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAdAAAALgChnaVgAAAAAmJLR0QA/4ePzL8AAANhSURBVEjHnZZNaFxVFMd/5747mclMkpmxzYdJtFaJglgFpYSiBAVX7l0UUZGuSkEEu3PtSulCUXFdxYXL7kQQIWD9CsRIqdomGGOaSdJmZjKTeW/eu/e4mKRmrE3n5X83j/ve7/3POfe+d67QrTxP8QLDnMTenkv4kQ2+YZ6d/Y/Kvut+XuZVKtygzVbXC8v0cT+jXORLWneix/mAZZZwKIrSbSAIAcd5kDdZ6kaf4zzfEeLPnHrr+UeOWpMJ9rjYxe7a5ntff/YThhyneJ/Zf9Ep3uEXkhNjX50bHoiStoPE76HWiPQFfcGN+kufLKxheZJ3+aOD5vmIBaLXpz89HSVhzF2Uy2TtGxe/+JksJzjHjgCvMEHz6cnZt7dD5zlAgSlkZy7MrVDgbz43FJimhV46W2vFzutBI3aN8NJZlBbTFAKepZ/o/IszU1Gs95Tz2Uw1nFuiiTE8Rhs9fbIROt/LaISvTaO0mbIM0kTKeefoUSMDCI6SxRCT9d77XlFrCYgQi0PH72vH9CyNMSjO4tGM9do76hXB4y2KU+c8aaR41KJ4SIn6DgqgPq2rggWc+kMEjBUBVDUNKQBiOx+218Pl6tVr+jJhUZx4PYSr4XBSsAKaJH9tpirT7uIoTj3pAna43TJJWtSjYDpxp5bv5OpTb4mOq3IIX0W14ypeUq+rYBH5T9fqbRerWMClrbB4PBgUjZPUuXrUGBW51Yhc71y9LSJi1NgQxVWj3a7aw2gmONSGJtNAxC9v9+56vaoe6aubXEWy4meXe/+VXl42TvqzG4ZFCkRzv/+w3lu436/PX6NNnsUgCctjUUJwnWdGC/ZenpXw47loTRrldu3XwLkSrQmiHbkSP3FkwB4MXpjfWDE3JTfw29ZGAGHjgWJdcDW9XC/0PVS4W47fVj5cuLUmFWlOVlevei8ApVLp8bWclnWU4khpZvTRwaw5VggEINHlZuSv1mcr6zW2ZF22xqLqlWr19uYdGSkeWyn4IY5okX61GBHMrp1HJaYldW4G9Ylm7c/19a4jV6k0+fBmtjbkCwxoDovdQ0lIpEXTNIrbR6OVxWr1joNeJjM+Xhyu2+0+Z6Ocmt17Kj4bBvFgPJTUNlZX4/j/zohAJlMuF4vW5vP7Z3d2kqRW29qKuxr4P1RbNFwZtqq8AAAAAElFTkSuQmCCCg==) 0 12 0 12; + text-shadow: rgba(255, 255, 255, 0.7) 0 1px 0; +} +/* ------------------------------------------- */ +body.iPhone .loginProgressPanel { + min-height: 372px; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + padding: 10px; + /* background: #c8c8c8 url(../images/old/iPhone/pinstripes.png); */ + + background: #c8c8c8 url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAIAAACdaSOZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpiPHrmCgMC/GNjYwNSAAEGADdNA3dnzPlQAAAAAElFTkSuQmCCCg==); +} +body.iPhone .loadingBar { + margin-left: auto; + margin-right: auto; + margin-top: 60px; +} +div.loadingBar { + height: 22px; + width: 214px; + /* background: url(../images/old/loading/loadingBar.gif) no-repeat center; */ + + background: url(data:image/gif;charset=utf-8;base64,R0lGODlh1gAWAMQAAP////f39/f37+/v7+/v5ubm5ubm3t7e3t7e1tbWzs7Ozs7Oxc7OvcXFvcXFtb29tb29rbW1rbW1pa2tpa2tnKWlnKWllP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFBwAXACwAAAAA1gAWAAAF/+AljkQjUVWqrmzrvnAsz3Rt33iur5S0DKPgaOCgWHbIpHLJbDpjx0ZAKDoYKz4CYMsFDBLgsHhc6Jq737E6XD6f02t1242Or+f0LdzOztf5Ynh5e2ALEEYWFAZCBhUWEwiDgIF+XIR8gnSXdplum3Gdb5N9lV6jYKFmn2APKRMFQxIWEgGSp6l/o7iWpwm7er2/prelw7rFq2ELE4lTFw+PA7bHpclkyMHYxNXZ3NuV1sqODRcDKZGa3eDqfuGk69/t7NOTwu6oCCkDDY/0gPbz0sXzh0kbNXgH5W2bUGGZhQUCExLkZLBexX8XC3qTGNHilgYVIjiSJmpgR4wbPf8iVKmQo6eAL+MVqIAopsuSN1XBxMlyIqiMFFOi5BIghQULPIe27HlS40qlPu8A/SnUKRcBNFFo4WXSJlOvUJsGfWo1qpypUs8coCkLIrCuScuKpUp27NKwYOXmtdsFZIQFs97mzPU1Lt+5aevSvavX8OIuASQ0HIACwT1faM9WPbz3MWLNihMz5rwlAU0gDhIpgKuTNWG8jkWbvbbZc2fZXQoYWSCCcqIFhVsP5jpccPDXjYUfJx68ADNaIxrRdJAcOWnlsLFXZ57duu3YoM0ESGCEAqwgBWTRjNAg/GxKtXHfdv+Zdmj68+0TLdAAxazzQuyDyFEEFmjggQgmqOAoggw26OCDEEYo4YQUKkjBAs5Q0dsCJzhS4YcghijiiCSWSCBbGFIRAgAh+QQFBwAXACwCAAIA0gASAAAF/+AlilQznhegqkPivnBcrHQNtHH+zraN6zlej/YDwoRDljGYJC5lzdUARb2UDFHlc5e9bbnZ4hOZFC/JQ7MR3VMD2b4qiqKA19w6u/Ob0Ev5fV14TGGAflpfhzdyJxQLioNQhXyQhoKWk4mXlIKMJw2VnJlboZqjY5umUZFHnYwJJhRYp2eppLaotGu4tbpvrnIvJby7vnnEv8aEq5jMoqueMBByd81NrGDOqtfWZd1p322ACcqS2rflrenZ3M/t296UKe/o57n2vfjF+sn8x+suClSp5i4ePHAFER4Ul5DhQh+GBu55SJDixHr07mXMt3FfxzcS/zSEOLIiRoMnFWOmdLiSZKKQiFqa1IiSpkqbLHG6lHlxjJwAIi0G5TlU50yONZHeVJrzDCMJBLyU7Ml0p1GqHpNmXbq16RpPFyYsCGe16tGuZdGe7ffxn78gYOOaa7uM7lytbPG6tavurQxPIQAAIfkEBQcAFwAsAQABANMAEwAABf/gJY5kaZ5oqq5s675wLM80+ixJXgB87/eDnHBITOx+SECwyDQmkcsm8fgESovUqvI61Vq5wgKKR1hMVl3vFqxTr9nZahQcf8659eT9moey22oDKmlee1J9P4ZNiD6KTIxfcG6OWJN/ToGDQ5A8lIRanpuWf5xvdKOSgZelgimfcquop6qksni2fLiHk5phuou/j8GVtKmFscWzhSoPosm3z7nRu9PA1cLXxMsqOIDHtdmvdsjfxqDk5+DbKA0XvuHO5crp5rDq9PP29XaDCu6Y8qAFlDaQWkFrB7El1AZK04ILC1ih05dv3D2KAvFlxEiwoasc7RwME6dnosV9JS9+nqyYEiWUXgkipEhksiVLPyptbly5U2dHjlLOnKCZE6dLokcb1TR6E2lTpX/aDYWaNNJTqz2ZZnW6lerVTpcSjPHaFetPnmd9GtSYVmtbrlxQJAhgdi1QhGztotWrFu9dhXmbSEUxoYEBAkvh8nW7WLHfvY/7ApbTq4HMEiEAACH5BAUHABcALAIAAgDSABIAAAX/4CWO5JWcZwGsbMsOaCyjqmsD8Kwn9d3mO1nPtwIGacTfUZh8LWOFknRaYjZxT+TVuBwSuUevDxwU38g7sw2ti04BCQqVZG2yZ2rXvZ7cQ69YWTyAflp2gjxULxFzJn9biHlKgpJOlISRmJeQm00Gc3xfmZxZlUWjh519qKuqX6CPqaWas6RPpoG1sre0vFuwhq26wr67Xb3HtsnGYYTAKcjNytLMZdHW09jVac5Vbdfc2eHb3+Ll5Hjg531T66KuY6zvw/PFxMv31OxUofHwZ/L80RNorx4+g/peUYEQK582h+MguiN4kGJCiw8VUqEQDGFGjBE9hgQ5EeC/NQHPYzSS02CQuXQv+5kcOLMgSZjoZK5p9GDEAXU4JQYVWRLlST0pjdLcOWdBIxFIj05aGpXqVJs1K2a9qLKpnEZVsSoVG1brWLNluZ5Vq4fn0wsBrqKVy5bux6131+ZNu/fHWxIhAAAh+QQFBwAXACwCAAIA0gASAAAF/+AlitJojkmaFkDrvu6gzrTKwjgg13xy569dj/YDtoRDmzGYJC5jzZnhRJ1EZ0UjspkFbpPd3HcYxo17ZdiZl2ZefdSTpPD2PY/1NvStx/PvOnmAazV9gXxxJhMGgneETo6NT49Yg5JLlEqRiHEDKJdaoF6iYqRmpmqoblcFiS0IF1Z/m6yWs5Oqe7W0UYaZK3cTiSKQuLeYuX67xsvIx6HPQA3Dxc7N0Nej0aXbp92p30EX2dzk3ubg6Ku9tuq67I7EXO3wzPXW99j52u7K+2LUKvGaNxAMPYL2EOJTqI+hl4CaEhosSObgRIkVKaKxmHESRGAa2XDcGLLQSJElq2E1vIjpo52UAjGSlImSpkmYERey1DJMQUydHYHOFFqT6E2bKvn9MzPsAoUFIJH+XBmU6lCrRbEeNZoUYFOnDg6c3Kq167ml6dCuc1hObYyvcNOyPTtX7k6lddfebZv3bdMQACH5BAkBABcALAAAAADWABYAAAX/4CWOZGmeaKqubOu+cCzPdG3feK7vfH8tBABgoEoYjQWUcElMHZHK5bD4TJ6kU2c1yqQerSZsE/VMgEvi4gJCaSGk41P5TEprv1xh3DTPZ8lbV3BeUIJdd4Vhg4gJDSsBi4B4hnqEZn57JX2Uf3KBioeSiWiRnpOglYx0JgOlfJ+koaajda6asLWyr6exqaKXnJkkm6idu7Qmb7q3vLm+s8DFwiPEvcbMyCJ2v6vatsO4I9vQ3b3TItXO1+DN4t/U4d7L7NkX48fR1ucX6e7z8O1MLPiHLp69dwUDHiTIz+A9bPnU7esn7xm+cg/pRUTRah3Aehk/bqzoMSFIhA0V1YY0OXKhRYgYUVK0d+alxpgMZ65MeTKnQ5k/faoEOjRAnYlBbYrEqZQl05I8W+7USbRn06g4BZA4YOkp0qFCrUKlGlZqVbNlmXJtQfZq27FJ4YJ1G/erWLtohThgW7crJr/BAEsTrI+wRMP+hBDgO1fuXcQk8XqF7NJxXsuTWbyV/FdVZ26fyYW+OBpmadGBPacGvRr1YNWvWcd2XVhzX9i1ZeemfRh3b92/eScGsLgFhQgNLnNuTZq5aec3Ty+V7pRLgAJ7fWjfzr279+/gw4sfTz5FCAA7Cg==) no-repeat center; +} +div.loadingBar div.loadingBarProgress { + height: 100%; + width: 0%; +} +div.loadingBar div.loadingBarProgress div.loadingBarProgress_left { + height: 100%; + max-width: 8px; + /* background: url(../images/old/loading/loadingBarProgress.png) no-repeat 0; */ + + background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAANYAAAAWCAYAAAC8C2KaAAAACXBIWXMAAAsSAAALEgHS3X78AAACIklEQVR4Ae3brU7DUBQH8HO6PQAazx4BRUKDwfChQTGFQ4wRFGEERdgQONRQoGEzGFISFI8w/DQSWHsP565r0xY2BiWY/ivW+530l52cdr0jwgEBCPy5AE9aUc7XV0kcl4jniGR20lj0QaAYAtzXWHgmNh7v3HTGXfOXgSWnKy6VqEZMCKZxcmiHgFCfAjrjva6XxfgUWNJc3tVBG9mBqEMAAmMFrrl+10r2pgJLTpYO9dZvNTkAZQhAYAoBNh3evz+KRsaBJccLevtXakYdOEMAAj8UCII6Hzx6dlY5nipBjXwTV1GAAAR+KiA1neHZWcOMJY35FS03bAMOCEAgl0CDG0/dMGP5by6xk2s1TIYABFRAjKufo8AyfoUkftyCDwQg8FsBloqdGmaswMf7qt9CYh4E0gLDWBrdCg7SXahBAAK5BEYZa9AnZmStXJSYDAEVENEtT/GtYNAjxl5AfDEgkFtAuGfXCDPW4N0jh9zci2IBCBRdwCTeY1kL2Z65RdYq+rcC159LQLjPFy9rdo0wY9nS+2uLSk5qI6FtxgEBCEwpEJg4flIvr2SrfEgOYxPulI4YBoFYwEiHL/2jqJ4KLNuowVXT4NqMBuAMAQh8I2DkSoPqLDnqU2DZTqmWF4mcXTxzJalQhkBGQJ+piEyL2/5DpifchJttjOpSLenmXMfVvboVBFmkgnOhBYbBJPqTuv41vx10C22Bi4fAfwt8AJe2flCLvH1PAAAAAElFTkSuQmCCCg==) no-repeat 0; +} +div.loadingBar div.loadingBarProgress div.loadingBarProgress_right { + position: relative; + height: 100%; + margin-left: 8px; + /* background: url(../images/old/loading/loadingBarProgress.png) no-repeat right; */ + + background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAANYAAAAWCAYAAAC8C2KaAAAACXBIWXMAAAsSAAALEgHS3X78AAACIklEQVR4Ae3brU7DUBQH8HO6PQAazx4BRUKDwfChQTGFQ4wRFGEERdgQONRQoGEzGFISFI8w/DQSWHsP565r0xY2BiWY/ivW+530l52cdr0jwgEBCPy5AE9aUc7XV0kcl4jniGR20lj0QaAYAtzXWHgmNh7v3HTGXfOXgSWnKy6VqEZMCKZxcmiHgFCfAjrjva6XxfgUWNJc3tVBG9mBqEMAAmMFrrl+10r2pgJLTpYO9dZvNTkAZQhAYAoBNh3evz+KRsaBJccLevtXakYdOEMAAj8UCII6Hzx6dlY5nipBjXwTV1GAAAR+KiA1neHZWcOMJY35FS03bAMOCEAgl0CDG0/dMGP5by6xk2s1TIYABFRAjKufo8AyfoUkftyCDwQg8FsBloqdGmaswMf7qt9CYh4E0gLDWBrdCg7SXahBAAK5BEYZa9AnZmStXJSYDAEVENEtT/GtYNAjxl5AfDEgkFtAuGfXCDPW4N0jh9zci2IBCBRdwCTeY1kL2Z65RdYq+rcC159LQLjPFy9rdo0wY9nS+2uLSk5qI6FtxgEBCEwpEJg4flIvr2SrfEgOYxPulI4YBoFYwEiHL/2jqJ4KLNuowVXT4NqMBuAMAQh8I2DkSoPqLDnqU2DZTqmWF4mcXTxzJalQhkBGQJ+piEyL2/5DpifchJttjOpSLenmXMfVvboVBFmkgnOhBYbBJPqTuv41vx10C22Bi4fAfwt8AJe2flCLvH1PAAAAAElFTkSuQmCCCg==) no-repeat right; + top: -22px; +} +/* ------------------------------------------- */ +body.iPhone .loginErrorPanel { + position: absolute; + min-height: 372px; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + padding: 10px; + /* background: #c8c8c8 url(../images/old/iPhone/pinstripes.png); */ + + background: #c8c8c8 url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAIAAACdaSOZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpiPHrmCgMC/GNjYwNSAAEGADdNA3dnzPlQAAAAAElFTkSuQmCCCg==); +} +body.iPhone .loginErrorPanel h2 { + text-align: center; + color: red; + margin-top: 40px; +} +/* ------------------------------------------- */ +form.cardListSearchForm { + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + border-bottom: 1px solid #2d3642; + border-top: 1px solid #6d84a2; + padding: 6px; + height: 45px; + /* background: url(../images/old/iPhone/toolbar.png) #6d84a2 repeat-x; */ + + background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAArCAIAAAA2QHWOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE1JREFUCNddjDEOgEAQAgn//5qltYWFnb1GB4vdSy4WBAYStKyb9+O0FJMYyjMyMWCC35lJM71r6vF1P07/lFSfPx6ZxNLcy1HtihzpA/RWcOj0zlDhAAAAAElFTkSuQmCCCg==) #6d84a2 repeat-x; + margin: 0px; +} +form.cardListSearchForm input { + margin: 7px; + -webkit-appearance: searchfield; + width: 200px; +} +ul.cardListPanel { + margin: 0px; + padding: 0px; + list-style-type: none; + min-height: 372px; +} +li.cardListItem { + height: 43px; + border-bottom: 1px solid #cccccc; + /* background: url(../images/old/iPhone/listArrow.png) no-repeat right center; */ + + background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKVJREFUeNpi/P//PwOtARMDHcDwsYQFRJSXl8P4dVC6CZvizs5O8i1BsqARid9Ei+BiQ2KDLKumhSU1QNyKxG+hlkXoEQ+yqAPNogpapK5KNIvaKbUIVxKeAsTvkPg5QCxETUukgfgAkqFPgdgBzVKKLIFZoIJmwR1qBRdNLEC2BJQpV9LCAmRL/gBxAtRwqlqAXqzcgRrOQE0LQIBxtNIiBQAEGAA7xCa2yF9zEgAAAABJRU5ErkJgggo=) no-repeat right center; +} +li.cardListItem a { + position: relative; + top: -22px; + left: 40px; + display: block; + white-space: nowrap; + overflow: hidden; +} +body[orientation="portrait"] li.cardListItem a { + max-width: 250px; +} +body[orientation="landscape"] li.cardListItem a { + max-width: 400px; +} +li.cardListItem img { + height: 20px; + width: 20px; + padding: 12px 10px 0px 10px; +} +li.cardListItem a { + text-decoration: none; + color: black; + font-weight: bold; + font-size: 14pt; + vertical-align: 3px; +} +div.cardDetailPanel { + position: absolute; + top: 45px; + min-height: 372px; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + padding: 10px; + /* background: #c8c8c8 url(../images/old/iPhone/pinstripes.png); */ + + background: #c8c8c8 url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAIAAACdaSOZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpiPHrmCgMC/GNjYwNSAAEGADdNA3dnzPlQAAAAAElFTkSuQmCCCg==); +} +/*div.cardDetailPanel > fieldset > div.row > input.directLogin {*/ +div.cardDetailPanel > fieldset > div.row > span.directLogin { + width: 100%; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + margin: 0; + border: none; + padding: 12px 10px 0 110px; + height: 42px; + background: none; + font-size: 16px; + font-weight: normal; + padding-left: 40px; + color: black; + /* background: url(../images/old/iPhone/listArrow.png) no-repeat right center; */ + + background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKVJREFUeNpi/P//PwOtARMDHcDwsYQFRJSXl8P4dVC6CZvizs5O8i1BsqARid9Ei+BiQ2KDLKumhSU1QNyKxG+hlkXoEQ+yqAPNogpapK5KNIvaKbUIVxKeAsTvkPg5QCxETUukgfgAkqFPgdgBzVKKLIFZoIJmwR1qBRdNLEC2BJQpV9LCAmRL/gBxAtRwqlqAXqzcgRrOQE0LQIBxtNIiBQAEGAA7xCa2yF9zEgAAAABJRU5ErkJgggo=) no-repeat right center; +} +/*body[orientation="landscape"] div.cardDetailPanel > fieldset > div.row > input.directLogin { */ +body[orientation="landscape"] div.cardDetailPanel > fieldset > div.row > span.directLogin { + padding-left: 50px; +} +div.cardDetailPanel h2 { + margin: 0 0 8px 14px; + font-size: inherit; + font-weight: bold; + color: #4d4d70; + text-shadow: rgba(255, 255, 255, 0.75) 1px 1px 0; +} +/* body[orientation="portrait"] div.cardList { */ +body[orientation="portrait"] > * { + width: 320px; +} +/* body[orientation="landscape"] div.cardList { */ +body[orientation="landscape"] > * { + width: 480px; +} diff --git a/frontend/gamma/html/index_template.html b/frontend/gamma/html/index_template.html index 8cf838c..a7067da 100644 --- a/frontend/gamma/html/index_template.html +++ b/frontend/gamma/html/index_template.html @@ -1,62 +1,67 @@ <html> <head> <title>@page.title@</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <!-- @copyright@ --> @css@ <link rel="shortcut icon" href="./clipperz.ico" /> <meta name="description" content="Login to your web accounts with just one click. Never type a password again! Use multiple complex passwords and forget them. A password manager that enhances your online security." /> <meta name="keywords" content="password manager,gestor de contraseñas,gerenciador de senhas,Kennwortmanager,passwords,security,privacy,cryptography" /> <script> Clipperz_IEisBroken = false; Clipperz_normalizedNewLine = '\n'; Clipperz_dumpUrl = "/dump/"; </script> <!--[if IE]><script> Clipperz_IEisBroken = true; Clipperz_normalizedNewLine = '\x0d\x0a'; </script><![endif]--> -@js_DEBUG@ +@js_LINKED@ </head> <body> <div id="mainDiv"> <div id="loading"> <a href="http://www.clipperz.com" target="_blank"><div id="logo"></div></a> <h5 class="clipperzPayoff">keep it to yourself!</h5> <h2>loading ...</h2> </div> -@js_INSTALL@ +@js_EMBEDDED@ </div> <div id="applicationVersionType" class="@application.version.type@"></div> +<script> + Clipperz.PM.Proxy.defaultProxy = new Clipperz.PM.Proxy.JSON({'url':'@request.path@', 'shouldPayTolls':@should.pay.toll@}); + /*offline_data_placeholder*/ +</script> + <!-- --> <div id="javaScriptAlert"> <div class="mask"></div> <div class="message"> <div class="header"></div> <div class="body"> <div class="alertLogo"></div> <div class="alert"> <h1>Attention!</h1> <p>If you can read this message, the chances are that your browser does not properly support JavaScript? or you have disabled this functionality yourself.</p> <h3>Javascript is required to access Clipperz.</h3> <h5>Please enable scripting or upgrade your browser.</h5> </div> </div> <div class="footer"></div> </div> </div> <!-- --> </body> </html> diff --git a/frontend/gamma/js/Clipperz/Async.js b/frontend/gamma/js/Clipperz/Async.js index 7c9d783..97d8ecf 100644 --- a/frontend/gamma/js/Clipperz/Async.js +++ b/frontend/gamma/js/Clipperz/Async.js @@ -1,704 +1,711 @@ /* Copyright 2008-2011 Clipperz Srl This file is part of Clipperz Community Edition. Clipperz Community Edition is an online password manager. For further information about its features and functionalities please refer to http://www.clipperz.com. * Clipperz Community Edition is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * Clipperz Community Edition is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. * You should have received a copy of the GNU Affero General Public License along with Clipperz Community Edition. If not, see <http://www.gnu.org/licenses/>. */ //Clipperz.Async = MochiKit.Async; if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } if (typeof(Clipperz.Async) == 'undefined') { Clipperz.Async = {}; } Clipperz.Async.VERSION = "0.1"; Clipperz.Async.NAME = "Clipperz.Async"; Clipperz.Async.Deferred = function(aName, args) { args = args || {}; Clipperz.Async.Deferred.superclass.constructor.call(this, args.canceller); this._args = args; this._name = aName || "Anonymous deferred"; this._count = 0; this._shouldTrace = ((CLIPPERZ_DEFERRED_TRACING_ENABLED === true) || (args.trace === true)); this._vars = null; return this; } //============================================================================= Clipperz.Base.extend(Clipperz.Async.Deferred, MochiKit.Async.Deferred, { 'name': function () { return this._name; }, 'args': function () { return this._args; }, //----------------------------------------------------------------------------- 'callback': function (aValue) { if (this._shouldTrace) { - Clipperz.log("CALLBACK " + this._name, aValue); + // Clipperz.log("CALLBACK " + this._name, aValue); + console.log("CALLBACK " + this._name, aValue); } if (this.chained == false) { var message; message = "ERROR [" + this._name + "]"; this.addErrback(function(aResult) { if (! (aResult instanceof MochiKit.Async.CancelledError)) { Clipperz.log(message, aResult); } return aResult; }); if (this._shouldTrace) { var resultMessage; resultMessage = "RESULT " + this._name + " <=="; // this.addCallback(function(aResult) { Clipperz.Async.Deferred.superclass.addCallback.call(this, function(aResult) { - Clipperz.log(resultMessage, aResult); + // Clipperz.log(resultMessage, aResult); + console.log(resultMessage, aResult); return aResult; }); } } if (CLIPPERZ_DEFERRED_CALL_LOGGING_ENABLED === true) { Clipperz.log("callback " + this._name, this); } return Clipperz.Async.Deferred.superclass.callback.apply(this, arguments); }, //----------------------------------------------------------------------------- 'addCallback': function () { var message; if (this._shouldTrace) { this._count ++; message = "[" + this._count + "] " + this._name + " "; // this.addBoth(function(aResult) {Clipperz.log(message + "-->", aResult); return aResult;}); this.addCallbacks( - function(aResult) {Clipperz.log("-OK- " + message + "-->"/*, aResult*/); return aResult;}, - function(aResult) {Clipperz.log("FAIL " + message + "-->"/*, aResult*/); return aResult;} + // function(aResult) {Clipperz.log("-OK- " + message + "-->"/*, aResult*/); return aResult;}, + function(aResult) {console.log("-OK- " + message + "-->"/*, aResult*/); return aResult;}, + // function(aResult) {Clipperz.log("FAIL " + message + "-->"/*, aResult*/); return aResult;} + function(aResult) {console.log("FAIL " + message + "-->"/*, aResult*/); return aResult;} ); } Clipperz.Async.Deferred.superclass.addCallback.apply(this, arguments); if (this._shouldTrace) { // this.addBoth(function(aResult) {Clipperz.log(message + "<--", aResult); return aResult;}); this.addCallbacks( - function(aResult) {Clipperz.log("-OK- " + message + "<--", aResult); return aResult;}, - function(aResult) {Clipperz.log("FAIL " + message + "<--", aResult); return aResult;} + // function(aResult) {Clipperz.log("-OK- " + message + "<--", aResult); return aResult;}, + function(aResult) {console.log("-OK- " + message + "<--", aResult); return aResult;}, + // function(aResult) {Clipperz.log("FAIL " + message + "<--", aResult); return aResult;} + function(aResult) {console.log("FAIL " + message + "<--", aResult); return aResult;} ); } }, //============================================================================= 'addCallbackPass': function() { var passFunction; passFunction = MochiKit.Base.partial.apply(null, arguments); this.addCallback(function() { var result; result = arguments[arguments.length -1]; passFunction(); return result; }); }, //----------------------------------------------------------------------------- 'addErrbackPass': function() { var passFunction; passFunction = MochiKit.Base.partial.apply(null, arguments); this.addErrback(function() { var result; result = arguments[arguments.length -1]; passFunction(); return result; }); }, //----------------------------------------------------------------------------- 'addBothPass': function() { var passFunction; passFunction = MochiKit.Base.partial.apply(null, arguments); this.addBoth(function() { var result; result = arguments[arguments.length -1]; passFunction(); return result; }); }, //----------------------------------------------------------------------------- 'addIf': function (aThenBlock, anElseBlock) { this.addCallback(MochiKit.Base.bind(function (aValue) { var deferredResult; if (!MochiKit.Base.isUndefinedOrNull(aValue) && aValue) { deferredResult = Clipperz.Async.callbacks(this._name + " <then>", aThenBlock, null, aValue); } else { deferredResult = Clipperz.Async.callbacks(this._name + " <else>", anElseBlock, null, aValue); } return deferredResult; })) }, //----------------------------------------------------------------------------- 'addMethod': function () { this.addCallback(MochiKit.Base.method.apply(this, arguments)); }, //----------------------------------------------------------------------------- 'addMethodcaller': function () { this.addCallback(MochiKit.Base.methodcaller.apply(this, arguments)); }, //============================================================================= 'addLog': function (aLog) { if (CLIPPERZ_DEFERRED_LOGGING_ENABLED) { this.addBothPass(function(res) {Clipperz.log(aLog + " ", res);}); // this.addBothPass(function(res) {console.log(aLog + " ", res);}); } }, //============================================================================= 'acquireLock': function (aLock) { // this.addCallback(function (aResult) { // return Clipperz.Async.callbacks("Clipperz.Async.acquireLock", [ // MochiKit.Base.method(aLock, 'acquire'), // MochiKit.Base.partial(MochiKit.Async.succeed, aResult) // ], {trace:false}); // }); this.addCallback(MochiKit.Base.method(aLock, 'acquire')); }, 'releaseLock': function (aLock) { // this.addCallback(function (aResult) { // return Clipperz.Async.callbacks("Clipperz.Async.release <ok>", [ // MochiKit.Base.method(aLock, 'release'), // MochiKit.Base.partial(MochiKit.Async.succeed, aResult) // ], {trace:false}); // }); // this.addErrback(function (aResult) { ///console.log("releaseLock.addErrback:", aResult); // return Clipperz.Async.callbacks("Clipperz.Async.release <fail>", [ // MochiKit.Base.method(aLock, 'release'), // MochiKit.Base.partial(MochiKit.Async.fail, aResult) // ], {trace:false}); // }); // this.addBothPass(MochiKit.Base.method(aLock, 'release')); this.addCallbackPass(MochiKit.Base.method(aLock, 'release')); this.addErrback(function (anError) { aLock.release(); return anError; }); }, //============================================================================= 'collectResults': function (someRequests) { this.addCallback(Clipperz.Async.collectResults(this._name + " <collect results>", someRequests, this._args)); }, 'addCallbackList': function (aRequestList) { this.addCallback(Clipperz.Async.callbacks, this._name + " <callback list>", aRequestList, this._args); }, //============================================================================= 'vars': function () { if (this._vars == null) { this._vars = {} } return this._vars; }, 'setValue': function (aKey) { this.addCallback(MochiKit.Base.bind(function (aValue) { this.vars()[aKey] = aValue; return aValue; }, this)); }, 'getValue': function (aKey) { this.addCallback(MochiKit.Base.bind(function () { return this.vars()[aKey]; }, this)); }, //============================================================================= __syntaxFix__: "syntax fix" }); //############################################################################# Clipperz.Async.DeferredSynchronizer = function(aName, someMethods) { this._name = aName || "Anonymous deferred Synchronizer"; this._methods = someMethods; this._numberOfMethodsDone = 0; this._methodResults = []; this._result = new Clipperz.Async.Deferred("Clipperz.Async.DeferredSynchronizer # " + this.name(), {trace:false}); this._result.addMethod(this, 'methodResults'); this._result.addCallback(function(someResults) { var cancels; var errors; var result; cancels = MochiKit.Base.filter(function(aResult) { return (aResult instanceof MochiKit.Async.CancelledError)}, someResults); if (cancels.length == 0) { errors = MochiKit.Base.filter(function(aResult) { return (aResult instanceof Error)}, someResults); if (errors.length == 0) { // result = MochiKit.Async.succeed(someResults); result = someResults; } else { result = MochiKit.Async.fail(someResults); } } else { result = MochiKit.Async.fail(cancels[0]); } return result; }/*, this._methodResults */); return this; } MochiKit.Base.update(Clipperz.Async.DeferredSynchronizer.prototype, { //----------------------------------------------------------------------------- 'name': function() { return this._name; }, //----------------------------------------------------------------------------- 'methods': function() { return this._methods; }, 'methodResults': function() { return this._methodResults; }, //----------------------------------------------------------------------------- 'result': function() { return this._result; }, //----------------------------------------------------------------------------- 'numberOfMethodsDone':function() { return this._numberOfMethodsDone; }, 'incrementNumberOfMethodsDone': function() { this._numberOfMethodsDone ++; }, //----------------------------------------------------------------------------- 'run': function(args, aValue) { var deferredResults; var i, c; deferredResults = []; args = args || {}; c = this.methods().length; for (i=0; i<c; i++) { var deferredResult; var methodCalls; var ii, cc; //console.log("TYPEOF", typeof(this.methods()[i])); if (typeof(this.methods()[i]) == 'function') { methodCalls = [ this.methods()[i] ]; } else { methodCalls = this.methods()[i]; } cc = methodCalls.length; deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.DeferredSynchronizer.run => " + this.name() + "[" + i + "]", args); for (ii=0; ii<cc; ii++) { deferredResult.addCallback(methodCalls[ii]); } deferredResult.addBoth(MochiKit.Base.method(this, 'handleMethodCallDone', i)); deferredResults.push(deferredResult); } for (i=0; i<c; i++) { deferredResults[i].callback(aValue); } return this.result(); }, //----------------------------------------------------------------------------- 'handleMethodCallDone': function(anIndexValue, aResult) { this.incrementNumberOfMethodsDone(); this.methodResults()[anIndexValue] = aResult; if (this.numberOfMethodsDone() < this.methods().length) { // nothing to do here other than possibly log something } else if (this.numberOfMethodsDone() == this.methods().length) { this.result().callback(); } else if (this.numberOfMethodsDone() > this.methods().length) { + alert("Clipperz.Async.Deferred.handleMethodCallDone -> WTF!"); // WTF!!! :( } }, //----------------------------------------------------------------------------- __syntaxFix__: "syntax fix" }); //############################################################################# MochiKit.Base.update(Clipperz.Async, { 'callbacks': function (aName, someFunctions, someArguments, aCallbackValue) { var deferredResult; var i, c; deferredResult = new Clipperz.Async.Deferred(aName, someArguments); c = someFunctions.length; for (i=0; i<c; i++) { deferredResult.addCallback(someFunctions[i]); } deferredResult.callback(aCallbackValue); return deferredResult; }, //------------------------------------------------------------------------- 'forkAndJoin': function (aName, someMethods, args) { return MochiKit.Base.partial(function (aName, someMethods, args, aValue) { var synchronizer; var result; args = args || {}; synchronizer = new Clipperz.Async.DeferredSynchronizer(aName, someMethods); result = synchronizer.run(args, aValue); return result; }, aName, someMethods, args); }, //------------------------------------------------------------------------- 'collectResults': function(aName, someRequests, args) { return MochiKit.Base.partial(function(aName, someRequests, args, aValue) { var deferredResult; var requestKeys; var methods; requestKeys = MochiKit.Base.keys(someRequests); methods = MochiKit.Base.values(someRequests); deferredResult = new Clipperz.Async.Deferred(aName, args); deferredResult.addCallback(Clipperz.Async.forkAndJoin(aName + " [inner forkAndJoin]", methods, args)); deferredResult.addBoth(function(someResults) { var returnFunction; var results; var i,c; var result; if (someResults instanceof MochiKit.Async.CancelledError) { returnFunction = MochiKit.Async.fail; result = someResults; } else { if (someResults instanceof Error) { returnFunction = MochiKit.Async.fail; results = someResults['message']; } else { returnFunction = MochiKit.Async.succeed; results = someResults; } result = {}; c = requestKeys.length; for (i=0; i<c; i++) { result[requestKeys[i]] = results[i]; } } return returnFunction.call(null, result); }); deferredResult.callback(aValue); return deferredResult; }, aName, someRequests, args); }, //------------------------------------------------------------------------- 'collectAll': function (someDeferredObjects) { var deferredResult; deferredResult = new MochiKit.Async.DeferredList(someDeferredObjects, false, false, false); deferredResult.addCallback(function (aResultList) { return MochiKit.Base.map(function (aResult) { if (aResult[0]) { return aResult[1]; } else { throw aResult[1]; } }, aResultList); }); return deferredResult; }, //------------------------------------------------------------------------- 'setItem': function (anObject, aKey, aValue) { anObject[aKey] = aValue; return anObject; }, 'setItemOnObject': function (aKey, aValue, anObject) { anObject[aKey] = aValue; return anObject; }, 'setDeferredItemOnObject': function (aKey, aDeferredFunction, anObject) { return Clipperz.Async.callbacks("Clipperz.Async.setDeferredItemOnObject", [ aDeferredFunction, MochiKit.Base.partial(Clipperz.Async.setItem, anObject, aKey) ], {trace:false}, anObject); }, //------------------------------------------------------------------------- 'deferredIf': function (aName, aThenBlock, anElseBlock) { return function (aValue) { var deferredResult; if (!MochiKit.Base.isUndefinedOrNull(aValue) && aValue) { deferredResult = Clipperz.Async.callbacks(aName + " <then>", aThenBlock, null, aValue); } else { deferredResult = Clipperz.Async.callbacks(aName + " <else>", anElseBlock, null, aValue); } return deferredResult; } }, //------------------------------------------------------------------------- 'log': function(aMessage, aResult) { if (CLIPPERZ_DEFERRED_LOGGING_ENABLED) { Clipperz.log(aMessage + " ", aResult); } return aResult; }, //========================================================================= 'deferredCompare': function (aComparator, aDeferred, bDeferred) { var deferredResult; deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredCompare", {trace:false}); deferredResult.addCallback(Clipperz.Async.collectAll, [aDeferred, bDeferred]); deferredResult.addCallback(function (someResults) { var result; if (aComparator(someResults[0], someResults[1]) > 0) { result = MochiKit.Async.succeed(); } else { result = MochiKit.Async.fail(); }; return result; }); deferredResult.callback(); return deferredResult; }, //------------------------------------------------------------------------- 'insertIntoSortedArray': function (anObject, aDeferredComparator, aSortedResult) { var deferredResult; var i, c; if (aSortedResult.length == 0) { deferredResult = MochiKit.Async.succeed([anObject]); } else { deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.insertIntoSortedArray", {trace:false}); c = aSortedResult.length + 1; for (i=0; i<c; i++) { deferredResult.addCallback(function (aDeferredComparator, aObject, bObject, aContext) { var innerDeferredResult; innerDeferredResult = new Clipperz.Async.Deferred("Clipperz.Async.insertIntoSortedArray <inner compare>", {trace:false}); innerDeferredResult.addCallback(aDeferredComparator, aObject, bObject); innerDeferredResult.addErrback(MochiKit.Async.fail, aContext); innerDeferredResult.callback(); return innerDeferredResult; }, aDeferredComparator, anObject, aSortedResult[i], i); } deferredResult.addMethod(aSortedResult, 'push', anObject); deferredResult.addErrback(function (anError) { aSortedResult.splice(anError.message, 0, anObject); }) deferredResult.addBoth(MochiKit.Async.succeed, aSortedResult); deferredResult.callback(); } return deferredResult; }, //------------------------------------------------------------------------- 'deferredSort': function (aDeferredComparator, someObjects) { var deferredResult; var i, c; deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredSort", {trace:false}); c = someObjects.length; for (i=0; i<c; i++) { deferredResult.addCallback(Clipperz.Async.insertIntoSortedArray, someObjects[i], aDeferredComparator); if ((i % 50) == 0) { // console.log("######### sort wait ##########"); deferredResult.addCallback(MochiKit.Async.wait, 0.5); } } deferredResult.callback([]); return deferredResult; }, //========================================================================= 'deferredFilter': function (aFunction, someObjects) { var deferredResult; var i, c; deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredFilter", {trace:false}); c = someObjects.length; for (i=0; i<c; i++) { deferredResult.addCallback(function (aFunction, anObject, anIndex, aResult) { var innerDeferredResult; innerDeferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredFilter <inner - " + anIndex + ">", {trace:false}); innerDeferredResult.addCallback(aFunction, anObject); innerDeferredResult.addCallback(function (aFilterResult) { if (aFilterResult) { aResult.push(anObject); }; }); innerDeferredResult.addBoth(MochiKit.Async.succeed, aResult); innerDeferredResult.callback(); return innerDeferredResult; }, aFunction, someObjects[i], i); } deferredResult.callback([]); return deferredResult; }, 'forEach': function (aFunction) { return MochiKit.Base.partial(function (aFunction, anIterable) { MochiKit.Iter.forEach(anIterable, aFunction); }, aFunction); }, //========================================================================= 'or': function (someValues) { return Clipperz.Async.callbacks("Clipperz.Async.or", [ MochiKit.Base.values, MochiKit.Base.flattenArguments, //function (aValue) { console.log("Record.hasAnyCleanTextData - flatten", aValue); return aValue; }, function(someInnerValues) { return MochiKit.Iter.some(someInnerValues, MochiKit.Base.operator.identity); } ], {trace:false}, someValues); }, //========================================================================= 'clearResult': function () {}, //========================================================================= __syntaxFix__: "syntax fix" }); //############################################################################# CLIPPERZ_DEFERRED_LOGGING_ENABLED = true; CLIPPERZ_DEFERRED_TRACING_ENABLED = false; CLIPPERZ_DEFERRED_CALL_LOGGING_ENABLED = false; diff --git a/frontend/gamma/js/Clipperz/PM/Proxy.js b/frontend/gamma/js/Clipperz/PM/Proxy.js index 190bffd..9817eac 100644 --- a/frontend/gamma/js/Clipperz/PM/Proxy.js +++ b/frontend/gamma/js/Clipperz/PM/Proxy.js @@ -1,169 +1,169 @@ /* Copyright 2008-2011 Clipperz Srl This file is part of Clipperz Community Edition. Clipperz Community Edition is an online password manager. For further information about its features and functionalities please refer to http://www.clipperz.com. * Clipperz Community Edition is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * Clipperz Community Edition is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. * You should have received a copy of the GNU Affero General Public License along with Clipperz Community Edition. If not, see <http://www.gnu.org/licenses/>. */ if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } //============================================================================= Clipperz.PM.Proxy = function(args) { args = args || {}; this._shouldPayTolls = args.shouldPayTolls || false; this._tolls = { 'CONNECT': [], 'REGISTER': [], 'MESSAGE': [] }; if (args.isDefault === true) { Clipperz.PM.Proxy.defaultProxy = this; } return this; } Clipperz.PM.Proxy.prototype = MochiKit.Base.update(null, { 'toString': function() { return "Clipperz.PM.Proxy"; }, //========================================================================= 'shouldPayTolls': function() { return this._shouldPayTolls; }, //------------------------------------------------------------------------- 'tolls': function() { return this._tolls; }, //------------------------------------------------------------------------- 'payToll': function(aRequestType, someParameters) { var deferredResult; //console.log(">>> Proxy.payToll", aRequestType, someParameters); if (this.shouldPayTolls()) { deferredResult = new Clipperz.Async.Deferred("Proxy.payToll", {trace:false}); if (this.tolls()[aRequestType].length == 0) { deferredResult.addMethod(this, 'sendMessage', 'knock', {requestType:aRequestType}); deferredResult.addMethod(this, 'setTollCallback'); } deferredResult.addMethod(this.tolls()[aRequestType], 'pop'); deferredResult.addCallback(MochiKit.Base.methodcaller('deferredPay')); deferredResult.addCallback(function(aToll) { var result; result = { parameters: someParameters, toll: aToll } return result; }); deferredResult.callback(); } else { deferredResult = MochiKit.Async.succeed({parameters:someParameters}); } //console.log("<<< Proxy.payToll"); return deferredResult; }, //------------------------------------------------------------------------- 'addToll': function(aToll) { //console.log(">>> Proxy.addToll", aToll); this.tolls()[aToll.requestType()].push(aToll); //console.log("<<< Proxy.addToll"); }, //========================================================================= 'setTollCallback': function(someParameters) { //console.log(">>> Proxy.setTollCallback", someParameters); if (typeof(someParameters['toll']) != 'undefined') { //console.log("added a new toll", someParameters['toll']); this.addToll(new Clipperz.PM.Toll(someParameters['toll'])); } //console.log("<<< Proxy.setTallCallback", someParameters['result']); return someParameters['result']; }, //========================================================================= 'registration': function (someParameters) { return this.processMessage('registration', someParameters, 'REGISTER'); }, 'handshake': function (someParameters) { return this.processMessage('handshake', someParameters, 'CONNECT'); }, 'message': function (someParameters) { return this.processMessage('message', someParameters, 'MESSAGE'); }, 'logout': function (someParameters) { return this.processMessage('logout', someParameters, 'MESSAGE'); }, //========================================================================= 'processMessage': function (aFunctionName, someParameters, aRequestType) { var deferredResult; - deferredResult = new Clipperz.Async.Deferred("Proxy.processMessage", {trace:false}); + deferredResult = new Clipperz.Async.Deferred("Proxy.processMessage", {trace:true}); deferredResult.addMethod(this, 'payToll', aRequestType); deferredResult.addMethod(this, 'sendMessage', aFunctionName); deferredResult.addMethod(this, 'setTollCallback'); deferredResult.callback(someParameters); return deferredResult; }, //========================================================================= 'sendMessage': function () { throw Clipperz.Base.exception.AbstractMethod; }, //========================================================================= 'isReadOnly': function () { return false; }, //========================================================================= __syntaxFix__: "syntax fix" }); diff --git a/frontend/gamma/properties/gamma.properties.json b/frontend/gamma/properties/gamma.properties.json index 57f26f1..5fab24d 100644 --- a/frontend/gamma/properties/gamma.properties.json +++ b/frontend/gamma/properties/gamma.properties.json @@ -1,189 +1,189 @@ { "copyright.values": { "mochikit.repository": "http://svn.mochikit.com/mochikit/trunk/", "mochikit.version": "1506" }, "js": [ "MochiKit/Base.js", "MochiKit/Iter.js", "MochiKit/Logging.js", "-- MochiKit/DateTime.js", "MochiKit/Format.js", "MochiKit/Async.js", "MochiKit/DOM.js", "MochiKit/Style.js", "MochiKit/LoggingPane.js", "MochiKit/Color.js", "MochiKit/Signal.js", "MochiKit/Position.js", "MochiKit/Selector.js", "MochiKit/Visual.js", "JSON/json2.js", "Clipperz/YUI/Utils.js", "Clipperz/YUI/DomHelper.js", "Clipperz/ByteArray.js", "Clipperz/Base.js", "Clipperz/Async.js", "Clipperz/CSVProcessor.js", "Clipperz/KeePassExportProcessor.js", "Clipperz/Date.js", "Clipperz/DOM.js", "Clipperz/Logging.js", "Clipperz/Signal.js", "Clipperz/Style.js", "Clipperz/Visual.js", "Clipperz/Set.js", "-- Clipperz/Profile.js", "Clipperz/KeyValueObjectStore.js", "Clipperz/Crypto/SHA.js", "Clipperz/Crypto/AES.js", "Clipperz/Crypto/PRNG.js", "Clipperz/Crypto/BigInt.js", "Clipperz/Crypto/Base.js", "Clipperz/Crypto/SRP.js", "Clipperz/Crypto/RSA.js", "Clipperz/PM/Strings/Strings_defaults.js", "Clipperz/PM/Strings/Strings_en-US.js", "-- # Clipperz/PM/Strings/Strings_en-GB.js", "-- # Clipperz/PM/Strings/Strings_en-CA.js", "-- Clipperz/PM/Strings/Strings_it-IT.js", "-- Clipperz/PM/Strings/Strings_pt-BR.js", "-- # Clipperz/PM/Strings/Strings_pt-PT.js", "-- Clipperz/PM/Strings/Strings_ja-JP.js", "-- Clipperz/PM/Strings/Strings_zh-CN.js", "-- Clipperz/PM/Strings/Strings_es-ES.js", "-- Clipperz/PM/Strings/Strings_fr-FR.js", "-- # Clipperz/PM/Strings/Strings_de-DE.js", "-- # Clipperz/PM/Strings/Strings_el-GR.js", "-- # Clipperz/PM/Strings/Strings_ru-RU.js", "-- # Clipperz/PM/Strings/Strings_he-IL.js", "Clipperz/PM/Strings.js", "-- Clipperz/PM/Strings/MessagePanelConfigurations.js", "Clipperz/PM/Date.js", "Clipperz/PM/Toll.js", "Clipperz/PM/Proxy.js", "Clipperz/PM/Proxy/Proxy.JSON.js", "Clipperz/PM/Proxy/Proxy.Offline.js", "Clipperz/PM/Proxy/Proxy.Offline.DataStore.js", "Clipperz/PM/Connection.js", "Clipperz/PM/Crypto.js", "Clipperz/PM/BookmarkletProcessor.js", "Clipperz/PM/DataModel/EncryptedRemoteObject.js", "Clipperz/PM/DataModel/User.js", "Clipperz/PM/DataModel/User.Header.Legacy.js", "Clipperz/PM/DataModel/User.Header.RecordIndex.js", "Clipperz/PM/DataModel/User.Header.Preferences.js", "Clipperz/PM/DataModel/User.Header.OneTimePasswords.js", "Clipperz/PM/DataModel/Record.js", "Clipperz/PM/DataModel/Record.Version.js", "Clipperz/PM/DataModel/Record.Version.Field.js", "Clipperz/PM/DataModel/DirectLogin.js", "Clipperz/PM/DataModel/DirectLoginInput.js", "Clipperz/PM/DataModel/DirectLoginBinding.js", "Clipperz/PM/DataModel/DirectLoginFormValue.js", "Clipperz/PM/DataModel/OneTimePassword.js", "Clipperz/PM/UI/Canvas/Marks/exclamationMark.js", "Clipperz/PM/UI/Canvas/Marks/questionMark.js", "Clipperz/PM/UI/Canvas/Marks/info.js", "Clipperz/PM/UI/Canvas/Features/store.js", "Clipperz/PM/UI/Canvas/Features/protect.js", "Clipperz/PM/UI/Canvas/Features/directLogin.js", "Clipperz/PM/UI/Canvas/Features/share.js", "Clipperz/PM/UI/Canvas/Star/normal.js", "Clipperz/PM/UI/Canvas/CoverActions/look.js", "Clipperz/PM/UI/Canvas/CoverActions/download.js", "Clipperz/PM/UI/Canvas/Tips/open.js", "Clipperz/PM/UI/Canvas/Tips/close.js", "Clipperz/PM/UI/Canvas/RegisterButton/normal.js", "Clipperz/PM/UI/Canvas/Logo/normal.js", "Clipperz/PM/UI/Canvas/GraphicFunctions.js", "Clipperz/PM/UI/Common/Components/BaseComponent.js", "Clipperz/PM/UI/Common/Components/Button.js", "Clipperz/PM/UI/Common/Components/ComponentSlot.js", "Clipperz/PM/UI/Common/Components/FaviconComponent.js", "Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js", "Clipperz/PM/UI/Common/Components/ProgressBar.js", "Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js", "Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js", "Clipperz/PM/UI/Common/Components/TabPanelComponent.js", "Clipperz/PM/UI/Common/Components/Tooltip.js", "Clipperz/PM/UI/Common/Components/TranslatorWidget.js", "Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js", "Clipperz/PM/UI/Common/Controllers/ProgressBarController.js", "Clipperz/PM/UI/Common/Controllers/TabPanelController.js", "Clipperz/PM/UI/Common/Controllers/WizardController.js", "Clipperz/PM/UI/Web/Components/Page.js", "Clipperz/PM/UI/Web/Components/PageHeader.js", "Clipperz/PM/UI/Web/Components/PageFooter.js", "Clipperz/PM/UI/Web/Components/LoginPage.js", "Clipperz/PM/UI/Web/Components/LoginForm.js", "Clipperz/PM/UI/Web/Components/LoginProgress.js", "Clipperz/PM/UI/Web/Components/AppPage.js", "Clipperz/PM/UI/Web/Components/UserInfoBox.js", "Clipperz/PM/UI/Web/Components/TabSidePanel.js", "Clipperz/PM/UI/Web/Components/GridComponent.js", "Clipperz/PM/UI/Web/Components/ColumnManager.js", "Clipperz/PM/UI/Web/Components/TextColumnManager.js", "Clipperz/PM/UI/Web/Components/FaviconColumnManager.js", "Clipperz/PM/UI/Web/Components/ImageColumnManager.js", "Clipperz/PM/UI/Web/Components/DateColumnManager.js", "Clipperz/PM/UI/Web/Components/LinkColumnManager.js", "Clipperz/PM/UI/Web/Components/DirectLoginColumnManager.js", "Clipperz/PM/UI/Web/Components/DirectLoginsColumnManager.js", "Clipperz/PM/UI/Web/Components/DeleteObjectColumnManager.js", "Clipperz/PM/UI/Web/Components/CreateNewCardSplashComponent.js", "Clipperz/PM/UI/Web/Components/AccountPanel.js", "Clipperz/PM/UI/Web/Components/DataPanel.js", "Clipperz/PM/UI/Web/Components/ToolsPanel.js", "Clipperz/PM/UI/Web/Components/RulerComponent.js", "Clipperz/PM/UI/Web/Components/CardDialogComponent.js", "Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js", "Clipperz/PM/UI/Web/Components/CardDialogRecordDirectLoginComponent.js", "Clipperz/PM/UI/Web/Components/DirectLoginEditingComponent.js", "Clipperz/PM/UI/Web/Components/DirectLoginEditingBindingComponent.js", "Clipperz/PM/UI/Web/Components/DirectLoginEditingFormValueComponent.js", "Clipperz/PM/UI/Web/Components/BookmarkletComponent.js", "Clipperz/PM/UI/Web/Components/UnlockPasswordComponent.js", "Clipperz/PM/UI/Web/Components/NewUserCreationComponent.js", "Clipperz/PM/UI/Web/Components/PasswordTooltip.js", "Clipperz/PM/UI/Web/Controllers/MainController.js", "Clipperz/PM/UI/Web/Controllers/LoginController.js", "Clipperz/PM/UI/Web/Controllers/AppController.js", "Clipperz/PM/UI/Web/Controllers/FilterController.js", "Clipperz/PM/UI/Web/Controllers/GridController.js", "Clipperz/PM/UI/Web/Controllers/CardsController.js", "Clipperz/PM/UI/Web/Controllers/DirectLoginsController.js", "Clipperz/PM/UI/Web/Controllers/CardDialogController.js", "Clipperz/PM/UI/Web/Controllers/DirectLoginWizardController.js", "Clipperz/PM/UI/Web/Controllers/NewUserWizardController.js", "main.js" ], "css": [ - "clipperz/clipperz.css", - "clipperz/compact.css" + "clipperz.css", + "compact.css" ] }
\ No newline at end of file diff --git a/scripts/builder/backendBuilder.py b/scripts/builder/backendBuilder.py index 16dbe2f..5ecdda0 100644 --- a/scripts/builder/backendBuilder.py +++ b/scripts/builder/backendBuilder.py @@ -1,89 +1,118 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- import sys, os, json import shutil -import main import hashlib -class BackendBuilder: +import main + +#=================================================================== + + +class BackendBuilder(object): def __init__ (self, projectTargetDir, frontends, versions, settings): self.projectTargetDir = projectTargetDir self.frontends = frontends self.versions = versions self.settings = settings + + # -------------------------------------------------------------------------- def name (self): raise NotImplementedError() + def relativePath (self): raise NotImplementedError() + def compileCode (self): - pass + raise NotImplementedError() + - def copyCompiledCodeToTargetDir (self): - src = self.sourceFolder() - dst = self.targetFolder() - main.createFolder(os.path.dirname(dst)) - shutil.copytree(src, dst) + def createPackage (self): + raise NotImplementedError() + + # -------------------------------------------------------------------------- def sourceFolder (self): - return main.projectBaseDir() + '/backend/' + self.relativePath() + '/src' - + return os.path.join(main.projectBaseDir() , 'backend', self.relativePath(), 'src') - def targetFolder (self): - return self.projectTargetDir + self.relativePath() - - def createTargetFolder (self): - main.createFolder(self.targetFolder()) - -# def copyFrontendResources (self, frontend): -# print "copying resources for frontend: " + frontend -# print "SETTINGS: " + str(self.settings) - + def tempFolder (self): + return os.path.join(self.projectTargetDir, '.tmp', self.relativePath()) + + + def frontEndTempFolder (self): + return self.tempFolder() + - def writeToTargetFolder (self, filename, content): - file = open(self.targetFolder() + '/' + filename, 'w') + def developmentTargetFolder (self): + return os.path.join(self.projectTargetDir, 'development', self.relativePath()) + + def targetFolder (self): + return os.path.join(self.projectTargetDir, self.relativePath()) + + # -------------------------------------------------------------------------- + + def writeToFolder (self, folder, filename, content): + file = open(os.path.join(folder, filename), 'w') file.write(content.encode('utf-8')) file.close() - def configureIndexContent (self, indexContent): + def configureIndexContent (self, indexContent, requestPathPrefix = ".."): result = indexContent - result = result.replace( '@request.path@', self.settings['request.path'] ) + result = result.replace( '@request.path@', requestPathPrefix + '/' + self.settings['request.path'] ) result = result.replace( '@should.pay.toll@', self.settings['should.pay.toll'] ) return result def logChecksums (self, content, message): md5Digest = hashlib.md5(content.encode('utf-8')).hexdigest() shaDigest = hashlib.sha1(content.encode('utf-8')).hexdigest() sha256Digest = hashlib.sha256(content.encode('utf-8')).hexdigest() print message + ": " + md5Digest + " (md5)" print message + ": " + shaDigest + " (sha1)" print message + ": " + sha256Digest + " (sha256)" + def shouldCompileCode (self): + return ('debug' in self.versions) or ('install' in self.versions) + def run (self): print self.name() + " - RUN" - self.compileCode() - self.copyCompiledCodeToTargetDir() + if self.shouldCompileCode(): + self.compileCode() - for frontend in self.frontends: - frontendPath = frontend.module + '/' - if 'debug' in self.versions: - frontend.copyResourcesToTargetFolder(self.targetFolder()) - #self.writeToTargetFolder(frontendPath + 'index_debug.html', self.configureIndexContent(frontend.assembleDebugVersion())) - self.writeToTargetFolder(frontendPath + 'index_debug.html', self.configureIndexContent(frontend.assemble(assemblyMode='DEBUG', versionType='DEBUG'))) + for frontend in self.frontends: + main.createFolder(os.path.join(self.frontEndTempFolder(), frontend.module)) + + if 'debug' in self.versions: + frontend.copyResourcesToFolder(self.frontEndTempFolder()) + + index = self.configureIndexContent(frontend.assemble(assemblyMode='DEBUG', versionType='DEBUG')) + self.writeToFolder(self.frontEndTempFolder(), os.path.join(frontend.module, 'index_debug.html'), index) + + if 'install' in self.versions: + index = self.configureIndexContent(frontend.assemble()) + self.writeToFolder(self.frontEndTempFolder(), os.path.join(frontend.module, 'index.html'), index) + + self.logChecksums(index, "[" + self.name() + " - " + frontend.module + "] index.html checksum") - if 'install' in self.versions: - index = self.configureIndexContent(frontend.assemble()) - self.writeToTargetFolder(frontendPath + 'index.html', index) - self.logChecksums(index, "[" + self.name() + " - " + frontend.module + "] index.html checksum") + self.createPackage() + + if 'development' in self.versions: + for frontend in self.frontends: + main.createFolder(os.path.join(self.developmentTargetFolder(), frontend.module)) + + index = self.configureIndexContent(frontend.assemble(assemblyMode='DEVELOPMENT', versionType='DEBUG'), self.settings['development.settings']['url']) + self.writeToFolder(self.developmentTargetFolder(), os.path.join(frontend.module, 'index_development.html'), index) + +#=================================================================== diff --git a/scripts/builder/phpBuilder.py b/scripts/builder/backends/phpBuilder.py index cb4661d..c928aa0 100644 --- a/scripts/builder/phpBuilder.py +++ b/scripts/builder/backends/phpBuilder.py @@ -1,14 +1,13 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- -from backendBuilder import BackendBuilder +from scriptLanguageBuilder import ScriptLanguageBuilder -class PhpBuilder(BackendBuilder): +class PhpBuilder(ScriptLanguageBuilder): def name(self): return "PHP builder" + def relativePath(self): return 'php' - - diff --git a/scripts/builder/backends/pythonBuilder.py b/scripts/builder/backends/pythonBuilder.py new file mode 100644 index 0000000..1e44209 --- a/dev/null +++ b/scripts/builder/backends/pythonBuilder.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- + +from scriptLanguageBuilder import ScriptLanguageBuilder + +class PythonBuilder(ScriptLanguageBuilder): + + def name(self): + return "Python builder" + + + def relativePath(self): + return 'python' + + + def compileCode (self): + src = self.sourceFolder() + dst = self.targetFolder() + + shutil.copytree(src, dst) + + +# def copyCompiledCodeToTargetDir (self): +# src = self.sourceFolder() +# dst = self.targetFolder() +# +# shutil.copytree(src, dst) diff --git a/scripts/builder/backends/scriptLanguageBuilder.py b/scripts/builder/backends/scriptLanguageBuilder.py new file mode 100644 index 0000000..7d5b31c --- a/dev/null +++ b/scripts/builder/backends/scriptLanguageBuilder.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- + +import shutil +from backendBuilder import BackendBuilder + +class ScriptLanguageBuilder(BackendBuilder): + + def compileCode (self): + src = self.sourceFolder() + dst = self.tempFolder() + + shutil.copytree(src, dst) + + + def createPackage (self): + src = self.tempFolder() + dst = self.targetFolder() + + shutil.copytree(src, dst) diff --git a/scripts/builder/frontendBuilder.py b/scripts/builder/frontendBuilder.py index 55054ee..dae837b 100644 --- a/scripts/builder/frontendBuilder.py +++ b/scripts/builder/frontendBuilder.py @@ -1,398 +1,389 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- import sys, os, re import cssmin import jsmin import codecs import shutil import StringIO import urllib -#from mercurial import ui, hg -#from mercurial.node import hex -from dulwich.repo import Repo - import main +class FrontendBuilder(object): - -class FrontendBuilder: - - def __init__ (self, frontend, settings): + def __init__ (self, frontend, settings, repositoryVersion): if '.' in frontend: moduleComponents = frontend.split('.') self.module = moduleComponents[0] self.submodule = moduleComponents[1] else: self.module = frontend self.submodule = frontend self.settings = settings self.projectDir = main.projectBaseDir() + # self.repository = repository.repositoryWithPath(self.projectDir) + self.repositoryVersion = repositoryVersion self.processedFiles = {} - def mercurialRepositoryVersion (self): - repo = hg.repository(ui.ui(), self.projectDir) - context = repo['tip'] - result = str(context) - - return result - - - def gitRepositoryVersion (self): - repo = Repo(self.projectDir) - #if repo.is_dirty(): - # print "WARNING: build run with dirty repository" - result = repo.refs['HEAD'] - - return result - - - - def repositoryVersion (self): - cacheKey = 'repositoryVersion' - if not self.processedFiles.has_key(cacheKey): - #result = self.mercurialRepositoryVersion() - result = self.gitRepositoryVersion() - self.processedFiles[cacheKey] = result - else: - result = self.processedFiles[cacheKey] - - return result - - - #def relativePath (self): - # return self.module - # - def log (self, message): print "frontend [" + self.module + "]: " + message - def absolutePathForSourceFile (self, folder, basePath, file): - return folder + '/frontend/' + self.module + '/' + basePath + '/' + file + def absolutePathForSources (self): + return os.path.join(self.projectDir, 'frontend', self.module) + + + def absolutePathForSourceFile (self, basePath, file): + return os.path.join(self.absolutePathForSources(), basePath, file) def absolutePathForTargetFile (self, folder, basePath, file): - return folder + '/' + self.module + '/' + basePath + '/' + file + return os.path.join(folder, self.module, basePath, file) + def filterFiles (self, files): result = [] for file in files: if file.startswith('--'): pass else: result.append(file) return result def copyResources (self, sourceFolder, destinationFolder, fileType): for file in self.filterFiles(self.settings[fileType]): - src = self.absolutePathForSourceFile(sourceFolder, fileType, file) + src = self.absolutePathForSourceFile(fileType, file) dst = self.absolutePathForTargetFile(destinationFolder, fileType, file) main.createFolder(os.path.dirname(dst)) shutil.copy2(src, dst) - def copyResourcesToTargetFolder (self, targetFolder): + def copyResourcesToFolder (self, targetFolder): self.copyResources(self.projectDir, targetFolder, 'css') self.copyResources(self.projectDir, targetFolder, 'js') def loadFilesContent (self, basePath, files): result = "" for file in self.filterFiles(files): try: - fileHandler = codecs.open(self.absolutePathForSourceFile(self.projectDir, basePath, file), 'r', 'utf-8') + fileHandler = codecs.open(self.absolutePathForSourceFile(basePath, file), 'r', 'utf-8') except: print "FILE: " + file result += fileHandler.read() + '\n' fileHandler.close() return result def template (self): processedFile = 'html_template' if not self.processedFiles.has_key(processedFile): self.processedFiles[processedFile] = self.loadFilesContent('html', ['index_template.html']) return self.processedFiles[processedFile] def cssminCompressor (self, css): # package found here: # - http://stackoverflow.com/questions/222581/python-script-for-minifying-css/2396777#2396777 # actual downloaded version: http://pypi.python.org/pypi/cssmin/0.1.4 return cssmin.cssmin(css) def regexCssCompressor (self, css): # http://stackoverflow.com/questions/222581/python-script-for-minifying-css/223689#223689 # remove comments - this will break a lot of hacks :-P css = re.sub( r'\s*/\*\s*\*/', "$$HACK1$$", css ) # preserve IE<6 comment hack css = re.sub( r'/\*[\s\S]*?\*/', "", css ) css = css.replace( "$$HACK1$$", '/**/' ) # preserve IE<6 comment hack # url() doesn't need quotes css = re.sub( r'url\((["\'])([^)]*)\1\)', r'url(\2)', css ) # spaces may be safely collapsed as generated content will collapse them anyway css = re.sub( r'\s+', ' ', css ) # shorten collapsable colors: #aabbcc to #abc css = re.sub( r'#([0-9a-f])\1([0-9a-f])\2([0-9a-f])\3(\s|;)', r'#\1\2\3\4', css ) # fragment values can loose zeros css = re.sub( r':\s*0(\.\d+([cm]m|e[mx]|in|p[ctx]))\s*;', r':\1;', css ) for rule in re.findall( r'([^{]+){([^}]*)}', css ): # we don't need spaces around operators selectors = [re.sub( r'(?<=[\[\(>+=])\s+|\s+(?=[=~^$*|>+\]\)])', r'', selector.strip() ) for selector in rule[0].split( ',' )] # order is important, but we still want to discard repetitions properties = {} porder = [] for prop in re.findall( '(.*?):(.*?)(;|$)', rule[1] ): key = prop[0].strip().lower() if key not in porder: porder.append( key ) properties[ key ] = prop[1].strip() # output rule if it contains any declarations if properties: print "%s{%s}" % ( ','.join( selectors ), ''.join(['%s:%s;' % (key, properties[key]) for key in porder])[:-1] ) return css def compressCSS (self, css): self.log("compressing CSS") #return self.regexCssCompressor(css) return self.cssminCompressor(css) #========================================================================== - def compressJS_jsmin (self, js): - self.log("compressing JS code") + def compressJS_jsmin (self, js, description): + self.log("compressing " + description + " code") original = StringIO.StringIO(js) output = StringIO.StringIO() jsMinifier = jsmin.JavascriptMinify() jsMinifier.minify(original, output) result = output.getvalue() original.close() output.close() return result - def compressJS_closureCompiler (self, js): + def compressJS_closureCompiler (self, js, description): # Googles Closure compiler # java -jar compiler.jar --js=in1.js --js=in2.js ... --js_output_file=out.js result = js return result - def compressJS (self, js): - return self.compressJS_jsmin(js) - #return self.compressJS_closureCompiler(js) + def compressJS (self, js, description): + return self.compressJS_jsmin(js, description) + #return self.compressJS_closureCompiler(js, description) #========================================================================== - def packBookmarklet (self, bookmakeletCode): + def packBookmarklet (self, bookmakeletCode, version): replacers = [ ('isLoginForm', 'ilf'), ('findLoginForm', 'flf'), ('findLoginForm', 'flf'), ('formParameters', 'fp' ), ('pageParameters', 'pp' ), ('serializeJSON', 'sj' ), ('reprString', 'rs' ), ('logFormParameters', 'lfp'), ('loadClipperzBookmarklet', 'lcb'), ('loginForm', 'lf' ), ('parameters', 'p' ), ('inputElementValues', 'iev'), ] - result = self.compressJS(bookmakeletCode) + result = self.compressJS(bookmakeletCode, version + " bookmarklet") result = re.sub('\n', ' ', result) # Fit all in a single line # result = re.sub('\s+', ' ', result) # Collapse "redundant" spaces. WARNING: this could have some evil side effects on constant strings used inside to code!! # result = re.sub('\s?([,\+=\(\)\{\};])\s?', '\\1', result) for replacer in replacers: result = re.sub(replacer[0], replacer[1], result) # <!-- escaping required to handle the bookmarklet code within the javascript code --> result = re.sub('\://', '%3a%2f%2f', result) result = re.sub('/', '%2f', result) # result = re.sub('"', '%22', result) result = re.sub('"', '\\"', result) result = re.sub('\"', '%22', result) result = re.sub('\'', '%22', result) result = re.sub('\\\\', '%5c', result) result = result.strip() result = 'javascript:' + result # replacers = [ # ('aForm', '_1' ), # ('inputFields', '_2' ), # ('passwordFieldsFound', '_3' ), # ('aDocument', '_6' ), # ('aLevel', '_7' ), # # ('result', '_8' ), # ('documentForms', '_9' ), # ('iFrames', '_c' ), # ('anInputElement', '_d' ), # ('options', '_f' ), # ('option', '_12'), # ('aLoginForm', '_13'), # # ('action', '_17'), # ('radioValues', '_18'), # ('radioValueName', '_19'), # ('inputElement', '_1a'), # ('elementValues', '_1b'), # ('radioValue', '_1c'), # ('values', '_1d'), # ('objtype', '_21'), # ('useKey', '_27'), # ('bookmarkletDiv', '_28'), # ('someParameters', '_29'), # ('anException', '_2a'), # ('newDiv', '_2b'), # ('base_url', '_2c'), # ('help_url', '_2d'), # ('logo_image_url', '_2e'), # ('background_image_url','_2f'), # ('close_image_url', '_30'), # # ('bookmarklet_textarea','_31'), # ('innerHTML', '_32'), # ] # for replacer in replacers: # result = re.sub('([^\.])' + replacer[0], '\\1' + replacer[1], result) # replacers = [ # ('headNode', '_1' ), # ('clipperzScriptNode', '_2' ), # ] # for replacer in replacers: # result = re.sub('([^\.])' + replacer[0], '\\1' + replacer[1], result) # result = re.sub(';', ';\n', result) return result def bookmarklet (self): cacheKey = 'bookmarklet' if not self.processedFiles.has_key(cacheKey): - result = 'bookmarklet="' + self.packBookmarklet(self.loadFilesContent('js', ['Bookmarklet.js'])) + '";bookmarklet_ie="' + self.packBookmarklet(self.loadFilesContent('js', ['Bookmarklet_IE.js'])) + '";' + result = 'bookmarklet="' + self.packBookmarklet(self.loadFilesContent('js', ['Bookmarklet.js']), "regular") + '";bookmarklet_ie="' + self.packBookmarklet(self.loadFilesContent('js', ['Bookmarklet_IE.js']), "IE") + '";' self.processedFiles[cacheKey] = result else: result = self.processedFiles[cacheKey] return result - def replaceTemplatePlaceholders (self, assemblyMode, pageTitle, copyright, css, code, version, versionType): + def replaceTemplatePlaceholders (self, pageTitle, copyright, css, code, jsLoadMode, version, versionType): result = self.template() result = result.replace('@page.title@', pageTitle, 1) result = result.replace('@copyright@', copyright, 1) result = result.replace('@css@', css, 1) #result = result.replace('@bookmarklet@', bookmarklet, 1) result = result.replace('@application.version@', version, 1) result = result.replace('@application.version.type@', versionType, 1) - result = result.replace('@js_' + assemblyMode + '@', code, 1) + result = result.replace('@js_' + jsLoadMode + '@', code, 1) result = re.sub('@js_[^@]+@', '', result) return result def assembleCopyrightHeader (self): processedFile = 'copyright' if not self.processedFiles.has_key(processedFile): #self.log("assembling copyright header") copyrightValues = self.settings['copyright.values'] license = self.loadFilesContent('../../properties', ['license.txt']) result = self.loadFilesContent('properties', ['creditsAndCopyrights.txt']) result = re.sub('@clipperz.license@', license, result) for key in copyrightValues: result = re.sub('@'+key+'@', copyrightValues[key], result) self.processedFiles[processedFile] = result return self.processedFiles[processedFile] def cssTagsForFiles (self, basePath, files): #<link rel="stylesheet" type="text/css" href="./css/reset-min.css" /> - return '\n'.join(map(lambda file: '<link rel="stylesheet" type="text/css" href="./' + basePath + '/' + file + '" />', files)) + return '\n'.join(map(lambda file: '<link rel="stylesheet" type="text/css" href="' + basePath + '/' + file + '" />', files)) def cssTagForContent (self, content): return '<style type="text/css">' + content + '</style>' def scriptTagsForFiles (self, basePath, files): #<script type='text/javascript' src='./js/src/bookmarklet.js'></script> - return '\n'.join(map(lambda file: '<script type="text/javascript" src="./' + basePath + '/' + file + '"></script>', files)) + return '\n'.join(map(lambda file: '<script type="text/javascript" src="' + basePath + '/' + file + '"></script>', files)) def scriptTagForContent (self, content): return '<script>' + content + '</script>' - def assembleVersion (self, assemblyMode, pageTitle, copyright, css, js, version, versionType): + def assembleVersion (self, pageTitle, copyright, css, js, jsLoadMode, version, versionType): cacheKey = version + "-" + versionType if not self.processedFiles.has_key(cacheKey): - result = self.replaceTemplatePlaceholders(assemblyMode, pageTitle, copyright, css, js, version, versionType) + result = self.replaceTemplatePlaceholders(pageTitle, copyright, css, js, jsLoadMode, version, versionType) self.processedFiles[cacheKey] = result else: result = self.processedFiles[cacheKey] #self.log("# cacheKey:\n" + result) return result def assemble (self, assemblyMode='INSTALL', versionType='LIVE'): - pageTitle = "Clipperz - " + self.module - if versionType != 'LIVE': - pageTitle += " [" + versionType + " - " + assemblyMode +"]" - + + if versionType == 'LIVE': + pageTitle = "Clipperz - " + self.module + else: + pageTitle = "Clipperz - " + self.module + " [" + versionType + " - " + assemblyMode +"]" + if assemblyMode == 'INSTALL': - css = self.cssTagForContent(self.compressCSS(self.loadFilesContent('css', self.settings['css']))) - js = self.scriptTagForContent(self.bookmarklet() + '\n' + self.compressJS(self.loadFilesContent('js', self.settings['js']))) + copyright = self.assembleCopyrightHeader() + css = self.cssTagForContent(self.compressCSS(self.loadFilesContent('css', self.settings['css']))) + js = self.scriptTagForContent( + self.bookmarklet() + + '\n' + + self.compressJS(self.loadFilesContent('js', self.settings['js']), "application") + ) + jsLoadMode = 'EMBEDDED' + + elif assemblyMode == 'DEBUG': + copyright = self.assembleCopyrightHeader() + css = self.cssTagsForFiles('./css', self.filterFiles(self.settings['css'])) + js = self.scriptTagForContent(self.bookmarklet()) + \ + '\n' + \ + self.scriptTagsForFiles('./js', self.filterFiles(self.settings['js'])) + jsLoadMode = 'LINKED' + + elif assemblyMode == 'DEVELOPMENT': + copyright = "" + css = self.cssTagsForFiles('file://' + str(os.path.join(self.absolutePathForSources(), 'css')), self.filterFiles(self.settings['css'])) + js = self.scriptTagForContent(self.bookmarklet()) + \ + '\n' + \ + self.scriptTagsForFiles('file://' + str(os.path.join(self.absolutePathForSources(), 'js')), self.filterFiles(self.settings['js'])) + jsLoadMode = 'LINKED' + else: - css = self.cssTagsForFiles('css', self.filterFiles(self.settings['css'])) - js = self.scriptTagForContent(self.bookmarklet()) + '\n' + self.scriptTagsForFiles('js', self.filterFiles(self.settings['js'])) - + raise NotImplementedError() + return self.assembleVersion( - assemblyMode = assemblyMode, pageTitle = pageTitle, - copyright = self.assembleCopyrightHeader(), + copyright = copyright, css = css, js = js, - version = self.repositoryVersion(), + jsLoadMode = jsLoadMode, + version = self.repositoryVersion, versionType = versionType ) diff --git a/scripts/builder/main.py b/scripts/builder/main.py index 94f738f..6fce65d 100755 --- a/scripts/builder/main.py +++ b/scripts/builder/main.py @@ -1,166 +1,177 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- -import sys, os, json +import sys +import os +import json import shutil import pprint -import frontendBuilder import codecs import itertools - from collections import deque -from phpBuilder import PhpBuilder -from pythonBuilder import PythonBuilder + +import frontendBuilder +import repository pp = pprint.PrettyPrinter(indent=4, depth=4) #-------------------------------------------------------------------- def scriptDir (): return os.path.dirname(sys.argv[0]) def projectBaseDir (): return os.path.abspath(scriptDir() + '/../..') def projectTargetDir(): return projectBaseDir() + '/target/' #-------------------------------------------------------------------- def createFolder (path): if not os.path.exists(path): os.makedirs(path) #-------------------------------------------------------------------- def loadSettings (component, module): - print "MODULE: " + module + # print "MODULE: " + module if '.' in module: moduleComponents = module.split('.') module = moduleComponents[0] submodule = moduleComponents[1] else: submodule = module - settings = codecs.open(projectBaseDir() + '/' + component + '/' + module + '/properties/' + submodule + '.properties.json', 'r', 'utf-8') + #settings = codecs.open(projectBaseDir() + os.sep + component + os.sep + module + os.sep + 'properties' + os.sep + submodule + '.properties.json', 'r', 'utf-8') + settings = codecs.open(os.path.join(projectBaseDir(), component, module, 'properties', submodule + '.properties.json'), 'r', 'utf-8') result = json.load(settings) settings.close return result #==================================================================== # # def assembleFrontend (frontend, versions): # result = {} # settings = loadSettings('frontend', frontend) # builder = frontendBuilder.FrontendBuilder(frontend, settings, projectBaseDir()) # # for version in versions: # if version == 'install': # result[version] = builder.assembleInstallVersion() # elif version == 'debug': # result[version] = builder.assembleDebugVersion() # else: # raise Exception('unrecognized version: ' + version) # # return result # #==================================================================== def assembleBackend (backend, frontends, versions): settings = loadSettings('backend', backend) - if backend == 'php': - backendBuilder = PhpBuilder(projectTargetDir(), frontends, versions, settings) - elif backend == 'python': - backendBuilder = PythonBuilder(projectTargetDir(), frontends, versions, settings) - #elif backend == 'java': - # buildJavaBackend (frontends, versions, settings) - else: - raise Exception('unrecognized backend: ' + backend) - + builderModuleName = backend + 'Builder' + builderClassName = backend.capitalize() + 'Builder' + + builderModule = __import__(builderModuleName) + builderClass = getattr(builderModule, builderClassName) + + backendBuilder = builderClass(projectTargetDir(), frontends, versions, settings) backendBuilder.run() #==================================================================== -def build (settings): +def build (settings, repository): frontends = [] + if repository.areTherePendingChanges(): + print "\nWARNING: repository has pending changes\n" + for frontend in settings['frontends']: - frontends.append(frontendBuilder.FrontendBuilder(frontend, loadSettings('frontend', frontend))) + frontends.append(frontendBuilder.FrontendBuilder(frontend, loadSettings('frontend', frontend), repository.version())) for backend in settings['backends']: assembleBackend(backend, frontends, settings['versions']) #-------------------------------------------------------------------- def clean (): - print "cleaning up …" + # print "cleaning up …" if os.path.exists(projectTargetDir()): shutil.rmtree(projectTargetDir()) #-------------------------------------------------------------------- def usage (message): if message != None: print "ERROR: " + message print - print "build.py clean" - print "build.py clean install" - print "build.py install --ALL" - print "build.py install debug --ALL" - print "build.py clean install debug --ALL" - print "build.ph install, debug --backends php java --frontends beta gamma" - print "build.ph install, debug --backends php java --frontends beta gamma gamma.mobile" + # print "build clean" + # print "build clean install" + print "build install --ALL" + print "build install debug --ALL" + # print "build clean install debug --ALL" + print "build install debug --backends php python --frontends beta gamma" + print "build install debug development --backends php python --frontends beta gamma gamma.mobile" exit(1) #-------------------------------------------------------------------- +def allFrontends (): + return ['beta', 'gamma', 'mobile'] + +def allBackends (): + return ['php', 'python'] + +#-------------------------------------------------------------------- + def main (): settings = {} parameters = list(itertools.islice(sys.argv, 1, None)) - - shouldClean = len(filter(lambda x: x == 'clean', parameters)) > 0 - if (shouldClean): - clean () - - parameters = filter(lambda x: x != 'clean', parameters) + + sys.path.append(os.path.join(scriptDir(), 'backends')) + currentRepository = repository.repositoryWithPath(projectBaseDir()) + + clean() versions = list(itertools.takewhile(lambda x: not x.startswith('--'), parameters)) - settings['versions'] = versions; #['debug', 'install'] + settings['versions'] = versions; #['debug', 'install', 'development'] parameters = deque(itertools.dropwhile(lambda x: not x.startswith('--'), parameters)) if len(parameters) > 0: parameter = parameters.popleft() if parameter == "--ALL": - settings['frontends'] = ['beta', 'gamma', 'mobile'] - settings['backends'] = ['php', 'python', 'java'] + settings['frontends'] = allFrontends() + settings['backends'] = allBackends() else: while parameter != None: values = list(itertools.takewhile(lambda x: not x.startswith('--'), parameters)) if parameter == "--backends": settings['backends'] = values elif parameter == "--frontends": settings['frontends'] = values parameters = deque(itertools.dropwhile(lambda x: not x.startswith('--'), parameters)) if parameters: parameter = parameters.popleft() else: parameter = None if (not settings.has_key('versions')): usage("missing 'versions'") if (not settings.has_key('frontends')): usage("missing 'frontends'") if (not settings.has_key('backends')): usage("missing 'backends'") - build (settings) - + build(settings, currentRepository) + else: + usage("Suggestions on how to call the 'build' script:") if __name__ == "__main__": main() diff --git a/scripts/builder/pythonBuilder.py b/scripts/builder/pythonBuilder.py deleted file mode 100644 index a84598d..0000000 --- a/scripts/builder/pythonBuilder.py +++ b/dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- - -from backendBuilder import BackendBuilder - -class PythonBuilder(BackendBuilder): - - def name(self): - return "Python builder" - - def relativePath(self): - return 'python' - - diff --git a/scripts/builder/repository.py b/scripts/builder/repository.py new file mode 100644 index 0000000..89db9a5 --- a/dev/null +++ b/scripts/builder/repository.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- + + +def repositoryWithPath (path): + try: + from dulwich.repo import Repo + + repo = Repo(path) + result = GitRepository(repo, path) + except: + from mercurial import ui, hg + + repo = hg.repository(ui.ui(), path) + result = HgRepository(repo, path) + + return result + + +#=================================================================== + + +class Repository(object): + + def __init__ (self, repository, path): + self.repository = repository + self.path = path + + + def revision (self): + raise NotImplementedError() + + + def areTherePendingChanges (self): + raise NotImplementedError() + + + def version (self): + result = self.revision() + if self.areTherePendingChanges(): + result = '>>> ' + result + ' <<<' + + # print "VERSION: " + result + return result + + +#=================================================================== + + +class GitRepository(Repository): + + def revision (self): + return repository.refs['HEAD'] + + + def areTherePendingChanges (self): + return repository.is_dirty() + + +#=================================================================== + + +class HgRepository(Repository): + # http://mercurial.selenic.com/wiki/MercurialApi + + def revision (self): + return 'hg:' + str(self.repository['tip']) + + + def areTherePendingChanges (self): + # TODO: FIXME: repository.status() does not report 'unknown(?)' files. :( + return not all(map(lambda fileList: len(fileList) == 0, self.repository.status())) + + +#=================================================================== |