From a86d89f5ca8d71febd764b20e939010901be4974 Mon Sep 17 00:00:00 2001 From: Frank Karlitschek Date: Sat, 21 Apr 2012 22:47:56 +0200 Subject: [PATCH 01/17] Add a static code checker for evil patterns in apps. Disabled by default for now. We will check for private api calls here later once the public api is in place --- config/config.sample.php | 1 + lib/installer.php | 59 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 57 insertions(+), 3 deletions(-) diff --git a/config/config.sample.php b/config/config.sample.php index 9f6d674fc0..0900937c69 100755 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -24,6 +24,7 @@ $CONFIG = array( "mail_smtpauth" => "false", "mail_smtpname" => "", "mail_smtppassword" => "", +"appcodechecker" => "", // "datadirectory" => "" ); ?> diff --git a/lib/installer.php b/lib/installer.php index 6edf4ce1b7..d559227381 100644 --- a/lib/installer.php +++ b/lib/installer.php @@ -47,6 +47,7 @@ class OC_Installer{ * This function works as follows * -# fetching the file * -# unzipping it + * -# check the code * -# installing the database at appinfo/database.xml * -# including appinfo/install.php * -# setting the installed version @@ -91,6 +92,7 @@ class OC_Installer{ //extract the archive in a temporary folder $extractDir=OC_Helper::tmpFolder(); + OC_Helper::rmdirr($extractDir); mkdir($extractDir); if($archive=OC_Archive::open($path)){ $archive->extract($extractDir); @@ -102,7 +104,7 @@ class OC_Installer{ } return false; } - + //load the info.xml file of the app if(!is_file($extractDir.'/appinfo/info.xml')){ //try to find it in a subdir @@ -125,6 +127,12 @@ class OC_Installer{ } $info=OC_App::getAppInfo($extractDir.'/appinfo/info.xml',true); $basedir=OC::$APPSROOT.'/apps/'.$info['id']; + + // check the code for not allowed calls + if(!OC_Installer::checkCode($info['id'],$extractDir)){ + OC_Helper::rmdirr($extractDir); + return false; + } //check if an app with the same id is already installed if(self::isInstalled( $info['id'] )){ @@ -151,8 +159,8 @@ class OC_Installer{ } //copy the app to the correct place - if(!mkdir($basedir)){ - OC_Log::write('core','Can\'t create app folder ('.$basedir.')',OC_Log::ERROR); + if(@!mkdir($basedir)){ + OC_Log::write('core','Can\'t create app folder. Please fix permissions. ('.$basedir.')',OC_Log::ERROR); OC_Helper::rmdirr($extractDir); if($data['source']=='http'){ unlink($path); @@ -300,4 +308,49 @@ class OC_Installer{ OC_Appconfig::setValue($app,'installed_version',OC_App::getAppVersion($app)); return $info; } + + + /** + * check the code of an app with some static code checks + * @param string $folder the folder of the app to check + * @returns true for app is o.k. and false for app is not o.k. + */ + public static function checkCode($appname,$folder){ + + $blacklist=array( + 'fopen(', + 'eval(' + // more evil pattern will go here later + // will will also check if an app is using private api once the public api is in place + + ); + + // is the code checker enabled? + if(OC_Config::getValue('appcodechecker', false)){ + + // check if grep is installed + $grep = exec('which grep'); + if($grep=='') { + OC_Log::write('core','grep not installed. So checking the code of the app "'.$appname.'" was not possible',OC_Log::ERROR); + return true; + } + + // iterate the bad patterns + foreach($blacklist as $bl) { + $cmd = 'grep -ri '.escapeshellarg($bl).' '.$folder.''; + $result = exec($cmd); + // bad pattern found + if($result<>'') { + OC_Log::write('core','App "'.$appname.'" is using a not allowed call "'.$bl.'". Installation refused.',OC_Log::ERROR); + return false; + } + } + return true; + + }else{ + return true; + } + } + + } From 1a494978997a455806db2c48e32fc8e0f724b0ad Mon Sep 17 00:00:00 2001 From: Frank Karlitschek Date: Sat, 21 Apr 2012 22:55:18 +0200 Subject: [PATCH 02/17] structure the information a bit more so that is easier readable --- apps/contacts/templates/settings.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/contacts/templates/settings.php b/apps/contacts/templates/settings.php index 5627a15c50..ff1cab0c8d 100644 --- a/apps/contacts/templates/settings.php +++ b/apps/contacts/templates/settings.php @@ -3,10 +3,10 @@ t('Contacts'); ?>
t('CardDAV syncing addresses:'); ?>
-
t('Primary address (Kontact et al)'); ?>
-
/
-
t('iOS/OS X'); ?>
-
/principals//
+
t('Primary address (Kontact et al)'); ?>
+
/
+
t('iOS/OS X'); ?>
+
/principals//
Powered by geonames.org webservice From ff3b199cc8712f46ef004e3666dd277ab583d0a2 Mon Sep 17 00:00:00 2001 From: Frank Karlitschek Date: Sat, 21 Apr 2012 23:08:52 +0200 Subject: [PATCH 03/17] use less space --- apps/admin_migrate/templates/settings.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/admin_migrate/templates/settings.php b/apps/admin_migrate/templates/settings.php index 91e305074e..f81c9199ec 100644 --- a/apps/admin_migrate/templates/settings.php +++ b/apps/admin_migrate/templates/settings.php @@ -6,9 +6,9 @@

What would you like to export?

- ownCloud instance (suitable for import )
- ownCloud system files
- Just user files
+ ownCloud instance (suitable for import )
+ ownCloud system files
+ Just user files
From 80950f2e1c6a1ca2814d33167f7db4d8e3b9c21b Mon Sep 17 00:00:00 2001 From: Frank Karlitschek Date: Sat, 21 Apr 2012 23:10:35 +0200 Subject: [PATCH 04/17] make field completely visible --- apps/user_migrate/templates/admin.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/user_migrate/templates/admin.php b/apps/user_migrate/templates/admin.php index b01e5c7579..60fc74f666 100644 --- a/apps/user_migrate/templates/admin.php +++ b/apps/user_migrate/templates/admin.php @@ -6,7 +6,7 @@ t('Import user account');?>

-

+

From 260c48c29a9167446862bf38775274e07685f6e3 Mon Sep 17 00:00:00 2001 From: Frank Karlitschek Date: Sat, 21 Apr 2012 23:23:02 +0200 Subject: [PATCH 05/17] cleanup the admin page layout mess a bit. Still a lot to improve in the future :-) --- apps/user_migrate/templates/admin.php | 2 +- files/templates/admin.php | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/apps/user_migrate/templates/admin.php b/apps/user_migrate/templates/admin.php index 60fc74f666..ff51f43ffd 100644 --- a/apps/user_migrate/templates/admin.php +++ b/apps/user_migrate/templates/admin.php @@ -6,7 +6,7 @@ t('Import user account');?>

