From 36196b6c2d68ba7de74b8314743539b043325198 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sun, 2 Oct 2011 19:42:14 +0200 Subject: [PATCH 01/18] use browsercache for gallery covers --- apps/gallery/ajax/getCovers.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/apps/gallery/ajax/getCovers.php b/apps/gallery/ajax/getCovers.php index d56bf6fa4b..ebda8d3e47 100644 --- a/apps/gallery/ajax/getCovers.php +++ b/apps/gallery/ajax/getCovers.php @@ -61,6 +61,12 @@ while (($i = $result->fetchRow()) && $counter < $numOfItems) { header('Content-Type: image/png'); +$offset = 3600 * 24; +// calc the string in GMT not localtime and add the offset +header("Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT"); +header('Cache-Control: max-age=3600, must-revalidate'); +header('Pragma: public'); + imagepng($targetImg); imagedestroy($targetImg); ?> From 7579fc7bc9c894182b3de9bb9007aaa4b554b7fc Mon Sep 17 00:00:00 2001 From: Marvin Thomas Rabe Date: Tue, 4 Oct 2011 21:39:13 +0200 Subject: [PATCH 02/18] updated margins --- apps/calendar/css/style.css | 3 +-- apps/media/css/music.css | 4 ++-- core/css/styles.css | 4 ++-- files/css/files.css | 2 +- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/apps/calendar/css/style.css b/apps/calendar/css/style.css index 5e19b88f55..ca9f3274e3 100644 --- a/apps/calendar/css/style.css +++ b/apps/calendar/css/style.css @@ -5,7 +5,7 @@ * See the COPYING-README file. */ -#view {margin-left: 10px; float: left; font-size: 12px;} +#view { float: left; font-size: 12px; height: 100%;} #datecontrol {text-align: center;} #datecontrol_left{font-size: 12px;} #datecontrol_right{font-size: 12px;} @@ -17,7 +17,6 @@ #editentry_dialog {display: none;} #parsingfail_dialog{display: none;} -#view {margin-left: 10px; float: left; font-size: 12px; height: 100%;} #calendar_holder {height: 100%; width: 100%;} #onedayview, #oneweekview, #fourweeksview, #onemonthview, #listview {display: none; position: absolute;bottom: 0; right: 0; left: 160px; top: 80px;} #onedayview table {margin: 0; padding: 0; width: 100%; height: 100%; border-spacing:1px; background: #EEEEEE;} diff --git a/apps/media/css/music.css b/apps/media/css/music.css index 8575e6334a..67d5607519 100644 --- a/apps/media/css/music.css +++ b/apps/media/css/music.css @@ -1,6 +1,6 @@ #controls ul.jp-controls { padding:0; } #controls ul.jp-controls li { display:inline; } -#controls ul.jp-controls li a { position:absolute; padding:.8em 1em; } +#controls ul.jp-controls li a { position:absolute; padding:.8em 1em .8em 0; } a.jp-play, a.jp-pause { left:2.5em; } a.jp-pause { display:none; } a.jp-next { left:5em; } @@ -39,7 +39,7 @@ tr.album td.artist { padding-left:1em; } tr.song td.artist { padding-left:2em; } .add {margin: 0 0.5em 0 0; } -#scan { position:absolute; right:13em; top:0em; } +#scan { position:absolute; right:13.5em; top:0em; } #scan .start { position:relative; display:inline; float:right; } #scan .stop { position:relative; display:inline; float:right; } #scan #scanprogressbar { position:relative; display:inline-block; width:10em; height:1.5em; top:.4em; } diff --git a/core/css/styles.css b/core/css/styles.css index 84a024f95b..5d4df586a8 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -50,7 +50,7 @@ input[type="submit"].enabled { background:#66f866; border:1px solid #5e5; -moz-b input[type="submit"].highlight{ background:#ffc100; border:1px solid #db0; text-shadow:#ffeedd 0 1px 0; -moz-box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #ffeedd inset; -webkit-box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #ffeedd inset; box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #ffeedd inset; } /* CONTENT ------------------------------------------------------------------ */ -#controls { width:100%; top:3.5em; height:2.8em; margin:0; background:#f7f7f7; border-bottom:1px solid #eee; position:fixed; z-index:50; -moz-box-shadow:0 -3px 7px #000; -webkit-box-shadow:0 -3px 7px #000; box-shadow:0 -3px 7px #000; } +#controls { padding: 0 0.5em; width:100%; top:3.5em; height:2.8em; margin:0; background:#f7f7f7; border-bottom:1px solid #eee; position:fixed; z-index:50; -moz-box-shadow:0 -3px 7px #000; -webkit-box-shadow:0 -3px 7px #000; box-shadow:0 -3px 7px #000; } #controls .button { display:inline-block; } #content { margin:3.5em 0 0 12.5em; } #leftcontent, .leftcontent { position:fixed; overflow: auto; top:6.4em; width:20em; background:#f8f8f8; border-right:1px solid #ddd; } @@ -117,7 +117,7 @@ tbody tr:hover, tr:active { background-color:#f8f8f8; } #quotatext {padding: .6em 1em;} div.jp-play-bar, div.jp-seek-bar { padding:0; } -.pager { list-style:none; float:right; display:inline; margin:.7em 12.7em 0 0; } +.pager { list-style:none; float:right; display:inline; margin:.7em 13em 0 0; } .pager li { display:inline-block; } li.error { width:640px; margin:4em auto; padding:1em 1em 1em 4em; background:#ffe .8em .8em no-repeat; border:1px solid #ccc; -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; } diff --git a/files/css/files.css b/files/css/files.css index 1766d03d96..a8419e972e 100644 --- a/files/css/files.css +++ b/files/css/files.css @@ -10,7 +10,7 @@ .file_upload_form, #file_newfolder_form { display:inline; float: left;} #fileSelector, #file_upload_submit, #file_newfolder_submit { display:none; } .file_upload_wrapper, #file_newfolder_name { background-repeat:no-repeat; background-position:.5em .5em; padding-left:2em; } -.file_upload_wrapper { font-weight:bold; display:-moz-inline-box; /* fallback for older firefox versions*/ display:inline-block; padding-left:0; overflow:hidden; position:relative; margin:.1em 1em;} +.file_upload_wrapper { font-weight:bold; display:-moz-inline-box; /* fallback for older firefox versions*/ display:inline-block; padding-left:0; overflow:hidden; position:relative; margin:.1em 1em .1em 0em;} .file_upload_wrapper .file_upload_button_wrapper { position:absolute; top:0; left:0; width:100%; height:100%; cursor:pointer; z-index:1000; } #file_newfolder_name { background-image:url('../../core/img/places/folder.svg'); font-weight:normal; width:7em; } From 0cde2a314656b1818d15b64139cca038930e0c24 Mon Sep 17 00:00:00 2001 From: Borjan Tchakaloff Date: Wed, 5 Oct 2011 14:27:50 +0400 Subject: [PATCH 03/18] Fixed the file sharing listing bug (filename is empty when it has no extension in a publicly shared folder). --- apps/files_sharing/get.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/files_sharing/get.php b/apps/files_sharing/get.php index 083f48e112..38f4b2daed 100644 --- a/apps/files_sharing/get.php +++ b/apps/files_sharing/get.php @@ -30,8 +30,9 @@ if ($source !== false) { foreach (OC_Files::getdirectorycontent($source) as $i) { $i['date'] = OC_Util::formatDate($i['mtime'] ); if ($i['type'] == 'file') { - $i['extention'] = substr($i['name'], strrpos($i['name'], ".")); - $i['basename'] = substr($i['name'], 0, strrpos($i['name'], ".")); + $fileinfo = pathinfo($i['name']); + $i['basename'] = $fileinfo['filename']; + $i['extention'] = isset($fileinfo['extension']) ? ('.'.$fileinfo['extension']) : ''; } $i['directory'] = substr($i['directory'], $rootLength); if ($i['directory'] == "/") { From 3388381debdeb871533760109c91685f26d62044 Mon Sep 17 00:00:00 2001 From: Borjan Tchakaloff Date: Wed, 5 Oct 2011 14:31:33 +0400 Subject: [PATCH 04/18] Fixed the 'Undefined index "user_id"' bug when requesting a publicly shared folder and being logged-out. The OC_App::navigation array contains by default only the help menu. --- lib/app.php | 65 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 26 deletions(-) diff --git a/lib/app.php b/lib/app.php index cd4a7293e4..b9eea483a5 100644 --- a/lib/app.php +++ b/lib/app.php @@ -200,23 +200,36 @@ class OC_App{ */ public static function getSettingsNavigation(){ $l=new OC_L10N('core'); - $admin=array( - array( "id" => "core_users", "order" => 2, "href" => OC_Helper::linkTo( "settings", "users.php" ), "name" => $l->t("Users"), "icon" => OC_Helper::imagePath( "settings", "users.svg" )), - array( "id" => "core_apps", "order" => 3, "href" => OC_Helper::linkTo( "settings", "apps.php?installed" ), "name" => $l->t("Apps"), "icon" => OC_Helper::imagePath( "settings", "apps.svg" )), - ); - $settings=array( - array( "id" => "help", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "help.php" ), "name" => $l->t("Help"), "icon" => OC_Helper::imagePath( "settings", "help.svg" )), - array( "id" => "personal", "order" => 1, "href" => OC_Helper::linkTo( "settings", "personal.php" ), "name" => $l->t("Personal"), "icon" => OC_Helper::imagePath( "settings", "personal.svg" )) - ); - if(count(self::$settingsForms)>0){ - $settings[]=array( "id" => "settings", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "settings.php" ), "name" => $l->t("Settings"), "icon" => OC_Helper::imagePath( "settings", "settings.svg" )); - } - if(count(self::$adminForms)>0){ - $admin[]=array( "id" => "admin", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "admin.php" ), "name" => $l->t("Admin"), "icon" => OC_Helper::imagePath( "settings", "admin.svg" )); - } - if( OC_Group::inGroup( $_SESSION["user_id"], "admin" )){ - $settings=array_merge($admin,$settings); - } + + // by default, settings only contain the help menu + $settings = array( + array( "id" => "help", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "help.php" ), "name" => $l->t("Help"), "icon" => OC_Helper::imagePath( "settings", "help.svg" )) + ); + + // if the user is logged-in + if (OC_User::isLoggedIn()) { + // personal menu + $settings[] = array( "id" => "personal", "order" => 1, "href" => OC_Helper::linkTo( "settings", "personal.php" ), "name" => $l->t("Personal"), "icon" => OC_Helper::imagePath( "settings", "personal.svg" )); + + // if there're some settings forms + if(!empty(self::$settingsForms)) + // settings menu + $settings[]=array( "id" => "settings", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "settings.php" ), "name" => $l->t("Settings"), "icon" => OC_Helper::imagePath( "settings", "settings.svg" )); + + // if the user is an admin + if(OC_Group::inGroup( $_SESSION["user_id"], "admin" )) { + // admin users menu + $settings[] = array( "id" => "core_users", "order" => 2, "href" => OC_Helper::linkTo( "settings", "users.php" ), "name" => $l->t("Users"), "icon" => OC_Helper::imagePath( "settings", "users.svg" )); + // admin apps menu + $settings[] = array( "id" => "core_apps", "order" => 3, "href" => OC_Helper::linkTo( "settings", "apps.php?installed" ), "name" => $l->t("Apps"), "icon" => OC_Helper::imagePath( "settings", "apps.svg" )); + + // if there're some admin forms + if(!empty(self::$adminForms)) + // admins menu + $settings[]=array( "id" => "admin", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "admin.php" ), "name" => $l->t("Admin"), "icon" => OC_Helper::imagePath( "settings", "admin.svg" )); + } + } + $navigation = self::proceedNavigation($settings); return $navigation; } @@ -237,7 +250,7 @@ class OC_App{ return $list; } - + /** * @brief Read app metadata from the info.xml file * @param string $appid id of the app or the path of the info.xml file @@ -261,7 +274,7 @@ class OC_App{ } return $data; } - + /** * @brief Returns the navigation * @returns associative array @@ -277,7 +290,7 @@ class OC_App{ $navigation = self::proceedNavigation( self::$navigation ); return $navigation; } - + /** * get the id of loaded app * @return string @@ -292,8 +305,8 @@ class OC_App{ return $topFolder; } } - - + + /** * get the forms for either settings, admin or personal */ @@ -315,28 +328,28 @@ class OC_App{ } return $forms; } - + /** * register a settings form to be shown */ public static function registerSettings($app,$page){ self::$settingsForms[]='apps/'.$app.'/'.$page.'.php'; } - + /** * register an admin form to be shown */ public static function registerAdmin($app,$page){ self::$adminForms[]='apps/'.$app.'/'.$page.'.php'; } - + /** * register a personal form to be shown */ public static function registerPersonal($app,$page){ self::$personalForms[]='apps/'.$app.'/'.$page.'.php'; } - + /** * get a list of all apps in the apps folder */ From 5570222b40194e6ef3a82857718dee2577818f79 Mon Sep 17 00:00:00 2001 From: Borjan Tchakaloff Date: Wed, 5 Oct 2011 15:16:34 +0400 Subject: [PATCH 05/18] Added the missing quotes on the filename. --- apps/files_sharing/get.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_sharing/get.php b/apps/files_sharing/get.php index 083f48e112..7d040689d4 100644 --- a/apps/files_sharing/get.php +++ b/apps/files_sharing/get.php @@ -70,7 +70,7 @@ if ($source !== false) { header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Pragma: public"); - header("Content-Disposition: filename=".basename($source)); + header('Content-Disposition: filename="'.basename($source).'"'); header("Content-Type: " . $mimetype); header("Content-Length: " . OC_Filesystem::filesize($source)); //download the file From f92fa6989e4d784f57bdbe4f9d9f9da0faa5bf47 Mon Sep 17 00:00:00 2001 From: Bartek Przybylski Date: Wed, 5 Oct 2011 22:28:17 +0200 Subject: [PATCH 06/18] another query fix --- apps/gallery/lib_scanner.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/gallery/lib_scanner.php b/apps/gallery/lib_scanner.php index fcd9b0acb6..5490c4a55a 100644 --- a/apps/gallery/lib_scanner.php +++ b/apps/gallery/lib_scanner.php @@ -42,7 +42,7 @@ class OC_GALLERY_SCANNER { $stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_photos WHERE `album_id` = ? AND `file_path` = ?'); $result = $stmt->execute(array($albumId, $img)); if ($result->numRows() == 0) { - $stmt = OC_DB::prepare('INSERT OR REPLACE INTO *PREFIX*gallery_photos (`album_id`, `file_path`) VALUES (?, ?)'); + $stmt = OC_DB::prepare('REPLACE INTO *PREFIX*gallery_photos (`album_id`, `file_path`) VALUES (?, ?)'); $stmt->execute(array($albumId, $img)); } } From 08c38c8158bab4f7f6d60c778a8614739719bc7f Mon Sep 17 00:00:00 2001 From: Stephen Rees-Carter Date: Thu, 6 Oct 2011 10:30:17 +1100 Subject: [PATCH 07/18] Updating .gitignore to ignore *.geany project files. --- .gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index ea8e5bd42f..312dc0433a 100644 --- a/.gitignore +++ b/.gitignore @@ -32,4 +32,7 @@ RCS/* # netbeans nbproject -.DS_Store \ No newline at end of file +# geany +*.geany + +.DS_Store From c853fc75a1db418b3c892f2e82e723b63489d35e Mon Sep 17 00:00:00 2001 From: Stephen Rees-Carter Date: Thu, 6 Oct 2011 10:31:05 +1100 Subject: [PATCH 08/18] BUGFIX: removed the hard-coded Continent selection for Calendar Timezones. --- apps/calendar/templates/settings.php | 50 +++++++++++++++------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/apps/calendar/templates/settings.php b/apps/calendar/templates/settings.php index 19a1a543b4..afc35bf7f3 100644 --- a/apps/calendar/templates/settings.php +++ b/apps/calendar/templates/settings.php @@ -11,34 +11,36 @@ OC_UTIL::addStyle('', 'jquery.multiselect'); ?>
- -
+ + - + -
- -
+ +
+
- t('Calendar CalDAV syncing address:');?> -
+ t('Calendar CalDAV syncing address:');?> +
From 55ab68a3326f6900faac3bf1779346013e6bac9a Mon Sep 17 00:00:00 2001 From: Georg Ehrke Date: Thu, 6 Oct 2011 13:21:13 +0200 Subject: [PATCH 09/18] support of RRULE in calendar app --- apps/calendar/ajax/getcal.php | 699 ++++++++++++++++++++++++++++++++-- 1 file changed, 665 insertions(+), 34 deletions(-) diff --git a/apps/calendar/ajax/getcal.php b/apps/calendar/ajax/getcal.php index a65c6cf260..3d43677075 100644 --- a/apps/calendar/ajax/getcal.php +++ b/apps/calendar/ajax/getcal.php @@ -28,43 +28,674 @@ $select_year = $_GET["year"]; $user_timezone = OC_Preferences::getValue(OC_USER::getUser(), "calendar", "timezone", "Europe/London"); foreach($events as $event) { - if ($select_year != substr($event['startdate'], 0, 4)) + if($select_year != substr($event['startdate'], 0, 4) && $event["repeating"] == false) continue; - $object = Sabre_VObject_Reader::read($event['calendardata']); - $vevent = $object->VEVENT; - $dtstart = $vevent->DTSTART; - $dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent); - $start_dt = $dtstart->getDateTime(); - $start_dt->setTimezone(new DateTimeZone($user_timezone)); - $end_dt = $dtend->getDateTime(); - $end_dt->setTimezone(new DateTimeZone($user_timezone)); - $year = $start_dt->format('Y'); - $month = $start_dt->format('n') - 1; // return is 0 based - $day = $start_dt->format('j'); - $hour = $start_dt->format('G'); - if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { - $hour = 'allday'; - } + if($select_year == substr($event['startdate'], 0, 4) && $event["repeating"] == false){ + $object = Sabre_VObject_Reader::read($event['calendardata']); + $vevent = $object->VEVENT; + $dtstart = $vevent->DTSTART; + $dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent); + $start_dt = $dtstart->getDateTime(); + $start_dt->setTimezone(new DateTimeZone($user_timezone)); + $end_dt = $dtend->getDateTime(); + $end_dt->setTimezone(new DateTimeZone($user_timezone)); + $year = $start_dt->format('Y'); + $month = $start_dt->format('n') - 1; // return is 0 based + $day = $start_dt->format('j'); + $hour = $start_dt->format('G'); + if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { + $hour = 'allday'; + } - $return_event = array(); - foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop) - { - $return_event[$prop] = $event[$prop]; + $return_event = array(); + foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop) + { + $return_event[$prop] = $event[$prop]; + } + $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); + $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); + $return_event['description'] = $event['summary']; + if ($hour == 'allday') + { + $return_event['allday'] = true; + } + if (isset($return[$year][$month][$day][$hour])) + { + $return[$year][$month][$day][$hour][] = $return_event; + } + else + { + $return[$year][$month][$day][$hour] = array(1 => $return_event); + } } - $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); - $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); - $return_event['description'] = $event['summary']; - if ($hour == 'allday') - { - $return_event['allday'] = true; - } - if (isset($return[$year][$month][$day][$hour])) - { - $return[$year][$month][$day][$hour][] = $return_event; - } - else - { - $return[$year][$month][$day][$hour] = array(1 => $return_event); + if($event["repeating"] == 1){ + $object = Sabre_VObject_Reader::read($event['calendardata']); + $vevent = $object->VEVENT; + //echo substr_count($event["calendardata"], "EXDATE"); + $numofelements = substr_count($vevent->RRULE, ";"); + $properties = array("FREQ"=>"false", "UNTIL"=>"false", "COUNT"=>"false", "INTERVAL"=>"false", "BYDAY"=>"false", "BYMONTHDAY"=>"false", "BYWEEKNO"=>"false", "BYMONTH"=>"false", "BYYEARDAY"=>"false", "BYSETPOS"=>"false"); + $exruleproperties = array("FREQ"=>"false", "UNTIL"=>"false", "COUNT"=>"false", "INTERVAL"=>"false", "BYDAY"=>"false", "BYMONTHDAY"=>"false", "BYWEEKNO"=>"false", "BYMONTH"=>"false", "BYYEARDAY"=>"false", "BYSETPOS"=>"false"); + $byday = array("MO"=>"false", "TU"=>"false", "WE"=>"false", "TH"=>"false", "FR"=>"false", "SA"=>"false", "SU"=>"false"); + if($numofelements != 0){ + $rrule = explode(";", $vevent->RRULE); + for($i = 0;$i <= $numofelements;$i++){ + $rule = explode("=", $rrule[$i]); + $property = $rule[0]; + $value = $rule[1]; + $properties[$property] = $value; + } + if($properties["BYDAY"] != "false"){ + $numofdays = substr_count($properties["BYDAY"], ","); + if($numofdays == 0){ + if(strlen($properties["BYDAY"]) != 2){ + $lenght = strlen($properties["BYDAY"]); + switch($lenght){ + case "3": + $properties["BYSETPOS"] = substr($properties["BYDAY"],0,1); + $properties["BYDAY"] = substr($properties["BYDAY"],1,2); + break; + case "4": + $properties["BYSETPOS"] = substr($properties["BYDAY"],0,2); + $properties["BYDAY"] = substr($properties["BYDAY"],2,2); + break; + case "5": + $properties["BYSETPOS"] = substr($properties["BYDAY"],0,3); + $properties["BYDAY"] = substr($properties["BYDAY"],3,2); + break; + case "6": + $properties["BYSETPOS"] = substr($properties["BYDAY"],0,4); + $properties["BYDAY"] = substr($properties["BYDAY"],4,2); + break; + } + } + $byday[$properties["BYDAY"]] = true; + + }else{ + $days = explode(",", $properties["BYDAY"]); + for($i = 0;$i <= $numofdays;$i++){ + $day = $days[$i]; + $byday[$day] = true; + } + } + } + }else{ + $rule = explode("=", $vevent->RRULE); + $properties[$rule[0]] = $rule[1]; + } + if($properties["INTERVAL"] == "false"){ + $properties["INTERVAL"] = 1; + } + $count = 0; //counts all loops + $countedoutputs = 0; //counts only the outputs + $countchecker = true; + $dtstart = $vevent->DTSTART; + $dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent); + $start_dt = $dtstart->getDateTime(); + $start_dt->setTimezone(new DateTimeZone($user_timezone)); + $end_dt = $dtend->getDateTime(); + $end_dt->setTimezone(new DateTimeZone($user_timezone)); + $firststart_year = $start_dt->format('Y'); + $firststart_month = $start_dt->format('n'); + $firststart_day = $start_dt->format('j'); + $hour = $start_dt->format('G'); + $interval = 0; + if($properties["UNTIL"] != "false"){ + $until = $properties["UNTIL"]; + $until_year = substr($until, 0, 4); + $until_month = substr($until, 4, 2); + $until_day = substr($until, 6, 2); + } + //print_r($properties); + //print_r($byday); + if($properties["FREQ"] == "DAILY"){ + if($properties["BYDAY"] == "false"){ + $byday = array("MO"=>"1", "TU"=>"1", "WE"=>"1", "TH"=>"1", "FR"=>"1", "SA"=>"1", "SU"=>"1"); + } + while(date("Y", mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year) + ($count * 1 * 86400 * $interval)) <= $select_year && $countchecker == true){ + if($byday[strtoupper(substr(date("D", mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year) + ($count * 1 * 86400 * $interval)), 0, 2))] == "1"){ + $newunixtime = mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year) + ($count * 1 * 86400 * $interval); + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = date("j", $newunixtime); + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { + $hour = 'allday'; + } + $return_event = array(); + foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ + $return_event[$prop] = $event[$prop]; + } + $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); + $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); + $return_event['description'] = $event['summary']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + if ($hour == 'allday'){ + $return_event['allday'] = true; + } + if (isset($return[$year][$month][$day][$hour])){ + $return[$year][$month][$day][$hour][] = $return_event; + }else{ + $return[$year][$month][$day][$hour] = array(1 => $return_event); + } + } + $count++; + } + } + if($properties["FREQ"] == "WEEKLY"){ + if($properties["BYDAY"] == "false"){ + $byday[strtoupper(substr(date("D", mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year)), 0, 2))] = "1"; + } + while(date("Y", mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year) + ($count * 1 * 86400 * $interval)) <= $select_year && $countchecker == true){ + if($byday[strtoupper(substr(date("D", mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year) + ($count * 1 * 86400 * $interval)), 0, 2))] == "1"){ + $newunixtime = mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year) + ($count * 1 * 86400 * $interval); + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = date("j", $newunixtime); + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { + $hour = 'allday'; + } + $return_event = array(); + foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ + $return_event[$prop] = $event[$prop]; + } + $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); + $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); + $return_event['description'] = $event['summary']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + if ($hour == 'allday'){ + $return_event['allday'] = true; + } + if (isset($return[$year][$month][$day][$hour])){ + $return[$year][$month][$day][$hour][] = $return_event; + }else{ + $return[$year][$month][$day][$hour] = array(1 => $return_event); + } + } + $count++; + } + } + if($properties["FREQ"] == "MONTHLY"){ + if(substr_count($properties["BYMONTHDAY"], ",") != 0){ + $numofBYMONTHDAY = substr_count($properties["BYMONTHDAY"], ","); + if($numofBYMONTHDAY == 0){ + $BYMONTHDAY = array(); + $BYMONTHDAY[0] = $properties["BYMONTHDAY"]; + }else{ + $BYMONTHDAY = explode(",", $properties["BYMONTHDAY"]); + } + while(date("Y", mktime(0,0,0, $firststart_month + ($count * $interval), $properties["BYMONTHDAY"], $firststart_year)) <= $select_year && $countchecker == true){ + for($i = 0;$i <= $numofBYMONTHDAY;$i++){ + $newunixtime = mktime(0,0,0, $firststart_month + ($count * $interval), $BYMONTHDAY[$i], $firststart_year); + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = date("j", $newunixtime); + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { + $hour = 'allday'; + } + $return_event = array(); + foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ + $return_event[$prop] = $event[$prop]; + } + $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); + $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); + $return_event['description'] = $event['summary']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + if ($hour == 'allday'){ + $return_event['allday'] = true; + } + if (isset($return[$year][$month][$day][$hour])){ + $return[$year][$month][$day][$hour][] = $return_event; + }else{ + $return[$year][$month][$day][$hour] = array(1 => $return_event); + } + } + $count++; + } + } + //if($properties["BYMONTHDAY"] != "false"){ + if($properties["BYSETPOS"] == "false"){ + while(date("Y", mktime(0,0,0, $firststart_month + ($count * $interval), $properties["BYMONTHDAY"], $firststart_year)) <= $select_year && $countchecker == true){ + $newunixtime = mktime(0,0,0, $firststart_month + ($count * $interval), $properties["BYMONTHDAY"], $firststart_year); + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = date("j", $newunixtime); + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { + $hour = 'allday'; + } + $return_event = array(); + foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ + $return_event[$prop] = $event[$prop]; + } + $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); + $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); + $return_event['description'] = $event['summary']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + if ($hour == 'allday'){ + $return_event['allday'] = true; + } + if (isset($return[$year][$month][$day][$hour])){ + $return[$year][$month][$day][$hour][] = $return_event; + }else{ + $return[$year][$month][$day][$hour] = array(1 => $return_event); + } + $count++; + } + }else{ + if(!is_nan($properties["BYSETPOS"]) && $properties["BYSETPOS"] >= 1){ + while(date("Y", mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year)) <= $select_year && $countchecker == true){ + $lastdayofmonth = date("t", mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year)); + $matches = 0; + $matchedday = ""; + for($i = 1;$i <= $lastdayofmonth;$i++){ + $thisday = date("j", mktime(0,0,0, $firststart_month + ($count * $interval), $i, $firststart_year)); + $thisdayname = strtoupper(substr(date("D", mktime(0,0,0, $firststart_month + ($count * $interval), $i, $firststart_year)),0,2)); + //echo $thisdayname . " " . $thisday . "\n"; + if($byday[$thisdayname] == 1){ + $matches++; + } + if($matches == $properties["BYSETPOS"]){ + $matchedday = $thisday; + $i = 32; + } + } + $newunixtime = mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year); + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = $matchedday; + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { + $hour = 'allday'; + } + $return_event = array(); + foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ + $return_event[$prop] = $event[$prop]; + } + $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); + $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); + $return_event['description'] = $event['summary']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + if ($hour == 'allday'){ + $return_event['allday'] = true; + } + if (isset($return[$year][$month][$day][$hour])){ + $return[$year][$month][$day][$hour][] = $return_event; + }else{ + $return[$year][$month][$day][$hour] = array(1 => $return_event); + } + $count++; + } + }elseif(!is_nan($properties["BYSETPOS"]) && $properties["BYSETPOS"] <= -1){ + while(date("Y", mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year)) <= $select_year && $countchecker == true){ + $lastdayofmonth = date("t", mktime(0,0,0, $firststart_month + ($count * $interval), 1, $firststart_year)); + $matches = 0; + $matchedday = ""; + for($i = $lastdayofmonth;$i >= 1;$i--){ + $thisday = date("j", mktime(0,0,0, $firststart_month + ($count * $interval), $i, $firststart_year)); + $thisdayname = strtoupper(substr(date("D", mktime(0,0,0, $firststart_month + ($count * $interval), $i, $firststart_year)),0,2)); + //echo $thisdayname . " " . $thisday . "\n"; + if($byday[$thisdayname] == 1){ + $matches++; + } + if($matches == $properties["BYSETPOS"]){ + $matchedday = $thisday; + $i = 0; + } + } + $newunixtime = mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year); + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = $matchedday; + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { + $hour = 'allday'; + } + $return_event = array(); + foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ + $return_event[$prop] = $event[$prop]; + } + $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); + $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); + $return_event['description'] = $event['summary']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + if ($hour == 'allday'){ + $return_event['allday'] = true; + } + if (isset($return[$year][$month][$day][$hour])){ + $return[$year][$month][$day][$hour][] = $return_event; + }else{ + $return[$year][$month][$day][$hour] = array(1 => $return_event); + } + $count++; + } + //} + } + } + if(strlen($properties["BYDAY"]) == 2){ + while(date("Y", mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year)) <= $select_year && $countchecker == true){ + if($byday[strtoupper(substr(date("D", mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year)), 0, 2))] == "1"){ + $newunixtime = mktime(0,0,0, $firststart_month + ($count * $interval), $firststart_day, $firststart_year); + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = date("j", $newunixtime); + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { + $hour = 'allday'; + } + $return_event = array(); + foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ + $return_event[$prop] = $event[$prop]; + } + $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); + $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); + $return_event['description'] = $event['summary']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + if ($hour == 'allday'){ + $return_event['allday'] = true; + } + if (isset($return[$year][$month][$day][$hour])){ + $return[$year][$month][$day][$hour][] = $return_event; + }else{ + $return[$year][$month][$day][$hour] = array(1 => $return_event); + } + } + $count++; + } + }else{ + while(date("Y", mktime(0,0,0, 0, 0, $firststart_year + ($count * $interval))) <= $select_year && $countchecker == true){ + $newunixtime = mktime(0,0,0, $properties["BYMONTH"], $properties["BYMONTHDAY"], $firststart_year + ($count * $interval)); + $year = date("Y", $newunixtime); + $month = $month - 1; // return is 0 based + $day = $dateofweekone; + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { + $hour = 'allday'; + } + $return_event = array(); + foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ + $return_event[$prop] = $event[$prop]; + } + $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); + $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); + $return_event['description'] = $event['summary']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + if ($hour == 'allday'){ + $return_event['allday'] = true; + } + if (isset($return[$year][$month][$day][$hour])){ + $return[$year][$month][$day][$hour][] = $return_event; + }else{ + $return[$year][$month][$day][$hour] = array(1 => $return_event); + } + $count++; + } + } + } + if($properties["FREQ"] == "YEARLY"){ + if($properties["BYMONTH"] != "false"){ + if($properties["BYMONTHDAY"] == false){ + $properties["BYMONTHDAY"] = date("j", mktime(0,0,0, $firststart_month, $firststart_day, $firststart_year)); + } + if($properties["BYDAY"] == "false"){ + while(date("Y", mktime(0,0,0, $properties["BYMONTH"], $properties["BYMONTHDAY"], $firststart_year + ($count * $interval))) <= $select_year && $countchecker == true){ + $newunixtime = mktime(0,0,0, $properties["BYMONTH"], $properties["BYMONTHDAY"], $firststart_year + ($count * $interval)); + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = date("j", $newunixtime); + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { + $hour = 'allday'; + } + $return_event = array(); + foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ + $return_event[$prop] = $event[$prop]; + } + $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); + $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); + $return_event['description'] = $event['summary']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + if ($hour == 'allday'){ + $return_event['allday'] = true; + } + if (isset($return[$year][$month][$day][$hour])){ + $return[$year][$month][$day][$hour][] = $return_event; + }else{ + $return[$year][$month][$day][$hour] = array(1 => $return_event); + } + $count++; + } + } + if(strlen($properties["BYDAY"]) == 2){ + while(date("Y", mktime(0,0,0, $properties["BYMONTH"], $properties["BYMONTHDAY"], $firststart_year + ($count * $interval))) <= $select_year && $countchecker == true){ + $newunixtime = mktime(0,0,0, $properties["BYMONTH"], $properties["BYMONTHDAY"], $firststart_year + ($count * $interval)); + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = date("j", $newunixtime); + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { + $hour = 'allday'; + } + $return_event = array(); + foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ + $return_event[$prop] = $event[$prop]; + } + $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); + $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); + $return_event['description'] = $event['summary']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + if ($hour == 'allday'){ + $return_event['allday'] = true; + } + if (isset($return[$year][$month][$day][$hour])){ + $return[$year][$month][$day][$hour][] = $return_event; + }else{ + $return[$year][$month][$day][$hour] = array(1 => $return_event); + } + $count++; + } + }else{ + $number = substr($properties["BYDAY"],0,1); + $weekday = substr($properties["BYDAY"],1,2); + $month = $properties["BYMONTH"]; + $dateofweekone = ""; + for($i = 0; $i <= 7;$i++){ + if(strtoupper(substr(date("D", mktime(0,0,0, $properties["BYMONTH"], $i, $select_year)), 0, 2)) == $weekday){ + $dateofweekone = date("j", mktime(0,0,0, $properties["BYMONTH"], $i, $select_year)); + $i = 8; + } + } + if($number != 1){ + $dateofweekone = $dateofweekone + (7 * ($number - 1)); + } + while(date("Y", mktime(0,0,0, 0, 0, $firststart_year + ($count * $interval))) <= $select_year && $countchecker == true){ + $newunixtime = mktime(0,0,0, $properties["BYMONTH"], $properties["BYMONTHDAY"], $firststart_year + ($count * $interval)); + $year = date("Y", $newunixtime); + $month = $month - 1; // return is 0 based + $day = $dateofweekone; + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { + $hour = 'allday'; + } + $return_event = array(); + foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ + $return_event[$prop] = $event[$prop]; + } + $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); + $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); + $return_event['description'] = $event['summary']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + if ($hour == 'allday'){ + $return_event['allday'] = true; + } + if (isset($return[$year][$month][$day][$hour])){ + $return[$year][$month][$day][$hour][] = $return_event; + }else{ + $return[$year][$month][$day][$hour] = array(1 => $return_event); + } + $count++; + } + } + }elseif($properties["BYYEARDAY"] != false){ + $numofyeardays = substr_count($properties["BYYEARDAY"], ","); + if($numofyeardays == 0){ + $yeardays = array(); + $yeardays[0] = $properties["BYYEARDAY"]; + }else{ + $yeardays = explode(",", $properties["BYYEARDAY"]); + } + while(date("Y", mktime(0,0,0, 0, 0, $firststart_year + ($count * $interval)) + ($yeardays[$numofyeardays]-1) * 86400) <= $select_year && $countchecker == true){ + for($i = 0;$i <= $numofyeardays;$i++){ + $newunixtime = mktime(0,0,0, 1, 1, $firststart_year + ($count * $interval)) + ($yeardays[$i] -1) * 86400; + $year = date("Y", $newunixtime); + $month = date("n", $newunixtime) - 1; // return is 0 based + $day = date("j", $newunixtime); + if($properties["UNTIL"] != "false"){ + if($year >= $until_year && $month + 1 >= $until_month && $day > $until_day){ + break; + } + } + if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE) { + $hour = 'allday'; + } + $return_event = array(); + foreach(array('id', 'calendarid', 'objecttype', 'repeating') as $prop){ + $return_event[$prop] = $event[$prop]; + } + $return_event['startdate'] = explode('|', $start_dt->format('Y|m|d|H|i')); + $return_event['enddate'] = explode('|', $end_dt->format('Y|m|d|H|i')); + $return_event['description'] = $event['summary']; + $interval = $properties["INTERVAL"]; + $countedoutputs++; + if($properties["COUNT"] != "false"){ + if($countedoutputs == $properties["COUNT"]){ + $countchecker = false; + } + } + if ($hour == 'allday'){ + $return_event['allday'] = true; + } + if (isset($return[$year][$month][$day][$hour])){ + $return[$year][$month][$day][$hour][] = $return_event; + }else{ + $return[$year][$month][$day][$hour] = array(1 => $return_event); + } + } + $count++; + } + } + } } } OC_JSON::encodedPrint($return); From c28f1e0276bef100b88b4df0bd8f2a0d7d888314 Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Thu, 6 Oct 2011 11:14:07 +0200 Subject: [PATCH 10/18] Implement timezone fix from Stephen Rees-Carter --- apps/calendar/templates/settings.php | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/apps/calendar/templates/settings.php b/apps/calendar/templates/settings.php index 19a1a543b4..913e54dd8f 100644 --- a/apps/calendar/templates/settings.php +++ b/apps/calendar/templates/settings.php @@ -16,16 +16,18 @@ OC_UTIL::addStyle('', 'jquery.multiselect'); '; - echo ''; - endif; - $city=$ex[1]; - $continent=$ex[0]; - echo ''; + $ex=explode('/', $timezone, 2);//obtain continent,city + if (!isset($ex[1])) { + $ex[1] = $ex[0]; + $ex[0] = "Other"; + } + if ($continent!=$ex[0]): + if ($continent!="") echo ''; + echo ''; endif; + $city=$ex[1]; + $continent=$ex[0]; + echo ''; endforeach;?> From 4786ed321e802f8a63cff2bc4cb36461a3385971 Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Thu, 6 Oct 2011 11:45:49 +0200 Subject: [PATCH 11/18] Replace _ in timezone setting with a space --- apps/calendar/templates/settings.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/calendar/templates/settings.php b/apps/calendar/templates/settings.php index 913e54dd8f..c6664d512d 100644 --- a/apps/calendar/templates/settings.php +++ b/apps/calendar/templates/settings.php @@ -25,7 +25,7 @@ OC_UTIL::addStyle('', 'jquery.multiselect'); if ($continent!="") echo ''; echo ''; endif; - $city=$ex[1]; + $city=strtr($ex[1], '_', ' '); $continent=$ex[0]; echo ''; endforeach;?> From b0847a61f52b8056365d26b52d23dddab329b62d Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Thu, 6 Oct 2011 21:22:01 +0200 Subject: [PATCH 12/18] Start using OC_JSON in gallery app --- apps/gallery/ajax/cover.php | 7 ++----- apps/gallery/ajax/createAlbum.php | 9 +++------ apps/gallery/ajax/getAlbums.php | 9 +++------ apps/gallery/ajax/getCovers.php | 7 ++----- apps/gallery/ajax/scanForAlbums.php | 11 ++++------- apps/gallery/ajax/thumbnail.php | 7 ++----- apps/gallery/index.php | 1 + 7 files changed, 17 insertions(+), 34 deletions(-) diff --git a/apps/gallery/ajax/cover.php b/apps/gallery/ajax/cover.php index 44d7302851..d83f4daaa5 100644 --- a/apps/gallery/ajax/cover.php +++ b/apps/gallery/ajax/cover.php @@ -1,5 +1,7 @@ 'error', 'data' => array( 'message' => 'You need to log in.'))); - exit(); -} $box_size = 200; $album_name = $_GET['album']; $x = $_GET['x']; diff --git a/apps/gallery/ajax/createAlbum.php b/apps/gallery/ajax/createAlbum.php index 3a490bdc3b..610f761b72 100644 --- a/apps/gallery/ajax/createAlbum.php +++ b/apps/gallery/ajax/createAlbum.php @@ -1,14 +1,11 @@ 'error', 'data' => array( 'message' => 'You need to log in.'))); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('gallery'); $stmt = OC_DB::prepare('INSERT INTO *PREFIX*gallery_albums ("uid_owner", "album_name") VALUES ("'.OC_User::getUser().'", "'.$_GET['album_name'].'")'); $stmt->execute(array()); -echo json_encode(array( 'status' => 'success', 'name' => $_GET['album_name'])); +OC_JSON::success(array('name' => $_GET['album_name'])); ?> diff --git a/apps/gallery/ajax/getAlbums.php b/apps/gallery/ajax/getAlbums.php index 2829dae81f..38bea74636 100644 --- a/apps/gallery/ajax/getAlbums.php +++ b/apps/gallery/ajax/getAlbums.php @@ -1,10 +1,7 @@ 'error', 'message' => 'You need to log in')); - exit(); -} +OC_JSON::checkLoggedIn(); +OC_JSON::checkAppEnabled('gallery'); $a = array(); $stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_albums WHERE `uid_owner` = ?'); @@ -17,6 +14,6 @@ while ($r = $result->fetchRow()) { $a[] = array('name' => $album_name, 'numOfItems' => min($tmp_res->numRows(), 10)); } -echo json_encode(array('status'=>'success', 'albums'=>$a)); +OC_JSON::success(array('albums'=>$a)); ?> diff --git a/apps/gallery/ajax/getCovers.php b/apps/gallery/ajax/getCovers.php index 57737f2fdd..6b2224b5f0 100644 --- a/apps/gallery/ajax/getCovers.php +++ b/apps/gallery/ajax/getCovers.php @@ -1,5 +1,7 @@ 'error', 'data' => array( 'message' => 'You need to log in.'))); - exit(); -} $box_size = 200; $album_name= $_GET['album_name']; diff --git a/apps/gallery/ajax/scanForAlbums.php b/apps/gallery/ajax/scanForAlbums.php index a04ad62b1b..de0b141a36 100644 --- a/apps/gallery/ajax/scanForAlbums.php +++ b/apps/gallery/ajax/scanForAlbums.php @@ -1,14 +1,11 @@ 'error', 'message' => 'You need to log in')); - exit(); -} - -echo json_encode(array( 'status' => 'success', 'albums' => OC_GALLERY_SCANNER::scan(''))); -//echo json_encode(array('status' => 'success', 'albums' => array(array('name' => 'test', 'imagesCount' => 1, 'images' => array('dupa'))))); +OC_JSON::success(array('albums' => OC_GALLERY_SCANNER::scan(''))); +//OC_JSON::success(array('albums' => array(array('name' => 'test', 'imagesCount' => 1, 'images' => array('dupa'))))); ?> diff --git a/apps/gallery/ajax/thumbnail.php b/apps/gallery/ajax/thumbnail.php index db428eeff3..f24782390f 100644 --- a/apps/gallery/ajax/thumbnail.php +++ b/apps/gallery/ajax/thumbnail.php @@ -1,5 +1,7 @@ 'error', 'data' => array( 'message' => 'You need to log in.'))); - exit(); -} $box_size = 200; $img = $_GET['img']; diff --git a/apps/gallery/index.php b/apps/gallery/index.php index c8d5892e55..87fdafcf13 100644 --- a/apps/gallery/index.php +++ b/apps/gallery/index.php @@ -2,6 +2,7 @@ require_once('../../lib/base.php'); OC_Util::checkLoggedIn(); +OC_Util::checkAppEnabled('gallery'); OC_App::setActiveNavigationEntry( 'gallery_index' ); From 3cc7212c8282d5be2d53ab3b5aa35ec6247cfcbe Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Thu, 6 Oct 2011 21:22:55 +0200 Subject: [PATCH 13/18] Add icon for calendar color selector --- apps/calendar/css/style.css | 2 +- core/img/actions/selected.png | Bin 0 -> 276 bytes core/img/actions/selected.svg | 73 ++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 core/img/actions/selected.png create mode 100644 core/img/actions/selected.svg diff --git a/apps/calendar/css/style.css b/apps/calendar/css/style.css index 5e19b88f55..e1c89326aa 100644 --- a/apps/calendar/css/style.css +++ b/apps/calendar/css/style.css @@ -60,4 +60,4 @@ select#category{width:140px;} button.category{margin:0 3px;} .calendar-colorpicker-color{display:inline-block;width:20px;height:20px;margin-right:2px;cursor:pointer;} -.calendar-colorpicker-color.active{background-image:url("../../../core/img/jquery-ui/ui-icons_222222_256x240.png");background-position:-62px -143px;} +.calendar-colorpicker-color.active{background-image:url("../../../core/img/actions/selected.svg");background-position:2px 2px;} diff --git a/core/img/actions/selected.png b/core/img/actions/selected.png new file mode 100644 index 0000000000000000000000000000000000000000..98c29df9cf5d612e21d8ab86bfa1b871c92064a8 GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y)RhkE)4%caKYZ?lYt^9JzX3_ zG$u}+w2`;PfXDUh%V`ag87mfYELA<$*tOEAF;!|LP-<7b>pLcKCZYYCKh2wa z;v~a`$$R83?%tqt+E%<_eZtzSQSld}va{cAKcF9b{p{zS;ANRf&jQ{xb%?ko_E=sz zHpAw;tBN8+fLCbf*4)|p*GqLz2Wgh3{9_SRR7xv5XZd`_%#Oad$&3!M*Ii6_obP{k zxnknWa->OKNNB4+$3NA1eR=hoEsD>-F&HiR7j%1DoQ3?}$*X0Lf6RLQlGD8MPqe*{ Xt2h5v=GtXIPceA9`njxgN@xNA?L=;U literal 0 HcmV?d00001 diff --git a/core/img/actions/selected.svg b/core/img/actions/selected.svg new file mode 100644 index 0000000000..3294f68c68 --- /dev/null +++ b/core/img/actions/selected.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + From 980a0893f0070de007d5c3842994c6720b381117 Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Fri, 7 Oct 2011 16:03:26 +0200 Subject: [PATCH 14/18] Change colorselector to use border for selected color --- apps/calendar/css/style.css | 4 +- apps/calendar/js/calendar.js | 4 +- core/img/actions/selected.png | Bin 276 -> 0 bytes core/img/actions/selected.svg | 73 ---------------------------------- 4 files changed, 3 insertions(+), 78 deletions(-) delete mode 100644 core/img/actions/selected.png delete mode 100644 core/img/actions/selected.svg diff --git a/apps/calendar/css/style.css b/apps/calendar/css/style.css index 14b7d45523..80d29ca897 100644 --- a/apps/calendar/css/style.css +++ b/apps/calendar/css/style.css @@ -58,5 +58,5 @@ color:#A9A9A9; select#category{width:140px;} button.category{margin:0 3px;} -.calendar-colorpicker-color{display:inline-block;width:20px;height:20px;margin-right:2px;cursor:pointer;} -.calendar-colorpicker-color.active{background-image:url("../../../core/img/actions/selected.svg");background-position:2px 2px;} +.calendar-colorpicker-color{display:inline-block;width:20px;height:20px;margin-right:2px;cursor:pointer;border:2px solid transparent;} +.calendar-colorpicker-color.active{border:2px solid black;} diff --git a/apps/calendar/js/calendar.js b/apps/calendar/js/calendar.js index 131325007a..87954b7aac 100644 --- a/apps/calendar/js/calendar.js +++ b/apps/calendar/js/calendar.js @@ -491,8 +491,6 @@ Calendar={ // based on jquery-colorpicker at jquery.webspirited.com var obj = $('.colorpicker', container); var picker = $('
'); - var size = 20; - //build an array of colors var colors = {}; $(obj).children('option').each(function(i, elm) { @@ -501,7 +499,7 @@ Calendar={ colors[i].label = $(elm).text(); }); for (var i in colors) { - picker.append(''); + picker.append(''); } picker.delegate(".calendar-colorpicker-color", "click", function() { $(obj).val($(this).attr('rel')); diff --git a/core/img/actions/selected.png b/core/img/actions/selected.png deleted file mode 100644 index 98c29df9cf5d612e21d8ab86bfa1b871c92064a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y)RhkE)4%caKYZ?lYt^9JzX3_ zG$u}+w2`;PfXDUh%V`ag87mfYELA<$*tOEAF;!|LP-<7b>pLcKCZYYCKh2wa z;v~a`$$R83?%tqt+E%<_eZtzSQSld}va{cAKcF9b{p{zS;ANRf&jQ{xb%?ko_E=sz zHpAw;tBN8+fLCbf*4)|p*GqLz2Wgh3{9_SRR7xv5XZd`_%#Oad$&3!M*Ii6_obP{k zxnknWa->OKNNB4+$3NA1eR=hoEsD>-F&HiR7j%1DoQ3?}$*X0Lf6RLQlGD8MPqe*{ Xt2h5v=GtXIPceA9`njxgN@xNA?L=;U diff --git a/core/img/actions/selected.svg b/core/img/actions/selected.svg deleted file mode 100644 index 3294f68c68..0000000000 --- a/core/img/actions/selected.svg +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - From 0aaa1fb64ef536fab842a9e96db7f29d2ed17419 Mon Sep 17 00:00:00 2001 From: Jan-Christoph Borchardt Date: Fri, 7 Oct 2011 16:05:29 +0200 Subject: [PATCH 15/18] added Silk icons by Mark James (CC-BY) --- COPYING-README | 15 ++++++------ core/img/filetypes/addressbook.png | Bin 0 -> 770 bytes core/img/filetypes/c.png | Bin 0 -> 587 bytes core/img/filetypes/calendar.png | Bin 0 -> 675 bytes core/img/filetypes/code.png | Bin 0 -> 603 bytes core/img/filetypes/cplusplus.png | Bin 0 -> 621 bytes core/img/filetypes/csharp.png | Bin 0 -> 700 bytes core/img/filetypes/css.png | Bin 0 -> 524 bytes core/img/filetypes/database.png | Bin 0 -> 390 bytes core/img/filetypes/document.png | Bin 0 -> 342 bytes core/img/filetypes/feed.png | Bin 0 -> 691 bytes core/img/filetypes/flash.png | Bin 0 -> 582 bytes core/img/filetypes/folder.png | Bin 0 -> 537 bytes core/img/filetypes/h.png | Bin 0 -> 603 bytes core/img/filetypes/html.png | Bin 0 -> 578 bytes core/img/filetypes/image.png | Bin 307 -> 688 bytes core/img/filetypes/javascript.png | Bin 0 -> 859 bytes core/img/filetypes/link.png | Bin 0 -> 923 bytes core/img/filetypes/music.png | Bin 0 -> 385 bytes core/img/filetypes/other.png | Bin 0 -> 555 bytes core/img/filetypes/pdf.png | Bin 0 -> 591 bytes core/img/filetypes/photo.png | Bin 0 -> 606 bytes core/img/filetypes/php.png | Bin 0 -> 538 bytes core/img/filetypes/presentation.png | Bin 0 -> 588 bytes core/img/filetypes/readme.txt | 22 ++++++++++++++++++ core/img/filetypes/ruby.png | Bin 0 -> 626 bytes core/img/filetypes/spreadsheet.png | Bin 0 -> 566 bytes core/img/filetypes/typeface.png | Bin 0 -> 813 bytes core/img/filetypes/vcard.png | Bin 0 -> 533 bytes core/img/filetypes/vector.png | Bin 0 -> 481 bytes core/img/filetypes/video.png | Bin 0 -> 653 bytes core/img/{filetypes => places}/file.png | Bin core/img/{filetypes => places}/file.svg | 0 core/img/places/image.png | Bin 0 -> 307 bytes core/img/{filetypes => places}/image.svg | 0 .../{filetypes/audio.png => places/music.png} | Bin .../{filetypes/audio.svg => places/music.svg} | 0 37 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 core/img/filetypes/addressbook.png create mode 100644 core/img/filetypes/c.png create mode 100644 core/img/filetypes/calendar.png create mode 100644 core/img/filetypes/code.png create mode 100644 core/img/filetypes/cplusplus.png create mode 100644 core/img/filetypes/csharp.png create mode 100644 core/img/filetypes/css.png create mode 100644 core/img/filetypes/database.png create mode 100644 core/img/filetypes/document.png create mode 100644 core/img/filetypes/feed.png create mode 100644 core/img/filetypes/flash.png create mode 100644 core/img/filetypes/folder.png create mode 100644 core/img/filetypes/h.png create mode 100644 core/img/filetypes/html.png create mode 100644 core/img/filetypes/javascript.png create mode 100644 core/img/filetypes/link.png create mode 100644 core/img/filetypes/music.png create mode 100644 core/img/filetypes/other.png create mode 100644 core/img/filetypes/pdf.png create mode 100644 core/img/filetypes/photo.png create mode 100644 core/img/filetypes/php.png create mode 100644 core/img/filetypes/presentation.png create mode 100644 core/img/filetypes/readme.txt create mode 100644 core/img/filetypes/ruby.png create mode 100644 core/img/filetypes/spreadsheet.png create mode 100644 core/img/filetypes/typeface.png create mode 100644 core/img/filetypes/vcard.png create mode 100644 core/img/filetypes/vector.png create mode 100644 core/img/filetypes/video.png rename core/img/{filetypes => places}/file.png (100%) rename core/img/{filetypes => places}/file.svg (100%) create mode 100644 core/img/places/image.png rename core/img/{filetypes => places}/image.svg (100%) rename core/img/{filetypes/audio.png => places/music.png} (100%) rename core/img/{filetypes/audio.svg => places/music.svg} (100%) diff --git a/COPYING-README b/COPYING-README index b0caca2ad2..49e035186e 100644 --- a/COPYING-README +++ b/COPYING-README @@ -2,13 +2,14 @@ Files in ownCloud are licensed under the Affero General Public License version 3 the text of which can be found in COPYING-AGPL, or any later version of the AGPL, unless otherwise noted. -Components of ownCloud: -* jQuery is dual licensed under MIT and GPL -* HTTP is three clause BSD license -* MDB2 uses a custom license in the BSD style -* User is AGPL -* XML/RPC is both MIT and PHP license +Licensing of components: +* jQuery: MIT / GPL +* HTTP: 3 clause BSD +* MDB2: BSD style custom +* User: AGPL +* XML/RPC: MIT / PHP +* Silk icons: Creative Commons Attribution All unmodified files from these and other sources retain their original copyright and license notices: see the relevant individual files. -Attribution information for ownCloud is contained in the AUTHORS file. +Attribution information for ownCloud is contained in the AUTHORS file. \ No newline at end of file diff --git a/core/img/filetypes/addressbook.png b/core/img/filetypes/addressbook.png new file mode 100644 index 0000000000000000000000000000000000000000..b73419ba82098bbdca1989d31fa798756c987524 GIT binary patch literal 770 zcmV+d1O5DoP)LHt}U(fC{;>Yum{xmD^Y@B5nN0h99fKm3?`0_{sl~q#>Lf`Xq^mk zkPrtoHo*|Z3nt2x}Jy`Dy+VWv$$5Q(e+JC7mM8^t0(iL(m}3r?Oq>CBlk z+U+S25g-Hs)ayudKxvr*V(ri6%46oq;@1yc0P zA3d#Jwv=Vd%^Q~uhdUw?5#qmljMYF15n(hM*?Rc9vGHS$KYP}#o8KGsA85A5J$?L5 z*MC`7uV)9h3*UUa-*A}z_>9dmBBYe0l)#gR7WI4g9iBg>J=3wbH*kCHJ4ZXOSYQ27 zDru6(55yX)S@&n6~krBum)TC;$e8swaf zMkA1;lB^Q1DT^mw z_wd1AvaF1rQ^f`GXt>pMc(a6@v#P4V>fhgb;ib1-`{@%;>^~y%NUa>Var+02W?K%X zYERjjxIaDC&rwE%l#-mYDhz}(!NW^0=wBZMH5C_+RAIVF!K23~z}<>ANUn_?}3M|H~;_u07*qoM6N<$f@;M1& literal 0 HcmV?d00001 diff --git a/core/img/filetypes/c.png b/core/img/filetypes/c.png new file mode 100644 index 0000000000000000000000000000000000000000..34a05cccf064b35701b61ba1d395048873d7b48e GIT binary patch literal 587 zcmV-R0<`^!P)~7 zMNw2LQirBVQoa8G3P(rY+l;L4iy+JwSqmy$9JlSkk z&*$^Eg+c)@!R|v4gdc8+TTn&eWHO0VD&>$!B%o;;WLf4CNs=Inq9d`xA4otCWHK38 zmc{pkX`0Y=9g3oGK{}lVy~OYL|C5lQ&U^l;wrg|7w=BcA9L4-r411?K7f`@348&rw zXD#uW)DK;H`hxO}u%=@Cj{;#u#_;bb1_KgUOT2Hp6;)MvC6P$vQP3=g1O5#aU%I!K zZ1dc@f}YvG&*Spnplm2rIp^VdA^HydZ0X1axdms2!RKi5x-SFA4p@ zC@N|PI$ryHL@t-(!zBsf2-+sYAukhDHUw!? zFisFv!T|cmRtW;1f$>$s0G>^*GP-h`H-mzTP&3`b(d;hDCL-{+T2LSiJi1S%34OTG znWn~v^Brk?FQB#MFuosf?qnt!t(A%g#tAAA`tV{p&t%~)6GMus628BV?|aP6=Lr0O zrxPn=6Fy3{fE84gngF`mQ;ZG4p#ul`mYb)mJw@Q%q_eddamvg>kv)yI#B0M!3sxev z!1s9dp#Z>KE{BK5@W%p1Kt!2cEYj2vBiUHDJ-HCTS{r%b!`Wj=!r&Tb+LFBfRN!=5 zl7aC&Ul)Foh{s4J>JU)^p9+C-Q44MR8(8|WK})8dx#e}T%`v`wFOp3_q9I1QsXihN zJVaEgK9Y|1KAJgEb`m$%VXVVh!8pM>`_Eli`}OBJfVb0i{tF{QT8%v&>u>-7002ov JPDHLkV1feuD8K*! literal 0 HcmV?d00001 diff --git a/core/img/filetypes/code.png b/core/img/filetypes/code.png new file mode 100644 index 0000000000000000000000000000000000000000..0c76bd1297751b66230f74719504b2adb02b1615 GIT binary patch literal 603 zcmV-h0;K(kP)^~*-1fljz_B$LUvK}k?BNXe#Y!m=zM!!V#}8bncK5m;8VP zw86G*RI63?Cd%b9bX|ueNlZ|wR6rj|r_)VIP@r2imh3?SN+^{|kY%~8B{maJ@F*OK z&VH9LwOeGt#DRjj0~v~8`>iO7!Ybi;zE$va`A^T#yW`y44;k^#O~K5*jD=qcUhPSc zvyy~q;5H_1WT1l~cqje9yfa+l!hu6xjdOJ8s;8E^+=QQ$tw p?%p!Hy#YapB=@+^9(46X{{RQg%9y;OKjr`c002ovPDHLkV1g7l326WT literal 0 HcmV?d00001 diff --git a/core/img/filetypes/cplusplus.png b/core/img/filetypes/cplusplus.png new file mode 100644 index 0000000000000000000000000000000000000000..a87cf847cb768acb8c600759ce433ce1bad3cdc0 GIT binary patch literal 621 zcmV-z0+RiSP)sF~CC`eaI+m%Y8jfzomMvZQaNUIT3LIrJ$h)_W{ zwF|LDNlB-g`Hb_G$;>3F$9JF3WYR|3fy2C+_wH}*xp!_4fF2UN4lt#d26oXwru}hT z0+0%Vz-l&|Tdh_L-Ng1G2*RBtBncRx;99K)&+}s0whhxXp{go}$g&Jk6k|vfypI5M z!1sNGVaV?!*L7i87Bo%cfO@?S`bajL{R<($@$|PtgBRcCGIJ_2a|&kO>G-s2aR3E4 zjssoScUa;zIdOeGHBnH13G)W-zt$kUQgNfG;96b=v&4NzRt&@7nN%v3HsG`<<+F$cumMs448N!W3r&2Z*b~D5^$^d6Jxn@SFK5Q8*uKSR7x{I|H-_N1f+AD zSYC5@2K4OKL$==F9U@CH;ONNL(W}oZICHn;d?~pw?GRIsH*x-68Oy6SuK`)`{E)46 z9^3(-HXa#X89SBv?u_YP)WjsQrp;}0X?Bxrvf12IKW8>3t`e~W9|JS<{btTNbNT@EQIWBSNJTX8AMGXD z-SsH|s#>j9Xf~VMtyT-YMD}5^SWHTY5->o`k|d#AE_YQd79j`%GMS7FNvG3b7^Vy9 zn0HYCJy5MyQLoqKnW|JOp-?D*<2V^msZ>BOv0ANd2n7t@{=V;sZrQ>3c})5_%ms4z z7!qXwHHe~!QFj8aR~&*-3F?O|;#(ESIXP~Os%|~y^7c15*q5`gz2-5ol!fU92NIGT z_ves+>+Tf3gfcL?!nimYmR}cw*|BGULzI^7!;k#3K^YO#;!+vM@N~(99+<;fdqr zYPJm+pXYFYk;neQyXXEcTQDNQx57i`Okp9A#n?<7!{#tnKJdsF>utb@JH7dU01gfL zEK2hoPZAnO5+je3&^i*hWM`qCW^vLK!O*?U-#IvXV?#6koWqrwnD{j&K`7N>^tR3G z8zr1(qVOzcF#nF1&0MZ5C$l8*E^Uth0000`ZKMgf6%T?Ed*Cat6T(z(gze_Vj!CM zy6@eO?#%UBLOT}?40F9R=iD>%#+We%%UB#s+R_AGvw8Yw4_Zs>2F6fS)&oeXpp>-P z(4Hm2FoZ|N+3e;VNHZ};&)gBvnMk6jHRTlU@9U0$Oo&egxTGs^ATns~z)sFnC~aG*pjzb8G=xt@DLRNB;YZL<4tG!V^NUq+~Mv ztN7=;N57-Juq!r;ZvU(T-}ZaSebaUsBWyIhc|_vmN(Q*NXt96)H+}<~rj;1k*-!zk~CMF9Bv_3(^PCOq;C#5QQ<|d}62BjvZR2H60wE-%6;pyTSA|c6o&@eC9QG)Hj&ExYL zO&oVL^)+cM^qd@ApywS>pwx0H@RDN}hq;7mU-SKczYQ-hnrr=;iDAQMZQ+*g=YOM= z!QlMQEn7FbaD->uKAYgo_j9)W&$$zS*W9}m(ey0q$&7l-XEWO0Y(9M=SnhLbwy;d>@~SY$Ku*0xPvIOQeV1x7u_z-2-X>_74(yfh7C znXL|3GZ+d2`3re2hs?MKbpQb1=l6TxbDZwj&S={?7%qx-u`rsG(Zp`-rh=e^=%((1yvsuf5d=&62Zj)Y zH&JviNS_F4_Hj|T(1j4$p-!}kixP9&dB4uv^MveG?dGf%sUCoc2!IFxD6wHRA2^dX zXRVk!-qSfk(jcaUKn#RP48(whfPlJUpApdrA!TQi_4D+fVoM;3I0gZ8{=Xv~Po;geVA+Em9@0Wq2 zr>OTZEGR05L=gf1T;ucCxq6Q6EgJiH@@-lVaAlQyw`jIF^c=&IVnj|95hHbE_cnt| zTzZQ?F4Ne@(bH(~&3nM%m)I@ID{@jJ2qZPjr)jhpe9hViOwH5k&|T#EmmL3(vHeUQ zq^!t^Al6JD;=mHq^Bg?J-8-zG2Od7gZbknG;K9czYjPqG*xjPo0k(c4%lPXTpw(qq z@aGMnxtFS(np+2kC} z7P02O874ZkJH$v#nCUVx$({yDN`IX@o2wyvTD#e`qN`_w5<}$3F+_OL3{+!MJa`3kv~Q#QfQ%c z)1s}QE<_XaYBG;IuRF=td#+}fi4h(6HgoUyJLi0t(*dA^B)%@8kkG&bdM5P5^Z5WF z%d%>m^SbN0XeV)wbUOXn5Ag#A$gJx+7-OCkMM1S%MWIlTkbFLmOeW(&n&wUd&;`>p zVcRy$Z{K0=?SpNnP^;BYEEXleFbq(UY&LrXX$6qkJ~)8+b{=jj3HEXds;Z(?D%}}L zX3`39&dy=Zyar!ehA}e>w)(*vrCct{PI9^2Jpj&OZS8<3-@{0(gNv%1{)zAiLY+_^ zl}e>Ofd4&#Irj#7>=o=Uhv5IJ@?sN0^J|(WL2Uun$4}si6}TG-s3T#p&6GE<<2W)O zf{^Y2HlO#*QDvTp3v&d@;8*}aUC4lisG9(w7@d5Y8y)}U#FwCkqp*Mcgme4{&gGRf zlBfd`nF9cQBKB2_L{F8G2)7pAf$i)Ds`|}-c>pc^LRW{w4SQ)3N^BbZx)6BlCZts! zKph%`(m#xg-q3I7=(us;9<)*2%iuQ1J`oV3gU6V~T}^JU5714JN33&GwEEru0d}Uo U{MPL+lmGw#07*qoM6N<$f^vibe*gdg literal 0 HcmV?d00001 diff --git a/core/img/filetypes/folder.png b/core/img/filetypes/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..784e8fa48234f4f64b6922a6758f254ee0ca08ec GIT binary patch literal 537 zcmV+!0_OdRP)x(K@^6+>g^d@v4;gkbWsEoXE%32*i1tcpTNXd5CcIl)ECgqz|2rE6EW}s7R?kl za1q`0GCkMruC6-2LANtwVlsgzsp4?{@7$`KBv!G66>Vie3h?3OmEEkjwdLG0PgLVi z`!N((f$A@n17Ldj#`};0I3@iHJ5M{#IZz|UIYRm4(!uV7eYIYIwQf&}_2J~}>pQ^n z6o8--^T(=hkBNQ_k{-_GWE;FMW7!p}f{NG3nHZ{D5<3d8&tLh%a4AqqnjMkr3m&fkMdECD3N5}Unig5wy40;>lo4j~k+e}v)` zR6)J8Mk*u=SpB`p6o)7j?S0T@9?bz#m@l>gc*zk__|*!FMcHwP!gwLJvS~9c0px8E zWHyRc>}g~)F_Qn`A>)C_iwK%Z zrIJ;xR)UI1Y4Ozts|-Nho;q zVk9-bX)%F~!;63iu$Fk=VJn3~fmb5S@@)ZqjBT2{f`vT`b2}zxb0$o;EF@G3&BHK^ zc)`1kUzo^Qkk$?KFKHNBD?nP-MJ3b@&4fg;g5l2wMi^g?9qj+~@b;62o_U1_S1J`g z7m^UMg25FX1MJ5AQxAJ5F5WDt=$=-@JV-!LHA2vuxl9kN>PS8x??^AINH6LjF*#nbk4}=n3gfWp$kEX5IpHS zYiQ{@d7Nl&d$#+7-TckP&Q}N91e-dis)>+`f+#3Rv=dSV4I&~|Vk?LiBG~#L1X~NSQGbAyogj#ie_$n8 z*oYwUieR#5zw>=_v)By?+NE%sVPM|5yzfjE5$wfk_Go)9(A<0e{hvFiJ0eb2MFf%t zDJxl&RDw>Nl#~WweRba-&_F#fn|ifCG!S=00#QfIDe64k{5mZFusu=CnSq>Qvt$j5 zI$4b(K~|@Tvozn3#yaJ|Be;BKfh@+AwFR!7UF7D*61OfavvGQ!VN-Ga+zO*%#qEoS z8E0dX4NpRyRS|XCrXq{e4r(61{zg^7gBPDUwmjg}k(Q%NLkD6fm6*tZ=)6^ARRw9CNHr!!-b)EovamKwdDMpr>=!|-tf?S+boQE&JP}G_9P5@nR zSOjlBPI$jHA&U_KsTjQko(uJ_ROpKn!K^ckXTHmZd+_Mh7C&~BUYvvb=Xi2w6%i+L zP+hwJF0QUE^66)$h?CXHvdjEbu3a_69GS^`e5Gac*$0~K9VHcGVKhe>RE(rT+Ca5J zv_?D-3(OpKFrQAl`$E;pyKkaTN=V?@iK2u!kqwFy=F?aM-2b}R>c4;EZ`t2+*gqpJ QK>z>%07*qoM6N<$f@8}2CIA2c literal 0 HcmV?d00001 diff --git a/core/img/filetypes/image.png b/core/img/filetypes/image.png index 980a7c6981311787a5c33102fb23d0157103b65f..23a37b891c2f5faa3b8128d45373ceab794ca609 100644 GIT binary patch delta 663 zcmV;I0%-lS0eSaefwW^{L9a%BKPWN%_+AW3au zXJt}lVPtu6$z?nM00KfuL_t(I%Z-!GPZL2HhpPuK-Z%&*VvPTQCMYNM;KiFUp1hzJ z4<00ugNX+;F_8q6P)phN?SA$Hf9`DT zrp7ih$#a_dJu~l{d2KeEZJ$AtLGyn&V6YQ_trEJLbX^yU#o|_}R6;e3eK?&?M>Ppu z%`_~_G89Fz5JeF@&m)yenG%lU;BvW4iMOY2Z*cUeZ?3n&ZVKoDP1BIi=b@+?1Vw`+ zNe~19>2%r@sDG*oddb7Sn*-6=s}V6Vf?3Bw#S+kPLevmWs#s)Yu%d!oE{9AeW0j(c z3H)H}(8vTnj~~a&>w6rQz$gPzqGNtj#ruSeFeh835JJFiM6vp@6M5bXj%k7CMt%SI zwfbF_fD-3*Os`9Ly_Q3WQ_SX33E{pX9_WIeeTCGQ3x9ahzMmPo(oknLu`F20YVa)c zaDU4pDdo*qi6n-#K(`qtOBeCx-U*yKwEL`)+wqUU9~Uqd$-uot@RKAF4NqZt`n>V% z7Z6u28%;Zm^x7x<`4@i+VnoGoIEleU7E=KRe(xB3?)#V-ID?q)B!Z8QVU?LMFRCgC zZRXJTVSfX5Ul83x&*7h60GkMdS$GQ1-P4H9^_xAZDac5=5e}hacoMzd2yQ(N;#|jD zwDn9P#jc}JD45g~P}*)kKx@|sE_FUbOZzBV@66yG^WAJ_nOcHhwdSA-TQpNS3rCD! xsL+k=gpIQj9l%OKBb97poXgPBZ!8Ob1Dc_^P7uV6GaUc`002ovPDHLkV1k9NEY<)3 delta 279 zcmV+y0qFj)1+xN>C4X~5NmK|32nc)#WQYI&010qNS#tmY4c7nw4c7reD4Tcy000?u zMObuGZ)S9NVRB^vcXxL#X>MzCV_|S*E^l&Yo9;Xs00026NkllNl`N)27J|RHRFcf&~&qu73jQ-qSngoI}fq?Wgbi zON{YYf*513bzP?)fidRHITv~CJ0XNqwm?c*gaJS)b;t^csD@7_5eQKgurFvX;GDM! znoszD0TE$YmU{^r$8p#dc<-l@fQX)-cal?i!genqwAR5|dn*aLt_xYgJkM7Ex+3D? dy$1li0j3HeP7ptEM=<~Z002ovPDHLkV1n}2X#4;G diff --git a/core/img/filetypes/javascript.png b/core/img/filetypes/javascript.png new file mode 100644 index 0000000000000000000000000000000000000000..63fe6ceff5bfcedb9670279d4bb8d25807f6ecee GIT binary patch literal 859 zcmV-h1El5>jf6w4x#gTU%_MMNlkNp$oSbvBp&uHw9M;u0-4@=t5BI zP6Hx#-C_{5RMJ z0_P+Xkumexn8%)S+Y)#l(gR;YJP<6#1-=jjK0LONWPdJQIR8uK1HpvVIxBIQ2ztt+ zqoEx_X9S%QGMe=~(k#sebCL-an)%CR%a7YtUOQUgv+G>~?N~XSWhx=? z@$fx}0MB;$`JWcQ-Re{XV~5|{DvU(#*+NF*g)j^qk#b~G9_O!i*y&mZVZ=a3;Go(K z`DkskYn56Nhu+k@1Ke*uY|x zI&k6j$JfNe_a{GH%=n2rZOz$Z8R9V?Pe36hIk}jo+A-`;dt9vyvBu#Xm@veu&@v`| zzt%mwc_$nd0-sMVx2d)b0!MqGxmfCumx7yB#nIUWvA{!HOMfslMyW1iV&nY>zxwyj z8^JfLN|kT z4m^Q1mhO(_r4w@`V?H=YNkOf(i&bHT3Auc3bryK1_{hDSetLoLN{VLB^78ULiNFy^ zkUqqG$fjVkJj5tfWkOn|P5`HVEp5@-mGnc0wvJGHC=+39MC2TWT#i?t*~fNch*he_ zgtS^8dH$(KlW)EF1b4Fzv~?&0IQaNdg;W5&{t&Bmg9&N1-rBBr_;Rg8ekw^mn;@T# zlS{|Rq+-Nlg18i%UY;i|q1NnSwf>I@85#4U4002ovPDHLkV1mEDi4_0< literal 0 HcmV?d00001 diff --git a/core/img/filetypes/link.png b/core/img/filetypes/link.png new file mode 100644 index 0000000000000000000000000000000000000000..68f21d30116710e48a8bf462cb32441e51fad5f6 GIT binary patch literal 923 zcmV;M17!S(P)A9)b<7tX~vT z$e)FfZ+`X4_uKyq#wJHC;J3lH{lhQkUc~Wid;*pnjhM12xe-bPByd^xuQ9zgeM^Mm z*tc)|P}LtTnHXr@Gkmmbkg^O2bqyhO>LP|qjIwW2@Di+4EuKm~&tOO2!N3o{128Hl z9v%fgerM0C#)7P|PMvxr*!Gf?eGA8f{OT6fS`9l>LQCg)p=~c$Zr|AT_0+_?F*JJk zlapOT2Q(wWx-LMq(TxXxLn+U;!LV)MhNp~ommdh+fo8T*&g-yQbbG&ze&=>tC(Ar=&^1xlA;Jc(6 zcCi_xs8k}-S&#ONOHm%e@#nGC7F++8C~r29Or!_{(QGQEG)+O^J1BCPmgM4JAzC8I z`jS9bO>|}Jq_#$IRzp0d34>)&3L%7MN)eTv!0B!^nn}f4z2*vFE@jv3dn zG>H)u>FR7_d2JcsjvfZ$vkP~xik@T^(_N)nx=tqJV+tQjQ`owJ83bf`zX6Ear*=Mhzn5QUuXE|v zR33Qyi8G!0{H2r##d#6R6YmYbZz4NTssT;cXiGb6lxO+k@{ba@2D~*hKDY6N;Bkh> xhhCRLejsJkAIT{5sICHcfU`5>bKmUb{{y)0nR3PMMxX!y002ovPDHLkV1nl+t-}BS literal 0 HcmV?d00001 diff --git a/core/img/filetypes/music.png b/core/img/filetypes/music.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b3ede3df956f8d505543b190bc8d1b5b4dce75 GIT binary patch literal 385 zcmV-{0e=38P)klCE>?a@fNhGaV ftv%qM$TQzJ6;XjO8erVL00000NkvXXu0mjfw}q7O literal 0 HcmV?d00001 diff --git a/core/img/filetypes/other.png b/core/img/filetypes/other.png new file mode 100644 index 0000000000000000000000000000000000000000..8443c23eb944cf8ef49c9d13cd496502f46f1885 GIT binary patch literal 555 zcmV+`0@VG9P)i3lOYrtSl@<#7b-w zf}j{s!5HvocfT|9z82@(O@vrwU^wRt=bd>tXQpGD!`Kvuv@XEI8~tgUP2L`{+*)U@I@ zrVtr5X14??iAF(=0+k>q)v`Scm$9&=i`*knBsnaUVL1>ti*O1xfzmiD$%Md-h*6M( z@*iB)icu3eU424Ok{kp%Y!1dvp%f0`ac9vcupx^$vU0xuKpJcBvej0UYk%)EV>mIx2hV}QRf#LX^Uh(%`7hZ~|KEf#uQ31s002ovPDHLkV1hgQ{`mj^ literal 0 HcmV?d00001 diff --git a/core/img/filetypes/pdf.png b/core/img/filetypes/pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..8f8095e46fa4965700afe1f9d065d8a37b101676 GIT binary patch literal 591 zcmV-V0~O9lw>B8WRlD)Gm}Jrz31u-X&&gn2lvjs=i{7nIaL6v2==uw+8Lcs(8j27 z;|c`rmSv@Lx!heopGP^^Ieb3f=R!%Lpp$}iMS-&P3EJ)s48wrJ_Ni0~k|c47D2nj= z{jS6bt|kFpFf|p5cM`_&0Zh|`rfEp0(}=}lT#(6RpzAsUfxv^LSYX>WlAaN$>)*J5 z0#sE+JRUD8iT9*fz{)_^7@6P&!sEjTcD+I9Z4YjT1`wH@fV{cEvneYGFU%maIEU2s55&K(LixD|{p-uiS@?KNj zk-Go8G$hH6g002ovPDHLkV1hVj1#|!a literal 0 HcmV?d00001 diff --git a/core/img/filetypes/photo.png b/core/img/filetypes/photo.png new file mode 100644 index 0000000000000000000000000000000000000000..4a158fef7e0da8fd19525f574f2c4966443866cf GIT binary patch literal 606 zcmV-k0-^nhP)Q2rnAt>LM%-F zK|rtwgcU)}7x~z1Hrcs5bH*ZO$!>xO8K#?==bZPQ_ecnV>#P`H`QzGaRhd62G_&rC zTLU$c7_x*nFP_dW#Q+*);mMHE?j)HexK784D4x9l_tfpz2$@1y}9rkF+ zI+J5NMWeZyObc!d+rUc=>D+uOdAOg#%+Ej6h+wn5^xPmVVH*Eu446Y0A_@ zo$rlds-+sL10DbvYep8SaFV10Q$h+;hIUPX_=v5b}%>Tm<(&j1&5;I!55C)oN0s(P%ZB zP3Q#ahfpXKWF@S?jm4U#fv)QovMhrriclyNs6-G12#3R##4PSZ0VY(dRWJ;Lwuq{# zAW0Gwi$yA^R4RZ!;W+L`f&%x{=D^VK#BBWL4Ys{;*!A7Q;!=dN<&D8*GzGaF4`hV4 zDbY0{NrMX>ZqF=0((gR5-zL$kC*b)!fwu{Euru|XrG<$^n#@)7i_>rCmRxnDq>$Y%gJaCkRd|tE*a2x05Pe!I^e13o69#&RQZ36s0 zB=O|K2Yi(jsMqThn}9t?f5E-)L^naZ+db$&%M$!bCdm=jv7?t_lB?3&%Ltq(>ESw? c;MI421LCcoDG!2@;{X5v07*qoM6N<$f`UZt7XSbN literal 0 HcmV?d00001 diff --git a/core/img/filetypes/presentation.png b/core/img/filetypes/presentation.png new file mode 100644 index 0000000000000000000000000000000000000000..c4eff0387d5888c638ba09473ba6d2369f7b56f0 GIT binary patch literal 588 zcmV-S0<-;zP)HU2HvUSp%6 z*n}iP63IK?dpo;h@sj9~pcxo;VVTc-XLiP@DgefqE#NE=@oyUd-&HjLpsLIuSFXV-EMck)oQ(A`s%*^&wf0(rNiNHsU%=0Rw;WC z(kbc37l6fo`-0uR!pYkYv8U^3?nsh^@pw!K0TH3uYyx1_2>|JbXPmfskJ|1YAw9w! z9`N)1^Aesr;y5Nr5-ODn)oOL|CGi}f9!&iVwpK$khlIX10X$H6^A_stBJqvLhU$?V`QXqKme*s~gVDJ4A;LTs_e15jhc1;By a82kqHEPVYFAD2!50000ZS(e|#C2>JN4>y}l*tQ*E7zP@R2CCJnkW?xa6bgk%(hgtZ z0=~d?U3i`+Mvi4!&~+WPT1^NX#{u6&QIx+DE(oR{&T5&-ovF?@wGw)P&AtpHZa|G%V*GUUqL@@!d4V$`8=##4)ytY959JG zdc&Kho)&AL70^i z!PEmeeDWCB-UbK(*4JST44^tV2z_J(dn~+vBMJT97_7rzFio=~XczIv?PQ5$v%u~y zu(bteXb5I1h2zCV{Jc2~V{{yzZipgsP6;k264$*#5q?GzCm|CPa9CKqm4b116h3Pu z?+%Cm52plC8|5P0@igf2GV1KkCfk{Zecu=G@VNrf>s%g9c5D%@cfxVb6$nY`1IW=4 zt10QqSps_2JLp0f3I0j0u>#qA;v!+T))KEbCg|mo3q0pG{OR}p0fPds8+K~d>Hq)$ M07*qoM6N<$g1S2e3jhEB literal 0 HcmV?d00001 diff --git a/core/img/filetypes/spreadsheet.png b/core/img/filetypes/spreadsheet.png new file mode 100644 index 0000000000000000000000000000000000000000..abcd93689a08ec9bdbf0984927e8da06c043c7cd GIT binary patch literal 566 zcmV-60?GY}P)>q?GuNnCdgP^*Bj5V_b?dAq2Ppn9^MBB^YUM zad0N-T{Ujg*A6d~mYV4na=hT4Nz+_}SGTgW|Iir!%$ z;@OGkWI6+j0H}~K4RYR%!7y|zM`O@*K>rL{*&}x3lR**HrMXC1->#slU>X|w!U1xQ zqc%S8Yz4}?d^ZEOv#Sc!)mtIgHXaEQ+_ullV zJO1Y8v8UhuAAS7ozvIlitK{;}YszGvVI*jPQs)gu{RuZGF1qsJqxF>Ai*mOY zeUVJ^Xn04=g+vNN2-6q_7DHe6!8fa@! z^ZEB_2Vebf-umoI@{HTtK!PIfdyIp7Zk$|p=*|D=N%#IIE_w1_EaGe}ST5wWclgx% z|Fx4ZY{8likTKA?G12oM|4&}@o+);3yYs=L?ao)At-(S*$63Le zJ&q^>ZEbL?y!O>L=h9<7rvvdA2Do?L{p8zs_rGt?o&P=^cm5ltT|5S~l@laqmU8i; rSIv!oK>XjU`o@3v@@qdCD9z3Q7_5=EFk?|V00000NkvXXu0mjffa;^e literal 0 HcmV?d00001 diff --git a/core/img/filetypes/vcard.png b/core/img/filetypes/vcard.png new file mode 100644 index 0000000000000000000000000000000000000000..c02f315d20749098a50e79bd9525eed3cda7be6b GIT binary patch literal 533 zcmV+w0_y#VP)~%#^24dF_nR2<@_W67)1?cUEu^twUb)isDIFhhds}=iK3R>bPJ|0e?$zQO{gfSb6 zAmw}l&+|y1)FDbOh~LB|8AsbZWx#U1r$+A&&@Nx#xl}^&O@y|4t-qIL8GGyFgudOB zMUBefj6^S-TgKXw9~(9fXO}l9u&h~_&1U!^@!0B?~s|2G5wL<6_)Q&2rqn4Ysi zYDkz=-^k9mUKoqT&@0!tb`xM{bJg4sMG?(rlN1C@+IG7gZnyh)fD-9^wOWPO>qRga zgu~$&m^wiaP%IV^2m}y`M05a#41+*G!W1YTk2ASkP8&9ThNn^~CX>l%T{(BmzyFOt XHe4|Dt4X literal 0 HcmV?d00001 diff --git a/core/img/filetypes/vector.png b/core/img/filetypes/vector.png new file mode 100644 index 0000000000000000000000000000000000000000..a1291c2dfad75b289f88ab762a3a32ccb436c1ed GIT binary patch literal 481 zcmV<70UrK|P)SXcnW4?r|Fc?Kd3cm$;%kZi#G`Sa_VnwmC}YZ26Y zhXbnt^XAQKXm4+SUQ}H6r(?sz`|0x@O--EjU}EI72kk(5e$=!F(*t|%| zOO`#}*s$)|C0u^?YPrGY(Rf4Gt^S&sOU+enjCclWzS^+v`E5dh=Tv=F*rDQzDn?3c zT=(o=$L8ms2^j#wwxyStFa(R1K0Y&H$BX|!zZw%`2!=rX%m*7M?R@p$v*kt(Sq6Bw z+-#h<WO3(`_cf+b25@DJ#zdQm}8GzWtq2-QnZ8W6mB^kfeK5f%S{ zUW%tGMCwrwic~ZrQcG=4f?5bkV+3dRk8hw6bk~y$KX#b!y*J4EJ~>;dRASqrSu;ZpM>?P}K~6AT zWv6Dmq?v&9LdXC(m%WCO6ma_di$R(v$@ad_>@R41N3N5lSJq9@6CGhX84-$%Xrd_6 z;){?{E|Ytt5$S-&Au>t4wDlIxdkfe-a22LMj``McG};r8@{GsRPm*+8fFey6C)@ifDBXVyTw(N@Xd41b45OFg6x_QA zpwLiigyy~cVoPxW^r~C7ZQpr%>1$*HKmv~AY-qJw4;gUecS--wnqslISSS=^KA&Ic n@BK|Onfz#3R%n{$a)0j^sqv5F(1NTL00000NkvXXu0mjf3S}fX literal 0 HcmV?d00001 diff --git a/core/img/filetypes/file.png b/core/img/places/file.png similarity index 100% rename from core/img/filetypes/file.png rename to core/img/places/file.png diff --git a/core/img/filetypes/file.svg b/core/img/places/file.svg similarity index 100% rename from core/img/filetypes/file.svg rename to core/img/places/file.svg diff --git a/core/img/places/image.png b/core/img/places/image.png new file mode 100644 index 0000000000000000000000000000000000000000..980a7c6981311787a5c33102fb23d0157103b65f GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4pG^F z_byvMo8x@CVF5hVQ?2M&&dbpRJVGrXnE=5240(V28+ZjAv{an^LB{Ts5gmi0A literal 0 HcmV?d00001 diff --git a/core/img/filetypes/image.svg b/core/img/places/image.svg similarity index 100% rename from core/img/filetypes/image.svg rename to core/img/places/image.svg diff --git a/core/img/filetypes/audio.png b/core/img/places/music.png similarity index 100% rename from core/img/filetypes/audio.png rename to core/img/places/music.png diff --git a/core/img/filetypes/audio.svg b/core/img/places/music.svg similarity index 100% rename from core/img/filetypes/audio.svg rename to core/img/places/music.svg From fa72f1c3cc0f2767be68717c6b0fb8aa3143cd34 Mon Sep 17 00:00:00 2001 From: Jan-Christoph Borchardt Date: Fri, 7 Oct 2011 16:18:47 +0200 Subject: [PATCH 16/18] some icon corrections --- apps/gallery/appinfo/app.php | 4 ++-- apps/media/appinfo/app.php | 2 +- core/img/filetypes/addressbook.png | Bin 770 -> 0 bytes core/img/filetypes/file.png | Bin 0 -> 294 bytes core/img/filetypes/presentation.png | Bin 588 -> 519 bytes core/img/places/{image.png => picture.png} | Bin core/img/places/{image.svg => picture.svg} | 0 7 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 core/img/filetypes/addressbook.png create mode 100644 core/img/filetypes/file.png rename core/img/places/{image.png => picture.png} (100%) rename core/img/places/{image.svg => picture.svg} (100%) diff --git a/apps/gallery/appinfo/app.php b/apps/gallery/appinfo/app.php index 5760bb149d..8f855c470e 100644 --- a/apps/gallery/appinfo/app.php +++ b/apps/gallery/appinfo/app.php @@ -8,7 +8,7 @@ OC_App::addNavigationEntry( array( 'id' => 'gallery_index', 'order' => 20, 'href' => OC_Helper::linkTo('gallery', 'index.php'), - 'icon' => OC_Helper::linkTo('', 'core/img/filetypes/image.png'), + 'icon' => OC_Helper::imagePath('core', 'places/picture.svg'), 'name' => 'Gallery')); class OC_GallerySearchProvider extends OC_Search_Provider{ @@ -17,7 +17,7 @@ OC_App::addNavigationEntry( array( $result = $stmt->execute(array(OC_User::getUser(),'%'.$query.'%')); $results=array(); while($row=$result->fetchRow()){ - $results[]=new OC_Search_Result($row['album_name'],'',OC_Helper::linkTo( 'apps/gallery', 'index.php?view='.$row['album_name']),'Galleries'); + $results[]=new OC_Search_Result($row['album_name'],'',OC_Helper::linkTo('apps/gallery', 'index.php?view='.$row['album_name']),'Galleries'); } return $results; } diff --git a/apps/media/appinfo/app.php b/apps/media/appinfo/app.php index dd1a830a94..475a33500f 100644 --- a/apps/media/appinfo/app.php +++ b/apps/media/appinfo/app.php @@ -29,5 +29,5 @@ OC_APP::registerPersonal('media','settings'); OC_App::register( array( 'order' => 3, 'id' => 'media', 'name' => 'Media' )); -OC_App::addNavigationEntry( array( 'id' => 'media_index', 'order' => 2, 'href' => OC_Helper::linkTo( 'media', 'index.php' ), 'icon' => OC_Helper::imagePath( 'core', 'filetypes/audio.svg' ), 'name' => $l->t('Music') )); +OC_App::addNavigationEntry(array('id' => 'media_index', 'order' => 2, 'href' => OC_Helper::linkTo('media', 'index.php'), 'icon' => OC_Helper::imagePath('core', 'places/music.svg'), 'name' => $l->t('Music'))); ?> diff --git a/core/img/filetypes/addressbook.png b/core/img/filetypes/addressbook.png deleted file mode 100644 index b73419ba82098bbdca1989d31fa798756c987524..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 770 zcmV+d1O5DoP)LHt}U(fC{;>Yum{xmD^Y@B5nN0h99fKm3?`0_{sl~q#>Lf`Xq^mk zkPrtoHo*|Z3nt2x}Jy`Dy+VWv$$5Q(e+JC7mM8^t0(iL(m}3r?Oq>CBlk z+U+S25g-Hs)ayudKxvr*V(ri6%46oq;@1yc0P zA3d#Jwv=Vd%^Q~uhdUw?5#qmljMYF15n(hM*?Rc9vGHS$KYP}#o8KGsA85A5J$?L5 z*MC`7uV)9h3*UUa-*A}z_>9dmBBYe0l)#gR7WI4g9iBg>J=3wbH*kCHJ4ZXOSYQ27 zDru6(55yX)S@&n6~krBum)TC;$e8swaf zMkA1;lB^Q1DT^mw z_wd1AvaF1rQ^f`GXt>pMc(a6@v#P4V>fhgb;ib1-`{@%;>^~y%NUa>Var+02W?K%X zYERjjxIaDC&rwE%l#-mYDhz}(!NW^0=wBZMH5C_+RAIVF!K23~z}<>ANUn_?}3M|H~;_u07*qoM6N<$f@;M1& diff --git a/core/img/filetypes/file.png b/core/img/filetypes/file.png new file mode 100644 index 0000000000000000000000000000000000000000..8b8b1ca0000bc8fa8d0379926736029f8fabe364 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-&H;pyTSqH(@-Vl>|&1p(LP>kg~E zYiz5X^`c$+%8#zC{u)yfe-5 zmgid={Z3k(ERKCKrE7DF;=x4^O+ pzO8rLO8p|Ip=x)jHOtWj`bJBmKdh_V<`47(gQu&X%Q~loCIFbEay|e6 literal 0 HcmV?d00001 diff --git a/core/img/filetypes/presentation.png b/core/img/filetypes/presentation.png index c4eff0387d5888c638ba09473ba6d2369f7b56f0..b4aaad9a45c9abbee2d47611a6963101b64a8023 100644 GIT binary patch delta 440 zcmV;p0Z0DK1cwBWS$~;HL_t&-8KuF`i;ZC%#^KNN_Mn)f%tDevel8Uo4J*k?DQ0aJ z^A9LnrL3%3C~WN5$YQc$H%pW$gGLQyL1JpkIcMJYd*7ZXj%HzMG}o1Evk{qM>h`NE zz+T`Ka2#w*LZ)dFO#(?MSlX1maAeQ+6Ubb>cr;;~%eP+M^?!f5`RI)cGQXXsxIg=y z5wo`GiE-Y3S{hPhDtQ-w9NM{sDkc8u-IpO%f6#8G$P~7>QW$vub;x=+B2i=t%b8+& zVx09-h$>T9P85^ZpD~b-VdlnJ&fhynuh&Bol8{71@OWwlE2uJsC8}@zmNUn8GxOpz zRj)V3!2|oKY=2{m*K_k!?t-eJuuQc)2wIz;!;UIKBoeE25mZt~l_`=$H5|6|+aLxl zl_YEf1{>Q%7gX+6s4|5yBQ}3^T_6XQZDbP)D!Ze~6zXIkQ9PYpWTZE?jfD>%Y1@{S zwk5itNez`{Q)G&e7J>b9cP_BngG&!ti|rp2nJV;T@-f=;!?sT%?T|XKumYc0NZemuCP!{KnLBw#02DSHvpDe1=-fW?3Ng5AEt$=eUHr|W3$NRou{cuWWZ z5uw>^0$|k%0DtL+XPmfskJ|1YAw9w!9`N)1^Aesr;y5Nr5-ODn)oOL|CGi}f9!&iV zwpK$khld0mrhJP0SsGJ2%QK?#~b*9`#}2tLg_ZGie66CL#xbVLc0R9ACGy zg;F4R?|%VdonY_%5#Y^V>wJE;&UQ@&9vJ)v^(=h-6CamO00000NkvXXu0mjfs-Eoo diff --git a/core/img/places/image.png b/core/img/places/picture.png similarity index 100% rename from core/img/places/image.png rename to core/img/places/picture.png diff --git a/core/img/places/image.svg b/core/img/places/picture.svg similarity index 100% rename from core/img/places/image.svg rename to core/img/places/picture.svg From ab5e26dd32ad4ca81a8379e911a475a0fc991f8f Mon Sep 17 00:00:00 2001 From: Jan-Christoph Borchardt Date: Fri, 7 Oct 2011 16:30:37 +0200 Subject: [PATCH 17/18] renamed icons --- core/img/filetypes/{music.png => audio.png} | Bin core/img/filetypes/{typeface.png => font.png} | Bin core/img/filetypes/{calendar.png => ical.png} | Bin core/img/filetypes/image.png | Bin 688 -> 606 bytes core/img/filetypes/model.png | Bin 0 -> 452 bytes core/img/filetypes/ms-excel.png | Bin 0 -> 566 bytes core/img/filetypes/ms-powerpoint.png | Bin 0 -> 519 bytes core/img/filetypes/{document.png => msword.png} | Bin core/img/filetypes/photo.png | Bin 606 -> 0 bytes core/img/filetypes/{feed.png => rss.png} | Bin .../filetypes/{javascript.png => script.png} | Bin core/img/filetypes/{vector.png => svg.png} | Bin core/img/filetypes/text.png | Bin 0 -> 342 bytes core/img/filetypes/{vcard.png => vcf.png} | Bin core/img/filetypes/{other.png => x-.png} | Bin 15 files changed, 0 insertions(+), 0 deletions(-) rename core/img/filetypes/{music.png => audio.png} (100%) rename core/img/filetypes/{typeface.png => font.png} (100%) rename core/img/filetypes/{calendar.png => ical.png} (100%) create mode 100644 core/img/filetypes/model.png create mode 100644 core/img/filetypes/ms-excel.png create mode 100644 core/img/filetypes/ms-powerpoint.png rename core/img/filetypes/{document.png => msword.png} (100%) delete mode 100644 core/img/filetypes/photo.png rename core/img/filetypes/{feed.png => rss.png} (100%) rename core/img/filetypes/{javascript.png => script.png} (100%) rename core/img/filetypes/{vector.png => svg.png} (100%) create mode 100644 core/img/filetypes/text.png rename core/img/filetypes/{vcard.png => vcf.png} (100%) rename core/img/filetypes/{other.png => x-.png} (100%) diff --git a/core/img/filetypes/music.png b/core/img/filetypes/audio.png similarity index 100% rename from core/img/filetypes/music.png rename to core/img/filetypes/audio.png diff --git a/core/img/filetypes/typeface.png b/core/img/filetypes/font.png similarity index 100% rename from core/img/filetypes/typeface.png rename to core/img/filetypes/font.png diff --git a/core/img/filetypes/calendar.png b/core/img/filetypes/ical.png similarity index 100% rename from core/img/filetypes/calendar.png rename to core/img/filetypes/ical.png diff --git a/core/img/filetypes/image.png b/core/img/filetypes/image.png index 23a37b891c2f5faa3b8128d45373ceab794ca609..4a158fef7e0da8fd19525f574f2c4966443866cf 100644 GIT binary patch delta 529 zcmV+s0`C2=1>OXZSbqWVNkl_;`hbl;!rvgKv(U;yEKL4EK(Gje6+z7x`PghW*||G&#v*3PZh{CIrkk1P zocEpgNC<)JtQcVVHE? zj)HexK784D4x9l_tfpz2$@1y}9rkF+I+J5NMWeZyObc!d+rUc=>D+uOdAO zg#%+Ej6h+wn5^xPmVVH*Eu446Y0A_@o$rlds-+sL10Db*u9bN(H64VnL;o{Gkp3&h9kTFWDJxn0M zs>eEyNQri-XCInt4_T#MQr494#Gu1 za)a^wK0nu1sFr^t-jj4jxi!5&IjiGU`(n}8!TR1JUVjy@${oAQ+{A4ZXl!ot>G&0T zq^K(Jd7y(35a99bQtu#|Ipn0hN4EKu+QUWWqogmH=RU>&az$Q!Ud88CY;F3AJPw$c zCDKH@m3w0kK;$nfobOAIohyhV2|Yk5mUr)08gqpYGygN3aRiCsEr48ioc{m@Z`zZu T6~w;)015yANkvXXu0mjfVut&` delta 611 zcmV-p0-XKc1h55=SbqXSNklBC|FWxu^CSr{LfF>v>_29*uF`m4j z7Y`mJk%Nf`G%=9`lu%3BC?uc|L=?3aX@gLRAD}7SR&7$03I%D{?Z?>N?SA$Hf9`DT zrp7ih$#a_dJu~l{d2KeEZJ$AtLGyn&V6YQ_trEJLbX^yU#ed>fsZ>HWjD0wrPDeEf zUClHs%Q6&2u@FTOJkKMQN|_Rl%jI`A|B|1o_&SXmkW5(zMmPo(oknLu`F20YVa)c zaDU4pDdo*qi6n-#K(`qtOBeCx-U*yKwEL`)+wqUUAAc7x7RkW9MDUX&5e-jadHTHZ z>=zJME*nidjP%+k{P`Du3t~jYa5#y-oU$y3-3R^T&ISWUO xU#QTH?Szf95*@%wK_iuHW1P#-(QhmZegm4JxlY85GaUc`002ovPDHLkV1fd&91s8i diff --git a/core/img/filetypes/model.png b/core/img/filetypes/model.png new file mode 100644 index 0000000000000000000000000000000000000000..7851cf34c946e5667221e3478668503eb1cd733f GIT binary patch literal 452 zcmV;#0XzPQP)Pdwe5?6tW?r-ok|b$oDQj8FV%kZPq;(MWOV8?8;<)(iP}>hNMU> z7fbz%jjlr7h8uuoQ~J6}n}@Y@PdTk=)PxO{%7zmL?dchpZX*~n;I{!C>*(8cU;q(~ zAS%Po_@naEU!xidrBXD?;hN|x^%W|Ij)0y*r5vi|?W&Fub(NqJ@z0o=O>q?GuNnCdgP^*Bj5V_b?dAq2Ppn9^MBB^YUM zad0N-T{Ujg*A6d~mYV4na=hT4Nz+_}SGTgW|Iir!%$ z;@OGkWI6+j0H}~K4RYR%!7y|zM`O@*K>rL{*&}x3lR**HrMXC1->#slU>X|w!U1xQ zqcl0tqi6&npJ$x10^Z5HznC|jkhtXU{*?AXX+vSK$&lqrKo z4P`-MYRWlh-uHXoo+plGVQMtjm29&SnPTept1G}>;1qBiY)nF?X%bBWNhny_l)Z3d z&-N3@T)lWSVVldhUf%V8y7}mh3o^f*rno=*oe{IP>4|aPep(t*WGZD`whRe#WKrpOeww^A5*|8>ZEI3iJG3d@;ddSaaQQiv*3SWXm^*Pk(vkYVP=SQ%7gX+6s4|5yBQ}3^T_6XQ zZDbP)D!Ze~6zXIkQ9PYpWTZE?jfD>%Y1@{Swk5itNez`{Q)G&e7J>b9cP_BngG&!t zi|rp2nJV;T^4jymwofAMkUFri0;>ZDmaq-jpk-+0DUxkA;uk8$FcGE_?o$8&002ov JPDHLkV1i%8-68-0 literal 0 HcmV?d00001 diff --git a/core/img/filetypes/document.png b/core/img/filetypes/msword.png similarity index 100% rename from core/img/filetypes/document.png rename to core/img/filetypes/msword.png diff --git a/core/img/filetypes/photo.png b/core/img/filetypes/photo.png deleted file mode 100644 index 4a158fef7e0da8fd19525f574f2c4966443866cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 606 zcmV-k0-^nhP)Q2rnAt>LM%-F zK|rtwgcU)}7x~z1Hrcs5bH*ZO$!>xO8K#?==bZPQ_ecnV>#P`H`QzGaRhd62G_&rC zTLU$c7_x*nFP_dW#Q+*);mMHE?j)HexK784D4x9l_tfpz2$@1y}9rkF+ zI+J5NMWeZyObc!d+rUc=>D+uOdAOg#%+Ej6h+wn5^xPmVVH*Eu446Y0A_@ zo$rlds-+sL10DbC#5QQ<|d}62BjvZR2H60wE-%6;pyTSA|c6o&@eC9QG)Hj&ExYL zO&oVL^)+cM^qd@ApywS>pwx0H@RDN}hq;7mU-SKczYQ-hnrr=;iDAQMZQ+*g=YOM= z!QlMQEn7FbaD->uKAYgo_j9)W&$$zS*W9}m(ey0q$&7l-XEWO0Y(9M=SnhLbwy;d>@~SY$Ku*0xPvIOQeV1x7u_z-2-X>_74(yfh7C znXL|3GZ+d2`3re2hs?MK Date: Fri, 7 Oct 2011 17:02:55 +0200 Subject: [PATCH 18/18] disable openid on default --- apps/user_openid/appinfo/info.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/user_openid/appinfo/info.xml b/apps/user_openid/appinfo/info.xml index 332d2199dd..37be15abfd 100644 --- a/apps/user_openid/appinfo/info.xml +++ b/apps/user_openid/appinfo/info.xml @@ -7,5 +7,4 @@ AGPL Robin Appelman 2 -