-

+

diff --git a/files/templates/admin.php b/files/templates/admin.php index 9bcc40e936..01fe110526 100644 --- a/files/templates/admin.php +++ b/files/templates/admin.php @@ -7,9 +7,13 @@ '/>(t('max. possible: '); echo $_['maxPossibleUploadSize'] ?>)
/>
-
- ' title="t( '0 is unlimited' ); ?>" />
-
+ + ' title="t( '0 is unlimited' ); ?>" /> +
+ + + + From c6144535a8dc5c07a41f97c306525ac52a77caa8 Mon Sep 17 00:00:00 2001 From: Frank Karlitschek Date: Sat, 21 Apr 2012 23:30:14 +0200 Subject: [PATCH 06/17] document the log settings --- config/config.sample.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config/config.sample.php b/config/config.sample.php index 0900937c69..8561d0a758 100755 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -25,6 +25,9 @@ $CONFIG = array( "mail_smtpname" => "", "mail_smtppassword" => "", "appcodechecker" => "", +"log_type" => "", +"logfile" => "", +"loglevel" => "", // "datadirectory" => "" ); ?> From 69f3b5e2d26d065351d61bfd8119181ebde08942 Mon Sep 17 00:00:00 2001 From: Frank Karlitschek Date: Sat, 21 Apr 2012 23:34:24 +0200 Subject: [PATCH 07/17] make the button a bit more consistent to the other ownCloud interface --- apps/bookmarks/templates/bookmarklet.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/bookmarks/templates/bookmarklet.php b/apps/bookmarks/templates/bookmarklet.php index f7074462a7..a2ca0bba0e 100644 --- a/apps/bookmarks/templates/bookmarklet.php +++ b/apps/bookmarks/templates/bookmarklet.php @@ -3,6 +3,6 @@ function createBookmarklet() { $l = OC_L10N::get('bookmarks'); echo '' . $l->t('Drag this to your browser bookmarks and click it, when you want to bookmark a webpage quickly:') . '' - . '' + . '' . $l->t('Read later') . ''; } From a34631f84ecdcc856741428d9f3e137616a4c444 Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Sat, 21 Apr 2012 20:36:17 +0200 Subject: [PATCH 08/17] Contacts: Add check for empty FN field. --- apps/contacts/js/contacts.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/apps/contacts/js/contacts.js b/apps/contacts/js/contacts.js index 5f2bd6e9df..e5b34e241c 100644 --- a/apps/contacts/js/contacts.js +++ b/apps/contacts/js/contacts.js @@ -1403,6 +1403,14 @@ $(document).ready(function(){ Contacts.UI.Card.saveProperty(this); }); + $('#fn').blur(function(){ + if($('#fn').val() == '') { + OC.dialogs.alert(t('contacts','The name field cannot be empty. Please enter a name for this contact.'), t('contacts','Name is empty'), function() { $('#fn').focus(); }); + $('#fn').focus(); + return false; + } + }); + // Name has changed. Update it and reorder. $('#fn').live('change',function(){ var name = $('#fn').val(); From 16fc4dfd1add9a588ed6052a94fff03a37fa7dfd Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Sat, 21 Apr 2012 21:40:20 +0200 Subject: [PATCH 09/17] Contacts: Fixed contact photo drag'n'drop upload - again... --- apps/contacts/js/contacts.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/contacts/js/contacts.js b/apps/contacts/js/contacts.js index e5b34e241c..8af23ed398 100644 --- a/apps/contacts/js/contacts.js +++ b/apps/contacts/js/contacts.js @@ -387,10 +387,11 @@ Contacts={ $('#note').data('checksum', this.data.NOTE[0]['checksum']); $('#note').find('textarea').val(this.data.NOTE[0]['value']); $('#note').show(); + $('#contacts_propertymenu a[data-type="NOTE"]').parent().hide(); } else { $('#note').data('checksum', ''); $('#note').find('textarea').val(''); - //$('#note').hide(); + $('#note').hide(); } }, loadSingleProperties:function() { @@ -1437,19 +1438,19 @@ $(document).ready(function(){ $('#file_upload_start').live('change',function(){ Contacts.UI.Card.uploadPhoto(this.files); }); - $('#contacts_details_photo').bind('dragover',function(event){ + $('#contacts_details_photo_wrapper').bind('dragover',function(event){ console.log('dragover'); $(event.target).css('background-color','red'); event.stopPropagation(); event.preventDefault(); }); - $('#contacts_details_photo').bind('dragleave',function(event){ + $('#contacts_details_photo_wrapper').bind('dragleave',function(event){ console.log('dragleave'); $(event.target).css('background-color','white'); //event.stopPropagation(); //event.preventDefault(); }); - $('#contacts_details_photo').bind('drop',function(event){ + $('#contacts_details_photo_wrapper').bind('drop',function(event){ event.stopPropagation(); event.preventDefault(); console.log('drop'); From 56e064bd091d4ab54124bf9cd35eee3397d40a0c Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Sat, 21 Apr 2012 23:51:30 +0200 Subject: [PATCH 10/17] Don't trigger unnecessary change events. --- apps/contacts/js/jquery.multi-autocomplete.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/contacts/js/jquery.multi-autocomplete.js b/apps/contacts/js/jquery.multi-autocomplete.js index e1c5d63dc5..5516a74b03 100644 --- a/apps/contacts/js/jquery.multi-autocomplete.js +++ b/apps/contacts/js/jquery.multi-autocomplete.js @@ -31,7 +31,9 @@ } else { self.element.val(tmp); } - self.element.trigger('change'); // Changes wasn't saved when only using the dropdown. + if(self.element.val().trim() != '') { + self.element.trigger('change'); // Changes wasn't saved when only using the dropdown. + } }); this.element.bind( "keydown", function( event ) { if ( event.keyCode === $.ui.keyCode.TAB && From 9e3242d05ee666ef8d3ceaf038302e7254610f00 Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Sun, 22 Apr 2012 00:43:47 +0200 Subject: [PATCH 11/17] Contacts: Changed layout as discussed with JanC. Still WiP. --- apps/contacts/css/contacts.css | 14 +- apps/contacts/img/contact-new.svg | 449 ++++++++++++++++++++++++++++++ apps/contacts/js/contacts.js | 2 +- apps/contacts/templates/index.php | 10 +- 4 files changed, 467 insertions(+), 8 deletions(-) create mode 100644 apps/contacts/img/contact-new.svg diff --git a/apps/contacts/css/contacts.css b/apps/contacts/css/contacts.css index 2d20794384..33a9dd15cb 100644 --- a/apps/contacts/css/contacts.css +++ b/apps/contacts/css/contacts.css @@ -1,10 +1,14 @@ /*dl > dt { font-weight: bold; }*/ - -#contacts { padding-left:2px; padding-top: 5px; background: #fff; } +#leftcontent { top: 3.5em !important; } +#rightcontent { top: 3.5em !important; padding-top: 5px; } +#contacts { background: #fff; width: 20em; top: 3.7em; bottom:3em; position: fixed; overflow: auto; } +#bottomcontrols { padding: 0; bottom:0px; height:2.8em; width: 20em; margin:0; background:#f7f7f7; border-top:1px solid #eee; position:fixed; } +#contacts_newcontact { float: left; margin: 0.2em 0 0 1em; } +#chooseaddressbook { float: right; margin: 0.2em 1em 0 0; } #leftcontent a { height: 23px; display: block; margin: 0 0 0 0; padding: 0 0 0 25px; } -#chooseaddressbook {margin-right: 170px; float: right;} +#actionbar { height: 30px; width: 60px; position: fixed; right: 0px; top: 4em; margin: 0 0 0 0; padding: 0 0 0 0; z-index: 1000; } #contacts_deletecard {position:absolute;top:15px;right:25px;} #contacts_downloadcard {position:absolute;top:15px;right:50px;} #contacts_propertymenu_button { position:absolute;top:15px;right:150px; background:url('../../../core/img/actions/add.svg') no-repeat center; } @@ -13,7 +17,6 @@ #contacts_propertymenu li a { padding: 3px; display: block } #contacts_propertymenu li:hover { background-color: #1d2d44; } #contacts_propertymenu li a:hover { color: #fff } -#actionbar { height: 30px; width: 200px; position: fixed; right: 0px; top: 75px; margin: 0 0 0 0; padding: 0 0 0 0; z-index: 1000; } #card { width: auto;/*max-width: 70em; border: thin solid lightgray; display: block;*/ } #firstrun { width: 100%; position: absolute; top: 5em; left: 0; text-align: center; font-weight:bold; font-size:1.5em; color:#777; } #firstrun #selections { font-size:0.8em; margin: 2em auto auto auto; clear: both; } @@ -21,7 +24,8 @@ #card input[type="text"].contacts_property,input[type="email"].contacts_property { width: 14em; float: left; } .categories { float: left; width: 16em; } #card input[type="text"],input[type="email"],input[type="tel"],input[type="date"], select, textarea { background-color: #fefefe; border: 0 !important; -webkit-appearance:none !important; -moz-appearance:none !important; -webkit-box-sizing:none !important; -moz-box-sizing:none !important; box-sizing:none !important; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; float: left; } -#card input[type="text"]:hover, input[type="text"]:focus, input[type="text"]:active,input[type="email"]:hover,input[type="tel"]:hover,input[type="date"]:hover,input[type="date"],input[type="date"]:hover,input[type="date"]:active,input[type="date"]:active,input[type="date"]:active,input[type="email"]:active,input[type="tel"]:active, select:hover, select:focus, select:active, textarea:focus, textarea:hover { border: 0 !important; -webkit-appearance:textfield; -moz-appearance:textfield; -webkit-box-sizing:content-box; -moz-box-sizing:content-box; box-sizing:content-box; background:#fff; color:#333; border:1px solid #ddd; -moz-box-shadow:0 1px 1px #fff, 0 2px 0 #bbb inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; outline:none; float: left; } +#card input[type="text"]:hover, input[type="text"]:focus, input[type="text"]:active,input[type="email"]:hover,input[type="tel"]:hover,input[type="date"]:hover,input[type="date"],input[type="date"]:hover,input[type="date"]:active,input[type="date"]:active,input[type="date"]:active,input[type="email"]:active,input[type="tel"]:active, select:hover, select:focus, select:active { border: 0 !important; -webkit-appearance:textfield; -moz-appearance:textfield; -webkit-box-sizing:content-box; -moz-box-sizing:content-box; box-sizing:content-box; background:#fff; color:#333; border:1px solid #ddd; -moz-box-shadow:0 1px 1px #fff, 0 2px 0 #bbb inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; outline:none; float: left; } +textarea:focus, textarea:hover { background:#fff; color:#333; border:1px solid #ddd; -moz-box-shadow:0 1px 1px #fff, 0 2px 0 #bbb inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; outline:none; float: left; } input[type="text"]:invalid,input[type="email"]:invalid,input[type="tel"]:invalid,input[type="date"]:invalid, textarea:invalid { color: #bbb !important; } textarea { min-height: 4em; } dl.form { width: 100%; float: left; clear: right; margin: 0; padding: 0; } diff --git a/apps/contacts/img/contact-new.svg b/apps/contacts/img/contact-new.svg new file mode 100644 index 0000000000..3c824dd10c --- /dev/null +++ b/apps/contacts/img/contact-new.svg @@ -0,0 +1,449 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/contacts/js/contacts.js b/apps/contacts/js/contacts.js index 8af23ed398..b491b3a90e 100644 --- a/apps/contacts/js/contacts.js +++ b/apps/contacts/js/contacts.js @@ -537,7 +537,7 @@ Contacts={ },*/ editNew:function(){ // add a new contact this.id = ''; this.fn = ''; this.fullname = ''; this.givname = ''; this.famname = ''; this.addname = ''; this.honpre = ''; this.honsuf = ''; - Contacts.UI.Card.add(';;;;', '', '', true); + Contacts.UI.Card.add(t('contacts', 'Contact')+';'+t('contacts', 'New')+';;;', t('contacts', 'New Contact'), '', true); /*$.getJSON(OC.filePath('contacts', 'ajax', 'newcontact.php'),{},function(jsondata){ if(jsondata.status == 'success'){ id = ''; diff --git a/apps/contacts/templates/index.php b/apps/contacts/templates/index.php index b14a35e19e..2219d609d2 100644 --- a/apps/contacts/templates/index.php +++ b/apps/contacts/templates/index.php @@ -3,17 +3,23 @@ var categories = ; var lang = ''; -
+
    inc("part.contacts"); ?>
+
+
+ <?php echo $l->t('Add Contact'); ?>  title=t('Add Contact'); ?>" /> + <?php echo $l->t('Addressbooks'); ?> +
+
Date: Sun, 22 Apr 2012 01:50:46 +0200 Subject: [PATCH 12/17] Contacts: Fix error on photo crop. --- apps/contacts/ajax/savecrop.php | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/apps/contacts/ajax/savecrop.php b/apps/contacts/ajax/savecrop.php index 0df4e1998c..73ac521e04 100644 --- a/apps/contacts/ajax/savecrop.php +++ b/apps/contacts/ajax/savecrop.php @@ -44,19 +44,15 @@ function bailOut($msg) { $image = null; -$x1 = (isset($_POST['x1']) && $_POST['x1']) ? $_POST['x1'] : -1; +$x1 = (isset($_POST['x1']) && $_POST['x1']) ? $_POST['x1'] : 0; //$x2 = isset($_POST['x2']) ? $_POST['x2'] : -1; -$y1 = (isset($_POST['y1']) && $_POST['y1']) ? $_POST['y1'] : -1; +$y1 = (isset($_POST['y1']) && $_POST['y1']) ? $_POST['y1'] : 0; //$y2 = isset($_POST['y2']) ? $_POST['y2'] : -1; $w = (isset($_POST['w']) && $_POST['w']) ? $_POST['w'] : -1; $h = (isset($_POST['h']) && $_POST['h']) ? $_POST['h'] : -1; $tmp_path = isset($_POST['tmp_path']) ? $_POST['tmp_path'] : ''; $id = isset($_POST['id']) ? $_POST['id'] : ''; -if(in_array(-1, array($x1, $y1, $w, $h))) { - bailOut('Wrong crop dimensions: '.implode(', ', array($x1, $y1, $w, $h))); -} - if($tmp_path == '') { bailOut('Missing path to temporary file.'); } @@ -70,6 +66,9 @@ OC_Log::write('contacts','savecrop.php: files: '.$tmp_path.' exists: '.file_exi if(file_exists($tmp_path)) { $image = new OC_Image(); if($image->loadFromFile($tmp_path)) { + $w = ($w != -1 ? $w : $image->width()); + $h = ($h != -1 ? $h : $image->height()); + OC_Log::write('contacts','savecrop.php, x: '.$x1.' y: '.$y1.' w: '.$w.' h: '.$h, OC_Log::DEBUG); if($image->crop($x1, $y1, $w, $h)) { if($image->resize(200)) { $tmpfname = tempnam("/tmp", "occCropped"); // create a new file because of caching issues. @@ -81,7 +80,7 @@ if(file_exists($tmp_path)) { bailOut('Error getting contact object.'); } if($card->__isset('PHOTO')) { - OC_Log::write('contacts','savecrop.php: files: PHOTO property exists.', OC_Log::DEBUG); + OC_Log::write('contacts','savecrop.php: PHOTO property exists.', OC_Log::DEBUG); $property = $card->__get('PHOTO'); if(!$property) { unlink($tmpfname); From 80ddf37bb76743672e4b5d754cb659b30cad2f71 Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Sun, 22 Apr 2012 02:09:13 +0200 Subject: [PATCH 13/17] Missing double quote. --- apps/contacts/templates/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/contacts/templates/index.php b/apps/contacts/templates/index.php index 2219d609d2..256d10afc0 100644 --- a/apps/contacts/templates/index.php +++ b/apps/contacts/templates/index.php @@ -16,7 +16,7 @@
- <?php echo $l->t('Add Contact'); ?>  title=t('Add Contact'); ?>" /> + <?php echo $l->t('Add Contact'); ?> <?php echo $l->t('Addressbooks'); ?>
From f85aaf1f5837baa9e3c4f3a4d77107211de12b4a Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Sun, 22 Apr 2012 02:32:51 +0200 Subject: [PATCH 14/17] Contacts: Added bg color and shadow to controls. I suck at CSS... --- apps/contacts/css/contacts.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/contacts/css/contacts.css b/apps/contacts/css/contacts.css index 33a9dd15cb..c19c6cc711 100644 --- a/apps/contacts/css/contacts.css +++ b/apps/contacts/css/contacts.css @@ -4,7 +4,7 @@ #leftcontent { top: 3.5em !important; } #rightcontent { top: 3.5em !important; padding-top: 5px; } #contacts { background: #fff; width: 20em; top: 3.7em; bottom:3em; position: fixed; overflow: auto; } -#bottomcontrols { padding: 0; bottom:0px; height:2.8em; width: 20em; margin:0; background:#f7f7f7; border-top:1px solid #eee; position:fixed; } +#bottomcontrols { padding: 0; bottom:0px; height:2.8em; width: 20em; margin:0; background:#eee; border-top:1px solid #ccc; position:fixed; -moz-box-shadow: 0 0 0 #000, -3px 0 7px #000; -webkit-box-shadow: 0 0 0 #000, -3px 0 7px #000; box-shadow: 0 0 0 #000, -3px 0 7px #000;} #contacts_newcontact { float: left; margin: 0.2em 0 0 1em; } #chooseaddressbook { float: right; margin: 0.2em 1em 0 0; } #leftcontent a { height: 23px; display: block; margin: 0 0 0 0; padding: 0 0 0 25px; } From 24aff287cfb1121bde7ef5ce907085e28033a8c3 Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Sun, 22 Apr 2012 03:39:59 +0200 Subject: [PATCH 15/17] Link to icon was absolute. --- apps/remoteStorage/templates/settings.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/remoteStorage/templates/settings.php b/apps/remoteStorage/templates/settings.php index 9b5c3b6229..b940282b2c 100644 --- a/apps/remoteStorage/templates/settings.php +++ b/apps/remoteStorage/templates/settings.php @@ -1,6 +1,6 @@
' + echo ' ' .''.$l->t('remoteStorage').' user address: ' .OC_User::getUser().'@'.$_SERVER['SERVER_NAME'] .' (more info)'; From f08cfcecec4d9f9ff9d6524236a0f1384e9afaee Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Sun, 22 Apr 2012 03:59:28 +0200 Subject: [PATCH 16/17] Personal settings: Emphasized labels etc, mono-spaced generated paths and moved text formatting to style sheet. --- apps/calendar/templates/settings.php | 4 ++-- apps/contacts/templates/settings.php | 12 ++++++------ apps/media/templates/settings.php | 2 +- core/css/styles.css | 2 ++ settings/templates/personal.php | 2 +- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/apps/calendar/templates/settings.php b/apps/calendar/templates/settings.php index fb2a04a649..3488fec018 100644 --- a/apps/calendar/templates/settings.php +++ b/apps/calendar/templates/settings.php @@ -9,7 +9,7 @@ ?>
- t('Calendar'); ?> + t('Calendar'); ?>
@@ -241,7 +241,7 @@ t('Summary'); ?>: -
//Alarm
-
//Attendees
+ \ No newline at end of file