From bcbebe390b2689de34f60d124d19c9154d531f5e Mon Sep 17 00:00:00 2001
From: Bart Visscher
Date: Fri, 17 Feb 2012 21:33:39 +0100
Subject: [PATCH 01/70] Document OC_Response
---
lib/response.php | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
diff --git a/lib/response.php b/lib/response.php
index 2fa0a5adcd..3765f509c1 100644
--- a/lib/response.php
+++ b/lib/response.php
@@ -12,6 +12,13 @@ class OC_Response {
const STATUS_TEMPORARY_REDIRECT = 307;
const STATUS_NOT_FOUND = 404;
+ /**
+ * @brief Enable response caching by sending correct HTTP headers
+ * @param $cache_time time to cache the response
+ * >0 cache time in seconds
+ * 0 and <0 enable default browser caching
+ * null cache indefinitly
+ */
static public function enableCaching($cache_time = null) {
if (is_numeric($cache_time)) {
header('Pragma: public');// enable caching in IE
@@ -30,10 +37,19 @@ class OC_Response {
}
}
+
+ /**
+ * @brief disable browser caching
+ * @see enableCaching with cache_time = 0
+ */
static public function disableCaching() {
self::enableCaching(0);
}
+ /**
+ * @brief Set response status
+ * @param $status a HTTP status code, see also the STATUS constants
+ */
static public function setStatus($status) {
$protocol = $_SERVER['SERVER_PROTOCOL'];
switch($status) {
@@ -58,11 +74,21 @@ class OC_Response {
header($protocol.' '.$status);
}
+ /**
+ * @brief Send redirect response
+ * @param $location to redirect to
+ */
static public function redirect($location) {
self::setStatus(self::STATUS_TEMPORARY_REDIRECT);
header('Location: '.$location);
}
+ /**
+ * @brief Set reponse expire time
+ * @param $expires date-time when the response expires
+ * string for DateInterval from now
+ * DateTime object when to expire response
+ */
static public function setExpiresHeader($expires) {
if (is_string($expires) && $expires[0] == 'P') {
$interval = $expires;
@@ -76,6 +102,11 @@ class OC_Response {
header('Expires: '.$expires);
}
+ /**
+ * Checks and set ETag header, when the request matches sends a
+ * 'not modified' response
+ * @param $etag token to use for modification check
+ */
static public function setETagHeader($etag) {
if (empty($etag)) {
return;
@@ -88,6 +119,11 @@ class OC_Response {
header('ETag: '.$etag);
}
+ /**
+ * Checks and set Last-Modified header, when the request matches sends a
+ * 'not modified' response
+ * @param $lastModified time when the reponse was last modified
+ */
static public function setLastModifiedHeader($lastModified) {
if (empty($lastModified)) {
return;
@@ -106,6 +142,10 @@ class OC_Response {
header('Last-Modified: '.$lastModified);
}
+ /**
+ * @brief Send file as response, checking and setting caching headers
+ * @param $filepath of file to send
+ */
static public function sendFile($filepath=null) {
$fp = fopen($filepath, 'rb');
if ($fp) {
From f54c767d72b8380c181c218f378b25e5fbf75ce7 Mon Sep 17 00:00:00 2001
From: Bart Visscher
Date: Fri, 17 Feb 2012 21:35:31 +0100
Subject: [PATCH 02/70] Fix parameter of OC_Response::sendFile
---
lib/response.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/response.php b/lib/response.php
index 3765f509c1..9edae3603b 100644
--- a/lib/response.php
+++ b/lib/response.php
@@ -146,7 +146,7 @@ class OC_Response {
* @brief Send file as response, checking and setting caching headers
* @param $filepath of file to send
*/
- static public function sendFile($filepath=null) {
+ static public function sendFile($filepath) {
$fp = fopen($filepath, 'rb');
if ($fp) {
self::setLastModifiedHeader(filemtime($filepath));
From 5f3c54922773068091dfe8b40e3b407512ef4cfe Mon Sep 17 00:00:00 2001
From: Bart Visscher
Date: Thu, 16 Feb 2012 19:16:31 +0100
Subject: [PATCH 03/70] Contacts: Add removed app enabled check
---
apps/contacts/index.php | 2 ++
1 file changed, 2 insertions(+)
diff --git a/apps/contacts/index.php b/apps/contacts/index.php
index c5115d1607..0a21ddd04b 100644
--- a/apps/contacts/index.php
+++ b/apps/contacts/index.php
@@ -10,6 +10,8 @@ require_once('../../lib/base.php');
// Check if we are a user
OC_Util::checkLoggedIn();
+OC_Util::checkAppEnabled('contacts');
+
// Get active address books. This creates a default one if none exists.
$ids = OC_Contacts_Addressbook::activeIds(OC_User::getUser());
$contacts = OC_Contacts_VCard::all($ids);
From f47444e1f776912cbf141ec9cc3763110f4e3552 Mon Sep 17 00:00:00 2001
From: Bart Visscher
Date: Thu, 16 Feb 2012 19:45:00 +0100
Subject: [PATCH 04/70] Use separate function to make absolute urls
---
apps/bookmarks/templates/settings.php | 2 +-
apps/calendar/templates/calendar.php | 2 +-
apps/calendar/templates/settings.php | 2 +-
apps/contacts/templates/index.php | 2 +-
apps/contacts/templates/part.contactphoto.php | 2 +-
apps/contacts/templates/part.cropphoto.php | 4 ++--
apps/contacts/templates/settings.php | 2 +-
apps/media/lib_ampache.php | 2 +-
apps/media/templates/settings.php | 2 +-
apps/user_openid/appinfo/app.php | 4 ++--
apps/user_openid/user.php | 2 +-
core/lostpassword/index.php | 2 +-
index.php | 2 +-
lib/helper.php | 23 ++++++++++++++-----
lib/util.php | 6 ++---
settings/templates/personal.php | 2 +-
16 files changed, 36 insertions(+), 25 deletions(-)
diff --git a/apps/bookmarks/templates/settings.php b/apps/bookmarks/templates/settings.php
index 97b6b256c0..a985ee9d61 100644
--- a/apps/bookmarks/templates/settings.php
+++ b/apps/bookmarks/templates/settings.php
@@ -8,7 +8,7 @@
?>
diff --git a/apps/calendar/templates/calendar.php b/apps/calendar/templates/calendar.php
index 2d5cdea4d7..eb82d0d02a 100755
--- a/apps/calendar/templates/calendar.php
+++ b/apps/calendar/templates/calendar.php
@@ -18,7 +18,7 @@
var missing_field_totime = 't('To Time')) ?>';
var missing_field_startsbeforeends = 't('The event ends before it starts')) ?>';
var missing_field_dberror = 't('There was a database fail')) ?>';
- var totalurl = '/calendars';
+ var totalurl = '/calendars';
$(document).ready(function() {
t('Calendar CalDAV syncing address:');?>
-
+
diff --git a/apps/contacts/templates/index.php b/apps/contacts/templates/index.php
index 4c0dfad617..e81597f23d 100644
--- a/apps/contacts/templates/index.php
+++ b/apps/contacts/templates/index.php
@@ -1,5 +1,5 @@
diff --git a/apps/media/lib_ampache.php b/apps/media/lib_ampache.php
index 138b65d1fd..97c0930860 100644
--- a/apps/media/lib_ampache.php
+++ b/apps/media/lib_ampache.php
@@ -207,7 +207,7 @@ class OC_MEDIA_AMPACHE{
echo("\t\t
$name\n");
echo("\t\t
$artistName\n");
echo("\t\t
$albumName\n");
- $url=OC_Helper::linkTo('media', 'server/xml.server.php', null, true)."?action=play&song=$id&auth={$_GET['auth']}";
+ $url=OC_Helper::linkToAbsolute('media', 'server/xml.server.php')."?action=play&song=$id&auth={$_GET['auth']}";
$url=self::fixXmlString($url);
echo("\t\t
$url\n");
echo("\t\t
\n");
diff --git a/apps/media/templates/settings.php b/apps/media/templates/settings.php
index ac813c2085..2907c616cf 100644
--- a/apps/media/templates/settings.php
+++ b/apps/media/templates/settings.php
@@ -2,6 +2,6 @@
diff --git a/apps/user_openid/appinfo/app.php b/apps/user_openid/appinfo/app.php
index 912019a970..cbcbe54422 100644
--- a/apps/user_openid/appinfo/app.php
+++ b/apps/user_openid/appinfo/app.php
@@ -14,8 +14,8 @@ if(strpos($_SERVER["REQUEST_URI"],'?') and !strpos($_SERVER["REQUEST_URI"],'='))
}
}
-OC_Util::addHeader('link',array('rel'=>'openid.server', 'href'=>OC_Helper::linkTo( "user_openid", "user.php", null, true ).'/'.$userName));
-OC_Util::addHeader('link',array('rel'=>'openid.delegate', 'href'=>OC_Helper::linkTo( "user_openid", "user.php", null, true ).'/'.$userName));
+OC_Util::addHeader('link',array('rel'=>'openid.server', 'href'=>OC_Helper::linkToAbsolute( "user_openid", "user.php" ).'/'.$userName));
+OC_Util::addHeader('link',array('rel'=>'openid.delegate', 'href'=>OC_Helper::linkToAbsolute( "user_openid", "user.php" ).'/'.$userName));
OC_APP::registerPersonal('user_openid','settings');
diff --git a/apps/user_openid/user.php b/apps/user_openid/user.php
index a267e02050..8fec713aa7 100644
--- a/apps/user_openid/user.php
+++ b/apps/user_openid/user.php
@@ -43,7 +43,7 @@ if(!OC_User::userExists($USERNAME)){
OC_Log::write('user_openid',$USERNAME.' doesn\'t exist',OC_Log::WARN);
$USERNAME='';
}
-$IDENTITY=OC_Helper::linkTo( "user_openid", "user.php", null, true ).'/'.$USERNAME;
+$IDENTITY=OC_Helper::linkToAbsolute( "user_openid", "user.php" ).'/'.$USERNAME;
require_once 'phpmyid.php';
diff --git a/core/lostpassword/index.php b/core/lostpassword/index.php
index ede94dab2d..30caa2d23d 100644
--- a/core/lostpassword/index.php
+++ b/core/lostpassword/index.php
@@ -16,7 +16,7 @@ if (isset($_POST['user'])) {
OC_Preferences::setValue($_POST['user'], 'owncloud', 'lostpassword', $token);
$email = OC_Preferences::getValue($_POST['user'], 'settings', 'email', '');
if (!empty($email)) {
- $link = OC_Helper::linkTo('core/lostpassword', 'resetpassword.php', null, true).'?user='.$_POST['user'].'&token='.$token;
+ $link = OC_Helper::linkToAbsolute('core/lostpassword', 'resetpassword.php').'?user='.$_POST['user'].'&token='.$token;
$tmpl = new OC_Template('core/lostpassword', 'email');
$tmpl->assign('link', $link);
$msg = $tmpl->fetchPage();
diff --git a/index.php b/index.php
index 9bd460be35..18ea3022bc 100644
--- a/index.php
+++ b/index.php
@@ -44,7 +44,7 @@ if($not_installed) {
// Handle WebDAV
if($_SERVER['REQUEST_METHOD']=='PROPFIND'){
- header('location: '.OC_Helper::linkTo('files','webdav.php'));
+ header('location: '.OC_Helper::linkToAbsolute('files','webdav.php'));
exit();
}
diff --git a/lib/helper.php b/lib/helper.php
index 6d3df6d97e..b1e6d053a1 100644
--- a/lib/helper.php
+++ b/lib/helper.php
@@ -54,12 +54,6 @@ class OC_Helper {
}
}
- if($absolute){
- // Checking if the request was made through HTTPS. The last in line is for IIS
- $protocol = isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && ($_SERVER['HTTPS']!='off');
- $urlLinkTo = ($protocol?'https':'http') . '://' . $_SERVER['HTTP_HOST'] . $urlLinkTo;
- }
-
if($redirect_url)
return $urlLinkTo.'?redirect_url='.urlencode($_SERVER["REQUEST_URI"]);
else
@@ -67,6 +61,23 @@ class OC_Helper {
}
+ /**
+ * @brief Creates an absolute url
+ * @param $app app
+ * @param $file file
+ * @param $redirect_url redirect_url variable is appended to the URL
+ * @returns the url
+ *
+ * Returns a absolute url to the given app and file.
+ */
+ public static function linkToAbsolute( $app, $file, $redirect_url=NULL ) {
+ $urlLinkTo = self::linkTo( $app, $file, $redirect_url );
+ // Checking if the request was made through HTTPS. The last in line is for IIS
+ $protocol = isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && ($_SERVER['HTTPS']!='off');
+ $urlLinkTo = ($protocol?'https':'http') . '://' . $_SERVER['HTTP_HOST'] . $urlLinkTo;
+ return $urlLinkTo;
+ }
+
/**
* @brief Creates path to an image
* @param $app app
diff --git a/lib/util.php b/lib/util.php
index 43fb4413f0..4ba04fff3e 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -248,7 +248,7 @@ class OC_Util {
*/
public static function checkAppEnabled($app){
if( !OC_App::isEnabled($app)){
- header( 'Location: '.OC_Helper::linkTo( '', 'index.php' , true));
+ header( 'Location: '.OC_Helper::linkToAbsolute( '', 'index.php' ));
exit();
}
}
@@ -259,7 +259,7 @@ class OC_Util {
public static function checkLoggedIn(){
// Check if we are a user
if( !OC_User::isLoggedIn()){
- header( 'Location: '.OC_Helper::linkTo( '', 'index.php' , true));
+ header( 'Location: '.OC_Helper::linkToAbsolute( '', 'index.php' ));
exit();
}
}
@@ -271,7 +271,7 @@ class OC_Util {
// Check if we are a user
self::checkLoggedIn();
if( !OC_Group::inGroup( OC_User::getUser(), 'admin' )){
- header( 'Location: '.OC_Helper::linkTo( '', 'index.php' , true));
+ header( 'Location: '.OC_Helper::linkToAbsolute( '', 'index.php' ));
exit();
}
}
diff --git a/settings/templates/personal.php b/settings/templates/personal.php
index 80d2cb0a86..57731d979d 100644
--- a/settings/templates/personal.php
+++ b/settings/templates/personal.php
@@ -41,7 +41,7 @@
WebDAV
-
+
t('use this address to connect to your ownCloud in your file manager');?>
From e8b69d45a3afd9633b997eb178e159f9f97f4766 Mon Sep 17 00:00:00 2001
From: Bart Visscher
Date: Thu, 16 Feb 2012 19:48:20 +0100
Subject: [PATCH 05/70] Fixup use of OC_Helper::linkTo function
---
apps/calendar/lib/search.php | 2 +-
apps/contacts/lib/search.php | 2 +-
apps/gallery/appinfo/app.php | 2 +-
apps/media/lib_media.php | 6 +++---
files/index.php | 6 +++---
lib/app.php | 2 +-
lib/search/provider/file.php | 10 +++++-----
7 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/apps/calendar/lib/search.php b/apps/calendar/lib/search.php
index 425c93c733..0016751a66 100644
--- a/apps/calendar/lib/search.php
+++ b/apps/calendar/lib/search.php
@@ -36,7 +36,7 @@ class OC_Search_Provider_Calendar extends OC_Search_Provider{
}else{
$info = $l->t('Date') . ': ' . $start_dt->format('d.m.y H:i') . ' - ' . $end_dt->format('d.m.y H:i');
}
- $link = OC_Helper::linkTo('apps/calendar', 'index.php?showevent='.urlencode($object['id']));
+ $link = OC_Helper::linkTo('calendar', 'index.php').'?showevent='.urlencode($object['id']);
$results[]=new OC_Search_Result($object['summary'],$info, $link,$l->t('Cal.'));//$name,$text,$link,$type
}
}
diff --git a/apps/contacts/lib/search.php b/apps/contacts/lib/search.php
index 9763882100..5aad6a25f0 100644
--- a/apps/contacts/lib/search.php
+++ b/apps/contacts/lib/search.php
@@ -18,7 +18,7 @@ class OC_Search_Provider_Contacts extends OC_Search_Provider{
$vcards = OC_Contacts_VCard::all($addressbook['id']);
foreach($vcards as $vcard){
if(substr_count(strtolower($vcard['fullname']), strtolower($query)) > 0){
- $link = OC_Helper::linkTo('apps/contacts', 'index.php?id='.urlencode($vcard['id']));
+ $link = OC_Helper::linkTo('contacts', 'index.php').'?id='.urlencode($vcard['id']);
$results[]=new OC_Search_Result($vcard['fullname'],'', $link,$l->t('Contact'));//$name,$text,$link,$type
}
}
diff --git a/apps/gallery/appinfo/app.php b/apps/gallery/appinfo/app.php
index da87227449..b8de32ea58 100644
--- a/apps/gallery/appinfo/app.php
+++ b/apps/gallery/appinfo/app.php
@@ -46,7 +46,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('gallery', 'index.php').'?view='.$row['album_name'],'Galleries');
}
return $results;
}
diff --git a/apps/media/lib_media.php b/apps/media/lib_media.php
index 0ade0e593d..1bcd0f08c8 100644
--- a/apps/media/lib_media.php
+++ b/apps/media/lib_media.php
@@ -89,18 +89,18 @@ class OC_MediaSearchProvider extends OC_Search_Provider{
$songs=OC_MEDIA_COLLECTION::getSongs(0,0,$query);
$results=array();
foreach($artists as $artist){
- $results[]=new OC_Search_Result($artist['artist_name'],'',OC_Helper::linkTo( 'apps/media', 'index.php#artist='.urlencode($artist['artist_name']) ),'Music');
+ $results[]=new OC_Search_Result($artist['artist_name'],'',OC_Helper::linkTo( 'media', 'index.php').'#artist='.urlencode($artist['artist_name']),'Music');
}
foreach($albums as $album){
$artist=OC_MEDIA_COLLECTION::getArtistName($album['album_artist']);
- $results[]=new OC_Search_Result($album['album_name'],'by '.$artist,OC_Helper::linkTo( 'apps/media', 'index.php#artist='.urlencode($artist).'&album='.urlencode($album['album_name']) ),'Music');
+ $results[]=new OC_Search_Result($album['album_name'],'by '.$artist,OC_Helper::linkTo( 'media', 'index.php').'#artist='.urlencode($artist).'&album='.urlencode($album['album_name']),'Music');
}
foreach($songs as $song){
$minutes=floor($song['song_length']/60);
$secconds=$song['song_length']%60;
$artist=OC_MEDIA_COLLECTION::getArtistName($song['song_artist']);
$album=OC_MEDIA_COLLECTION::getalbumName($song['song_album']);
- $results[]=new OC_Search_Result($song['song_name'],"by $artist, in $album $minutes:$secconds",OC_Helper::linkTo( 'apps/media', 'index.php#artist='.urlencode($artist).'&album='.urlencode($album).'&song='.urlencode($song['song_name']) ),'Music');
+ $results[]=new OC_Search_Result($song['song_name'],"by $artist, in $album $minutes:$secconds",OC_Helper::linkTo( 'media', 'index.php').'#artist='.urlencode($artist).'&album='.urlencode($album).'&song='.urlencode($song['song_name']),'Music');
}
return $results;
}
diff --git a/files/index.php b/files/index.php
index f166790ba9..a29d3fb7e1 100644
--- a/files/index.php
+++ b/files/index.php
@@ -76,11 +76,11 @@ foreach( explode( "/", $dir ) as $i ){
// make breadcrumb und filelist markup
$list = new OC_Template( "files", "part.list", "" );
$list->assign( "files", $files );
-$list->assign( "baseURL", OC_Helper::linkTo("files", "index.php?dir="));
-$list->assign( "downloadURL", OC_Helper::linkTo("files", "download.php?file="));
+$list->assign( "baseURL", OC_Helper::linkTo("files", "index.php")."?dir=");
+$list->assign( "downloadURL", OC_Helper::linkTo("files", "download.php")."?file=");
$breadcrumbNav = new OC_Template( "files", "part.breadcrumb", "" );
$breadcrumbNav->assign( "breadcrumb", $breadcrumb );
-$breadcrumbNav->assign( "baseURL", OC_Helper::linkTo("files", "index.php?dir="));
+$breadcrumbNav->assign( "baseURL", OC_Helper::linkTo("files", "index.php")."?dir=");
$upload_max_filesize = OC_Helper::computerFileSize(ini_get('upload_max_filesize'));
$post_max_size = OC_Helper::computerFileSize(ini_get('post_max_size'));
diff --git a/lib/app.php b/lib/app.php
index 22d18b17ee..1879a89cee 100644
--- a/lib/app.php
+++ b/lib/app.php
@@ -230,7 +230,7 @@ class OC_App{
// 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" ));
+ $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" ));
// admin log menu
$settings[] = array( "id" => "core_log", "order" => 4, "href" => OC_Helper::linkTo( "settings", "log.php" ), "name" => $l->t("Log"), "icon" => OC_Helper::imagePath( "settings", "log.svg" ));
diff --git a/lib/search/provider/file.php b/lib/search/provider/file.php
index c3dc2942ae..34803c75ae 100644
--- a/lib/search/provider/file.php
+++ b/lib/search/provider/file.php
@@ -7,7 +7,7 @@ class OC_Search_Provider_File extends OC_Search_Provider{
foreach($files as $fileData){
$file=$fileData['path'];
if($fileData['mime']=='httpd/unix-directory'){
- $results[]=new OC_Search_Result(basename($file),'',OC_Helper::linkTo( 'files', 'index.php?dir='.$file ),'Files');
+ $results[]=new OC_Search_Result(basename($file),'',OC_Helper::linkTo( 'files', 'index.php' ).'?dir='.$file,'Files');
}else{
$mime=$fileData['mime'];
$mimeBase=$fileData['mimepart'];
@@ -15,16 +15,16 @@ class OC_Search_Provider_File extends OC_Search_Provider{
case 'audio':
break;
case 'text':
- $results[]=new OC_Search_Result(basename($file),'',OC_Helper::linkTo( 'files', 'download.php?file='.$file ),'Text');
+ $results[]=new OC_Search_Result(basename($file),'',OC_Helper::linkTo( 'files', 'download.php' ).'?file='.$file,'Text');
break;
case 'image':
- $results[]=new OC_Search_Result(basename($file),'',OC_Helper::linkTo( 'files', 'download.php?file='.$file ),'Images');
+ $results[]=new OC_Search_Result(basename($file),'',OC_Helper::linkTo( 'files', 'download.php' ).'?file='.$file,'Images');
break;
default:
if($mime=='application/xml'){
- $results[]=new OC_Search_Result(basename($file),'',OC_Helper::linkTo( 'files', 'download.php?file='.$file ),'Text');
+ $results[]=new OC_Search_Result(basename($file),'',OC_Helper::linkTo( 'files', 'download.php' ).'?file='.$file,'Text');
}else{
- $results[]=new OC_Search_Result(basename($file),'',OC_Helper::linkTo( 'files', 'download.php?file='.$file ),'Files');
+ $results[]=new OC_Search_Result(basename($file),'',OC_Helper::linkTo( 'files', 'download.php' ).'?file='.$file,'Files');
}
}
}
From dab553147470a78dfbe0f220908e35f639d956f6 Mon Sep 17 00:00:00 2001
From: Bart Visscher
Date: Thu, 16 Feb 2012 21:01:13 +0100
Subject: [PATCH 06/70] Bookmarks: Fix image urls in bookmarks.js
---
apps/bookmarks/js/bookmarks.js | 22 +++++++++++++++++++---
1 file changed, 19 insertions(+), 3 deletions(-)
diff --git a/apps/bookmarks/js/bookmarks.js b/apps/bookmarks/js/bookmarks.js
index 77f767cdb8..fadbbd5513 100644
--- a/apps/bookmarks/js/bookmarks.js
+++ b/apps/bookmarks/js/bookmarks.js
@@ -85,7 +85,14 @@ function addOrEditBookmark(event) {
$('.bookmarks_add').children('p').children('.bookmarks_input').val('');
$('.bookmarks_list').prepend(
'' +
- '
' +
+ '
' +
+ '' +
+ '' +
+ ' ' +
+ '' +
+ '' +
+ '' +
+ '
' +
'
' + title + '
' +
'
' + tagshtml + '
' +
'
' + url + '
' +
@@ -154,8 +161,17 @@ function updateBookmarksList(bookmark) {
}
$('.bookmarks_list').append(
'
'
);
From a33b757b192384e612f278feeb30d998b3816a4d Mon Sep 17 00:00:00 2001
From: Bart Visscher
Date: Fri, 17 Feb 2012 21:36:55 +0100
Subject: [PATCH 07/70] Calendar: Add default repeat values when editing a
non-repeating event
---
apps/calendar/ajax/editeventform.php | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/apps/calendar/ajax/editeventform.php b/apps/calendar/ajax/editeventform.php
index 9ae3ffa8d9..19f6a80a16 100644
--- a/apps/calendar/ajax/editeventform.php
+++ b/apps/calendar/ajax/editeventform.php
@@ -243,6 +243,16 @@ if($repeat['repeat'] != 'doesnotrepeat'){
$tmpl->assign('repeat_bymonth', $repeat['bymonth']);
$tmpl->assign('repeat_byweekno', $repeat['byweekno']);
}
+else {
+ $tmpl->assign('repeat_month', 'monthday');
+ $tmpl->assign('repeat_weekdays', array());
+ $tmpl->assign('repeat_interval', 1);
+ $tmpl->assign('repeat_end', 'never');
+ $tmpl->assign('repeat_count', '10');
+ $tmpl->assign('repeat_weekofmonth', 'auto');
+ $tmpl->assign('repeat_date', '');
+ $tmpl->assign('repeat_year', 'bydate');
+}
$tmpl->printpage();
-?>
\ No newline at end of file
+?>
From 539fd7240c463d71ea885ca1c2a1eb292a7cceac Mon Sep 17 00:00:00 2001
From: Bart Visscher
Date: Fri, 17 Feb 2012 21:39:54 +0100
Subject: [PATCH 08/70] Calendar: optimize sending calendar events, also
enabled caching of result
---
apps/calendar/ajax/events.php | 30 +++++++++++++++++++-----------
apps/calendar/lib/calendar.php | 1 +
2 files changed, 20 insertions(+), 11 deletions(-)
diff --git a/apps/calendar/ajax/events.php b/apps/calendar/ajax/events.php
index dd593ddec9..7734129bd9 100755
--- a/apps/calendar/ajax/events.php
+++ b/apps/calendar/ajax/events.php
@@ -9,7 +9,8 @@
require_once ('../../../lib/base.php');
require_once('../../../3rdparty/when/When.php');
-function addoutput($event, $vevent, $return_event){
+function create_return_event($event, $vevent){
+ $return_event = array();
$return_event['id'] = (int)$event['id'];
$return_event['title'] = htmlspecialchars($event['summary']);
$return_event['description'] = isset($vevent->DESCRIPTION)?htmlspecialchars($vevent->DESCRIPTION->value):'';
@@ -29,15 +30,21 @@ OC_JSON::checkAppEnabled('calendar');
$start = DateTime::createFromFormat('U', $_GET['start']);
$end = DateTime::createFromFormat('U', $_GET['end']);
+$calendar = OC_Calendar_App::getCalendar($_GET['calendar_id']);
+OC_Response::enableCaching(0);
+OC_Response::setETagHeader($calendar['ctag']);
+
$events = OC_Calendar_Object::allInPeriod($_GET['calendar_id'], $start, $end);
$user_timezone = OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezone', date_default_timezone_get());
$return = array();
foreach($events as $event){
$object = OC_VObject::parse($event['calendardata']);
$vevent = $object->VEVENT;
+
+ $return_event = create_return_event($event, $vevent);
+
$dtstart = $vevent->DTSTART;
$dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent);
- $return_event = array();
$start_dt = $dtstart->getDateTime();
$end_dt = $dtend->getDateTime();
if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE){
@@ -47,13 +54,17 @@ foreach($events as $event){
$start_dt->setTimezone(new DateTimeZone($user_timezone));
$end_dt->setTimezone(new DateTimeZone($user_timezone));
}
+
//Repeating Events
if($event['repeating'] == 1){
$duration = (double) $end_dt->format('U') - (double) $start_dt->format('U');
$r = new When();
- $r->recur((string) $start_dt->format('Ymd\THis'))->rrule((string) $vevent->RRULE);
+ $r->recur($start_dt)->rrule((string) $vevent->RRULE);
while($result = $r->next()){
- if($result->format('U') > $_GET['end']){
+ if($result < $start){
+ continue;
+ }
+ if($result > $end){
break;
}
if($return_event['allDay'] == true){
@@ -63,22 +74,19 @@ foreach($events as $event){
$return_event['start'] = $result->format('Y-m-d H:i:s');
$return_event['end'] = date('Y-m-d H:i:s', $result->format('U') + $duration);
}
- $return[] = addoutput($event, $vevent, $return_event);
+ $return[] = $return_event;
}
}else{
- $return_event = array();
- if ($dtstart->getDateType() == Sabre_VObject_Element_DateTime::DATE){
- $return_event['allDay'] = true;
+ if($return_event['allDay'] == true){
$return_event['start'] = $start_dt->format('Y-m-d');
$end_dt->modify('-1 sec');
$return_event['end'] = $end_dt->format('Y-m-d');
}else{
$return_event['start'] = $start_dt->format('Y-m-d H:i:s');
$return_event['end'] = $end_dt->format('Y-m-d H:i:s');
- $return_event['allDay'] = false;
}
- $return[] = addoutput($event, $vevent, $return_event);
+ $return[] = $return_event;
}
}
OC_JSON::encodedPrint($return);
-?>
\ No newline at end of file
+?>
diff --git a/apps/calendar/lib/calendar.php b/apps/calendar/lib/calendar.php
index 5e272991f2..679649582d 100644
--- a/apps/calendar/lib/calendar.php
+++ b/apps/calendar/lib/calendar.php
@@ -246,6 +246,7 @@ class OC_Calendar_Calendar{
'backgroundColor' => '#'.$calendar['calendarcolor'],
'borderColor' => '#888',
'textColor' => 'black',
+ 'cache' => true,
);
}
}
From 6bbd67c3c693ab3cc440be7342b3cc8b88806a18 Mon Sep 17 00:00:00 2001
From: Bart Visscher
Date: Fri, 17 Feb 2012 21:40:57 +0100
Subject: [PATCH 09/70] Calendar: only update default view when it really
changed
---
apps/calendar/js/calendar.js | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/apps/calendar/js/calendar.js b/apps/calendar/js/calendar.js
index 6f1f52eafa..517d2ce128 100644
--- a/apps/calendar/js/calendar.js
+++ b/apps/calendar/js/calendar.js
@@ -689,7 +689,10 @@ $(document).ready(function(){
allDayText: allDayText,
viewDisplay: function(view) {
$('#datecontrol_date').html(view.title);
- $.get(OC.filePath('calendar', 'ajax', 'changeview.php') + "?v="+view.name);
+ if (view.name != defaultView) {
+ $.get(OC.filePath('calendar', 'ajax', 'changeview.php') + "?v="+view.name);
+ defaultView = view.name;
+ }
Calendar.UI.setViewActive(view.name);
if (view.name == 'agendaWeek') {
$('#calendar_holder').fullCalendar('option', 'aspectRatio', 0.1);
From bd7227bb934c6d618c46eb818c8ce0f6ecb64e29 Mon Sep 17 00:00:00 2001
From: Bart Visscher
Date: Fri, 17 Feb 2012 21:42:56 +0100
Subject: [PATCH 10/70] Spelling fix hint text
---
lib/config.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/config.php b/lib/config.php
index 8d03271b3e..ad1cd18fa1 100644
--- a/lib/config.php
+++ b/lib/config.php
@@ -174,7 +174,7 @@ class OC_Config{
$result=@file_put_contents( OC::$SERVERROOT."/config/config.php", $content );
if(!$result) {
$tmpl = new OC_Template( '', 'error', 'guest' );
- $tmpl->assign('errors',array(1=>array('error'=>"Can't write into config directory 'config'",'hint'=>"You can usually fix this by giving the webserver use write access to the config directory in owncloud")));
+ $tmpl->assign('errors',array(1=>array('error'=>"Can't write into config directory 'config'",'hint'=>"You can usually fix this by giving the webserver user write access to the config directory in owncloud")));
$tmpl->printPage();
exit;
}
From 45cff7b7378ff351158d9d93b879dcfc156171aa Mon Sep 17 00:00:00 2001
From: Bart Visscher
Date: Fri, 17 Feb 2012 21:59:43 +0100
Subject: [PATCH 11/70] Move storing "last updated at" time to the app config
This way the config.php file is not changed every time you go to the
personal page. Step to make it possible to have a read-only config.php
most of the time
---
lib/setup.php | 5 +++--
lib/updater.php | 6 +++---
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/lib/setup.php b/lib/setup.php
index eb32e84713..3e46a3dcc9 100644
--- a/lib/setup.php
+++ b/lib/setup.php
@@ -77,8 +77,6 @@ class OC_Setup {
OC_Config::setValue('datadirectory', $datadir);
OC_Config::setValue('dbtype', $dbtype);
OC_Config::setValue('version',implode('.',OC_Util::getVersion()));
- OC_Config::setValue('installedat',microtime(true));
- OC_Config::setValue('lastupdatedat',microtime(true));
if($dbtype == 'mysql') {
$dbuser = $options['dbuser'];
$dbpass = $options['dbpass'];
@@ -224,6 +222,9 @@ class OC_Setup {
}
if(count($error) == 0) {
+ OC_Appconfig::setValue('core', 'installedat',microtime(true));
+ OC_Appconfig::setValue('core', 'lastupdatedat',microtime(true));
+
//create the user and group
OC_User::createUser($username, $password);
OC_Group::createGroup('admin');
diff --git a/lib/updater.php b/lib/updater.php
index cc4a460253..57623797ae 100644
--- a/lib/updater.php
+++ b/lib/updater.php
@@ -29,12 +29,12 @@ class OC_Updater{
* Check if a new version is available
*/
public static function check(){
- OC_Config::setValue('lastupdatedat',microtime(true));
+ OC_Appconfig::setValue('core', 'lastupdatedat',microtime(true));
$updaterurl='http://apps.owncloud.com/updater.php';
$version=OC_Util::getVersion();
- $version['installed']=OC_Config::getValue( "installedat");
- $version['updated']=OC_Config::getValue( "lastupdatedat");
+ $version['installed']=OC_Config::getValue('installedat');
+ $version['updated']=OC_Appconfig::getValue('core', 'lastupdatedat', OC_Config::getValue( 'lastupdatedat'));
$version['updatechannel']='stable';
$versionstring=implode('x',$version);
From 1fa05894d51235a46cf67812227d5e8363f87d54 Mon Sep 17 00:00:00 2001
From: Bart Visscher
Date: Fri, 17 Feb 2012 22:01:53 +0100
Subject: [PATCH 12/70] Move config.php writable test to update path
This should make it possible to use owncloud with a read-only config.php
---
lib/base.php | 7 +++++++
lib/util.php | 4 ----
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/lib/base.php b/lib/base.php
index 8f169a5732..880645ff79 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -171,6 +171,13 @@ class OC{
echo 'Error while upgrading the database';
die();
}
+ if(file_exists(OC::$SERVERROOT."/config/config.php") and !is_writable(OC::$SERVERROOT."/config/config.php")) {
+ $tmpl = new OC_Template( '', 'error', 'guest' );
+ $tmpl->assign('errors',array(1=>array('error'=>"Can't write into config directory 'config'",'hint'=>"You can usually fix this by giving the webserver user write access to the config directory in owncloud")));
+ $tmpl->printPage();
+ exit;
+ }
+
OC_Config::setValue('version',implode('.',OC_Util::getVersion()));
}
diff --git a/lib/util.php b/lib/util.php
index 4ba04fff3e..ee32d31bfd 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -226,10 +226,6 @@ class OC_Util {
$errors[]=array('error'=>'PHP module ctype is not installed.
','hint'=>'Please ask your server administrator to install the module.');
}
- if(file_exists(OC::$SERVERROOT."/config/config.php") and !is_writable(OC::$SERVERROOT."/config/config.php")){
- $errors[]=array('error'=>"Can't write into config directory 'config'",'hint'=>"You can usually fix this by giving the webserver use write access to the config directory in owncloud");
- }
-
return $errors;
}
From 6f1ed85f0b6a7e675951a587f1308211b698a6d5 Mon Sep 17 00:00:00 2001
From: Michael Gapczynski
Date: Fri, 17 Feb 2012 21:56:20 -0500
Subject: [PATCH 13/70] Temporary fix for sharing files
---
apps/files_sharing/lib_share.php | 15 +++++----
lib/filestorage/google.php | 55 ++++++++++++++++++++++++++++++++
2 files changed, 64 insertions(+), 6 deletions(-)
create mode 100644 lib/filestorage/google.php
diff --git a/apps/files_sharing/lib_share.php b/apps/files_sharing/lib_share.php
index 049a74278b..42739bdfba 100644
--- a/apps/files_sharing/lib_share.php
+++ b/apps/files_sharing/lib_share.php
@@ -88,12 +88,15 @@ class OC_Share {
$uid = $uid."@".$gid;
}
$query->execute(array($uid_owner, $uid, $source, $target, $permissions));
- // Clear the folder size cache for the 'Shared' folder
-// $clearFolderSize = OC_DB::prepare("DELETE FROM *PREFIX*foldersize WHERE path = ?");
-// $clearFolderSize->execute(array($sharedFolder));
- // Emit post_create and post_write hooks to notify of a new file in the user's filesystem
- OC_Hook::emit("OC_Filesystem", "post_create", array('path' => $target));
- OC_Hook::emit("OC_Filesystem", "post_write", array('path' => $target));
+ // Add file to filesystem cache
+ $userDirectory = "/".OC_User::getUser()."/files";
+ $data = OC_Filecache::get(substr($source, strlen($userDirectory)));
+ $parentQuery = OC_DB::prepare('SELECT id FROM *PREFIX*fscache WHERE path=?');
+ $parentResult = $parentQuery->execute(array($sharedFolder))->fetchRow();
+ $parent = $parentResult['id'];
+ $is_writeable = $permissions & OC_Share::WRITE;
+ $cacheQuery = OC_DB::prepare('INSERT INTO *PREFIX*fscache(parent, name, path, size, mtime, ctime, mimetype, mimepart, user, writable) VALUES(?,?,?,?,?,?,?,?,?,?)');
+ $cacheQuery->execute(array($parent, basename($target), $target, $data['size'], $data['mtime'], $data['ctime'], $data['mimetype'], dirname($data['mimetype']), $uid, $is_writeable));
}
}
}
diff --git a/lib/filestorage/google.php b/lib/filestorage/google.php
new file mode 100644
index 0000000000..fc271f4e4b
--- /dev/null
+++ b/lib/filestorage/google.php
@@ -0,0 +1,55 @@
+.
+*/
+
+class OC_Filestorage_Google extends OC_Filestorage_Common {
+
+ private $auth;
+
+ public function __construct($parameters) {
+
+ }
+
+ private function connect() {
+
+ }
+ public function mkdir($path){}
+ public function rmdir($path){}
+ public function opendir($path){}
+ public function is_dir($path){}
+ public function is_file($path){}
+ public function stat($path){}
+ public function filetype($path){}
+ public function is_readable($path){}
+ public function is_writable($path){}
+ public function file_exists($path){}
+ public function unlink($path){}
+ public function rename($path1,$path2){}
+ public function fopen($path,$mode){}
+ public function toTmpFile($path){}
+ public function fromTmpFile($tmpPath,$path){}
+ public function fromUploadedFile($tmpPath,$path){}
+ public function getMimeType($path){}
+ public function hash($type,$path,$raw){}
+ public function free_space($path){}
+ public function search($query){}
+ public function getLocalFile($path){}
+}
\ No newline at end of file
From 71aa36c3f16942cd35f550253b892f5be4116784 Mon Sep 17 00:00:00 2001
From: Thomas Tanghus
Date: Thu, 16 Feb 2012 23:24:23 +0100
Subject: [PATCH 14/70] ETags must be quoted.
---
lib/response.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/response.php b/lib/response.php
index 9edae3603b..a75135c017 100644
--- a/lib/response.php
+++ b/lib/response.php
@@ -116,7 +116,7 @@ class OC_Response {
self::setStatus(self::STATUS_NOT_MODIFIED);
exit;
}
- header('ETag: '.$etag);
+ header('ETag: "'.$etag.'"');
}
/**
From 96612c506e08ce6b2fb39425c73f0a8d81a4cad8 Mon Sep 17 00:00:00 2001
From: Thomas Tanghus
Date: Fri, 17 Feb 2012 09:35:18 +0100
Subject: [PATCH 15/70] Removed obsolete commented code and made minor speed
improvements. Added stub function for loading categories.
---
apps/contacts/js/contacts.js | 63 +++++++-----------------
apps/contacts/templates/part.contact.php | 53 --------------------
2 files changed, 17 insertions(+), 99 deletions(-)
diff --git a/apps/contacts/js/contacts.js b/apps/contacts/js/contacts.js
index 3079362574..c9d1dc30f0 100644
--- a/apps/contacts/js/contacts.js
+++ b/apps/contacts/js/contacts.js
@@ -117,7 +117,7 @@ Contacts={
$('#carddav_url_close').show();
},
messageBox:function(title, msg) {
- if(msg.toLowerCase().indexOf('auth') > 0) {
+ if(msg.toLowerCase().indexOf('auth') != -1) {
// fugly hack, I know
alert(msg);
}
@@ -335,17 +335,6 @@ Contacts={
// Load first in list.
if($('#contacts li').length > 0) {
Contacts.UI.Card.update();
- /*
- var firstid = $('#contacts li:first-child').data('id');
- console.log('trying to load: ' + firstid);
- $.getJSON(OC.filePath('contacts', 'ajax', 'contactdetails.php'),{'id':firstid},function(jsondata){
- if(jsondata.status == 'success'){
- Contacts.UI.Card.loadContact(jsondata.data);
- }
- else{
- Contacts.UI.messageBox(t('contacts', 'Error'), jsondata.data.message);
- }
- });*/
} else {
// load intro page
$.getJSON('ajax/loadintro.php',{},function(jsondata){
@@ -374,6 +363,7 @@ Contacts={
$('#rightcontent').data('id',this.id);
//console.log('loaded: ' + this.data.FN[0]['value']);
this.populateNameFields();
+ this.loadCategories();
this.loadPhoto();
this.loadMails();
this.loadPhones();
@@ -455,9 +445,6 @@ Contacts={
this.fullname += ', ' + this.honsuf;
}
$('#n').html(this.fullname);
- //$('.jecEditableOption').attr('title', 'Custom');
- //$('.jecEditableOption').text(this.fn);
- //$('.jecEditableOption').attr('value', 0);
$('#fn_select option').remove();
$('#fn_select').combobox('value', this.fn);
var names = [this.fullname, this.givname + ' ' + this.famname, this.famname + ' ' + this.givname, this.famname + ', ' + this.givname];
@@ -466,17 +453,16 @@ Contacts={
.append($('')
.text(value));
});
- /*$('#full').text(this.fullname);
- $('#short').text(this.givname + ' ' + this.famname);
- $('#reverse').text(this.famname + ' ' + this.givname);
- $('#reverse_comma').text(this.famname + ', ' + this.givname);*/
$('#contact_identity').find('*[data-element="N"]').data('checksum', this.data.N[0]['checksum']);
$('#contact_identity').find('*[data-element="FN"]').data('checksum', this.data.FN[0]['checksum']);
$('#contact_identity').show();
},
+ loadCategories:function(){
+ if(this.data.CATEGORIES) {
+ //
+ }
+ },
editNew:function(){ // add a new contact
- //Contacts.UI.notImplemented();
- //return false;
this.id = ''; this.fn = ''; this.fullname = ''; this.givname = ''; this.famname = ''; this.addname = ''; this.honpre = ''; this.honsuf = '';
$.getJSON('ajax/newcontact.php',{},function(jsondata){
if(jsondata.status == 'success'){
@@ -713,12 +699,6 @@ Contacts={
.text(value));
});
- /*$('#short').text(n[1] + ' ' + n[0]);
- $('#full').text(this.fullname);
- $('#reverse').text(n[0] + ' ' + n[1]);
- $('#reverse_comma').text(n[0] + ', ' + n[1]);*/
- //$('#n').html(full);
- //$('#fn').val(0);
if(this.id == '') {
var aid = $(dlg).find('#aid').val();
Contacts.UI.Card.add(n.join(';'), $('#short').text(), aid);
@@ -889,21 +869,22 @@ Contacts={
},
loadPhoto:function(){
if(this.data.PHOTO) {
+ $.getJSON('ajax/loadphoto.php',{'id':this.id},function(jsondata){
+ if(jsondata.status == 'success'){
+ //alert(jsondata.data.page);
+ $('#contacts_details_photo_wrapper').html(jsondata.data.page);
+ }
+ else{
+ Contacts.UI.messageBox(jsondata.data.message);
+ }
+ });
$('#file_upload_form').show();
$('#contacts_propertymenu a[data-type="PHOTO"]').parent().hide();
} else {
+ $('#contacts_details_photo_wrapper').empty();
$('#file_upload_form').hide();
$('#contacts_propertymenu a[data-type="PHOTO"]').parent().show();
}
- $.getJSON('ajax/loadphoto.php',{'id':this.id},function(jsondata){
- if(jsondata.status == 'success'){
- //alert(jsondata.data.page);
- $('#contacts_details_photo_wrapper').html(jsondata.data.page);
- }
- else{
- Contacts.UI.messageBox(jsondata.data.message);
- }
- });
},
editPhoto:function(id, tmp_path){
//alert('editPhoto: ' + tmp_path);
@@ -1143,13 +1124,6 @@ $(document).ready(function(){
return false;
});
- /**
- * Open blank form to add new contact.
- * FIXME: Load the same page but only show name data and popup the name edit dialog.
- * On save load the page again with an id and show all fields.
- * NOTE: Or: Load the full page and popup name dialog modal. On success set the newly aquired ID, on
- * Cancel or failure give appropriate message and show ... something else :-P
- */
$('#contacts_newcontact').click(function(){
Contacts.UI.Card.editNew();
});
@@ -1175,9 +1149,6 @@ $(document).ready(function(){
return false;
});
- /**
- * Delete currently selected contact TODO: and clear page
- */
$('#contacts_deletecard').live('click',function(){
Contacts.UI.Card.delete();
});
diff --git a/apps/contacts/templates/part.contact.php b/apps/contacts/templates/part.contact.php
index 408b595dc9..5be20964f4 100644
--- a/apps/contacts/templates/part.contact.php
+++ b/apps/contacts/templates/part.contact.php
@@ -70,14 +70,6 @@ $id = isset($_['id']) ? $_['id'] : '';
-
-
- />
-
-
-
@@ -93,17 +85,6 @@ $id = isset($_['id']) ? $_['id'] : '';
-
-
- />
-
-
-
-
@@ -118,40 +99,6 @@ $id = isset($_['id']) ? $_['id'] : '';
-
-
- -
-
-
-
- 0) {
- //array_walk($address['parameters'], ) Nah, this wont work...
- $translated = array();
- foreach($address['parameters'] as $type) {
- $translated[] = $l->t(ucwords(strtolower($type)));
- }
- echo implode('/', $translated);
- }
- ?>
-
- -
-
- '.$adr[0].'':'');
- $tmp .= ($adr[1]?'- '.$adr[1].'
':'');
- $tmp .= ($adr[2]?'- '.$adr[2].'
':'');
- $tmp .= ($adr[3]||$adr[5]?'- '.$adr[5].' '.$adr[3].'
':'');
- $tmp .= ($adr[4]?'- '.$adr[4].'
':'');
- $tmp .= ($adr[6]?'- '.$adr[6].'
':'');
- echo $tmp;
-
- ?>
-
-
-
-
From 868cf6bb836c136d2ad881bf99710404c74507c3 Mon Sep 17 00:00:00 2001
From: Thomas Tanghus
Date: Fri, 17 Feb 2012 19:04:12 +0100
Subject: [PATCH 16/70] Avoid errors from missing GD library.
---
apps/contacts/photo.php | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/apps/contacts/photo.php b/apps/contacts/photo.php
index 8dfbcb6fb1..298f1215e3 100644
--- a/apps/contacts/photo.php
+++ b/apps/contacts/photo.php
@@ -13,10 +13,19 @@ require_once('../../lib/base.php');
OC_Util::checkLoggedIn();
OC_Util::checkAppEnabled('contacts');
+function getStandardImage(){
+ OC_Response::setExpiresHeader('P10D');
+ OC_Response::enableCaching();
+ OC_Response::redirect(OC_Helper::imagePath('contacts', 'person_large.png'));
+}
+
$id = $_GET['id'];
$contact = OC_Contacts_App::getContactVCard($id);
$image = new OC_Image();
+if(!$image) {
+ getStandardImage();
+}
// invalid vcard
if( is_null($contact)) {
OC_Log::write('contacts','photo.php. The VCard for ID '.$id.' is not RFC compatible',OC_Log::ERROR);
@@ -45,7 +54,8 @@ if( is_null($contact)) {
}
if (!$image->valid()) {
// Not found :-(
- $image->loadFromFile('img/person_large.png');
+ getStandardImage();
+ //$image->loadFromFile('img/person_large.png');
}
header('Content-Type: '.$image->mimeType());
$image->show();
From 2ee2f87efee630d9f85c8fe11c783901c469addf Mon Sep 17 00:00:00 2001
From: Thomas Tanghus
Date: Sat, 18 Feb 2012 11:42:58 +0100
Subject: [PATCH 17/70] Strip tags on address on client side.
---
apps/contacts/js/contacts.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/contacts/js/contacts.js b/apps/contacts/js/contacts.js
index c9d1dc30f0..d33f983a42 100644
--- a/apps/contacts/js/contacts.js
+++ b/apps/contacts/js/contacts.js
@@ -815,7 +815,7 @@ Contacts={
checksum = Contacts.UI.checksumFor(obj);
container = Contacts.UI.propertyContainerFor(obj);
}
- var adr = new Array($(dlg).find('#adr_pobox').val(),$(dlg).find('#adr_extended').val(),$(dlg).find('#adr_street').val(),$(dlg).find('#adr_city').val(),$(dlg).find('#adr_region').val(),$(dlg).find('#adr_zipcode').val(),$(dlg).find('#adr_country').val());
+ var adr = new Array($(dlg).find('#adr_pobox').val().strip_tags(),$(dlg).find('#adr_extended').val().strip_tags(),$(dlg).find('#adr_street').val().strip_tags(),$(dlg).find('#adr_city').val().strip_tags(),$(dlg).find('#adr_region').val().strip_tags(),$(dlg).find('#adr_zipcode').val().strip_tags(),$(dlg).find('#adr_country').val().strip_tags());
$(container).find('.adr').val(adr.join(';'));
$(container).find('.adr_type').val($(dlg).find('#adr_type').val());
$(container).find('.adr_type_label').html(t('contacts',ucwords($(dlg).find('#adr_type').val().toLowerCase())));
From 71a2241aee6f5f372b43fe977e494fea8a98d9cd Mon Sep 17 00:00:00 2001
From: Tom Needham
Date: Sat, 18 Feb 2012 23:53:10 +0000
Subject: [PATCH 18/70] Fixed call to OC_User. Thanks Burillo on IRC
---
apps/contacts/lib/app.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/contacts/lib/app.php b/apps/contacts/lib/app.php
index 016bd2b791..ff348403a9 100644
--- a/apps/contacts/lib/app.php
+++ b/apps/contacts/lib/app.php
@@ -53,7 +53,7 @@ class OC_Contacts_App {
OC_Log::write('contacts', 'Addressbook not found: '. $id, OC_Log::ERROR);
}
else {
- OC_Log::write('contacts', 'Addressbook('.$id.') is not from '.$OC_User::getUser(), OC_Log::ERROR);
+ OC_Log::write('contacts', 'Addressbook('.$id.') is not from '.OC_User::getUser(), OC_Log::ERROR);
}
OC_JSON::error(array('data' => array( 'message' => self::$l10n->t('This is not your addressbook.')))); // Same here (as with the contact error). Could this error be improved?
exit();
From 87627c7a503f10875d8fa0171624b6e586d1cc7b Mon Sep 17 00:00:00 2001
From: Michael Gapczynski
Date: Sat, 18 Feb 2012 19:30:35 -0500
Subject: [PATCH 19/70] Fix overwriting of internal sharing for shared folders
- bug oc-260
---
apps/files_sharing/ajax/getitem.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/files_sharing/ajax/getitem.php b/apps/files_sharing/ajax/getitem.php
index 51fda6aed4..ba01adffb9 100644
--- a/apps/files_sharing/ajax/getitem.php
+++ b/apps/files_sharing/ajax/getitem.php
@@ -8,6 +8,7 @@ require_once('../lib_share.php');
$userDirectory = "/".OC_User::getUser()."/files";
$source = $userDirectory.$_GET['source'];
$path = $source;
+$users = array();
if ($users = OC_Share::getMySharedItem($source)) {
for ($i = 0; $i < count($users); $i++) {
if ($users[$i]['uid_shared_with'] == OC_Share::PUBLICLINK) {
@@ -19,7 +20,6 @@ $source = dirname($source);
while ($source != "" && $source != "/" && $source != "." && $source != $userDirectory) {
if ($values = OC_Share::getMySharedItem($source)) {
$values = array_values($values);
- $users = array();
$parentUsers = array();
for ($i = 0; $i < count($values); $i++) {
if ($values[$i]['uid_shared_with'] == OC_Share::PUBLICLINK) {
From 9d2379742b92b223dd2cc171e6a155533cabc889 Mon Sep 17 00:00:00 2001
From: Florian Pritz
Date: Sun, 19 Feb 2012 21:24:53 +0100
Subject: [PATCH 20/70] apps/calendar: update ctag after deleteFromDAVData
Without this clients won't see the update because they compare ctags
before fetching the actual calendar to reduce traffic.
Signed-off-by: Florian Pritz
---
apps/calendar/lib/object.php | 1 +
1 file changed, 1 insertion(+)
diff --git a/apps/calendar/lib/object.php b/apps/calendar/lib/object.php
index cbb1badf80..230c610d35 100644
--- a/apps/calendar/lib/object.php
+++ b/apps/calendar/lib/object.php
@@ -194,6 +194,7 @@ class OC_Calendar_Object{
public static function deleteFromDAVData($cid,$uri){
$stmt = OC_DB::prepare( 'DELETE FROM *PREFIX*calendar_objects WHERE calendarid = ? AND uri=?' );
$stmt->execute(array($cid,$uri));
+ OC_Calendar_Calendar::touchCalendar($cid);
return true;
}
From 490c9db15da89797eea5c3e30fc9a0790bd60b32 Mon Sep 17 00:00:00 2001
From: Alessandro Cosentino
Date: Sun, 19 Feb 2012 20:18:27 -0500
Subject: [PATCH 21/70] Added bookmarklet for browser. Inspired by Google
Bookmarks
---
apps/bookmarks/addBm.php | 3 ++-
apps/bookmarks/css/bookmarks.css | 15 ++++++++++++++-
apps/bookmarks/templates/list.php | 6 +++++-
3 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/apps/bookmarks/addBm.php b/apps/bookmarks/addBm.php
index 62ad5821db..f56022c42c 100644
--- a/apps/bookmarks/addBm.php
+++ b/apps/bookmarks/addBm.php
@@ -40,6 +40,7 @@ $url = isset($_GET['url']) ? urldecode($_GET['url']) : '';
$metadata = getURLMetadata($url);
$tmpl->assign('URL', htmlentities($metadata['url'],ENT_COMPAT,'utf-8'));
-$tmpl->assign('TITLE', htmlentities($metadata['title'],ENT_COMPAT,'utf-8'));
+$title = isset($metadata['title']) ? $metadata['title'] : (isset($_GET['title']) ? $_GET['title'] : '');
+$tmpl->assign('TITLE', htmlentities($title,ENT_COMPAT,'utf-8'));
$tmpl->printPage();
diff --git a/apps/bookmarks/css/bookmarks.css b/apps/bookmarks/css/bookmarks.css
index 48f0bede11..8dfdc8a07b 100644
--- a/apps/bookmarks/css/bookmarks.css
+++ b/apps/bookmarks/css/bookmarks.css
@@ -83,4 +83,17 @@
.loading_meta {
display: none;
margin-left: 5px;
-}
\ No newline at end of file
+}
+
+#footer {
+ color: #999;
+ font-size: medium;
+ text-align: center;
+ position: absolute;
+ bottom: 10px;
+ left: 0px;
+ width: 100%;
+ height: 20px;
+ visibility: visible;
+ display: block
+}
diff --git a/apps/bookmarks/templates/list.php b/apps/bookmarks/templates/list.php
index ccfe74f008..d44a0ecbcd 100644
--- a/apps/bookmarks/templates/list.php
+++ b/apps/bookmarks/templates/list.php
@@ -22,4 +22,8 @@
t('You have no bookmarks'); ?>
-
\ No newline at end of file
+
+
From 7ff4e40b20dfeb937ff6dccbc87e42a8bc4f5115 Mon Sep 17 00:00:00 2001
From: Arthur Schiwon
Date: Thu, 16 Feb 2012 17:55:39 +0100
Subject: [PATCH 22/70] Combing LDAP backend with LDAP extended backend
---
apps/user_ldap/appinfo/app.php | 6 +--
apps/user_ldap/templates/settings.php | 3 ++
apps/user_ldap/user_ldap.php | 78 +++++++++++++++++++++------
3 files changed, 67 insertions(+), 20 deletions(-)
diff --git a/apps/user_ldap/appinfo/app.php b/apps/user_ldap/appinfo/app.php
index 3261708f59..5c56ca8191 100644
--- a/apps/user_ldap/appinfo/app.php
+++ b/apps/user_ldap/appinfo/app.php
@@ -32,13 +32,13 @@ define('OC_USER_BACKEND_LDAP_DEFAULT_PORT', 389);
define('OC_USER_BACKEND_LDAP_DEFAULT_DISPLAY_NAME', 'uid');
// register user backend
-OC_User::useBackend( "LDAP" );
+OC_User::useBackend( 'LDAP' );
// add settings page to navigation
$entry = array(
- 'id' => "user_ldap_settings",
+ 'id' => 'user_ldap_settings',
'order'=>1,
- 'href' => OC_Helper::linkTo( "user_ldap", "settings.php" ),
+ 'href' => OC_Helper::linkTo( 'user_ldap', 'settings.php' ),
'name' => 'LDAP'
);
// OC_App::addNavigationSubEntry( "core_users", $entry);
diff --git a/apps/user_ldap/templates/settings.php b/apps/user_ldap/templates/settings.php
index 2abb0b4729..5bbd5d4008 100644
--- a/apps/user_ldap/templates/settings.php
+++ b/apps/user_ldap/templates/settings.php
@@ -12,6 +12,9 @@
t('Currently the display name field needs to be the same you matched %%uid against in the filter above, because ownCloud doesn\'t distinguish between user id and user name.');?>
>
>
+
+ bytes
+
diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php
index 106240e74b..670d938ea9 100644
--- a/apps/user_ldap/user_ldap.php
+++ b/apps/user_ldap/user_ldap.php
@@ -36,6 +36,12 @@ class OC_USER_LDAP extends OC_User_Backend {
protected $ldap_tls;
protected $ldap_nocase;
protected $ldap_display_name;
+ protected $ldap_quota;
+ protected $ldap_quota_def;
+ protected $ldap_email;
+
+ // will be retrieved from LDAP server
+ protected $ldap_dc = false;
function __construct() {
$this->ldap_host = OC_Appconfig::getValue('user_ldap', 'ldap_host','');
@@ -47,6 +53,9 @@ class OC_USER_LDAP extends OC_User_Backend {
$this->ldap_tls = OC_Appconfig::getValue('user_ldap', 'ldap_tls', 0);
$this->ldap_nocase = OC_Appconfig::getValue('user_ldap', 'ldap_nocase', 0);
$this->ldap_display_name = OC_Appconfig::getValue('user_ldap', 'ldap_display_name', OC_USER_BACKEND_LDAP_DEFAULT_DISPLAY_NAME);
+ $this->ldap_quota_attr = OC_Appconfig::getValue('user_ldap', 'ldap_quota_attr','');
+ $this->ldap_quota_def = OC_Appconfig::getValue('user_ldap', 'ldap_quota_def','');
+ $this->ldap_email_attr = OC_Appconfig::getValue('user_ldap', 'ldap_email_attr','');
if( !empty($this->ldap_host)
&& !empty($this->ldap_port)
@@ -66,6 +75,28 @@ class OC_USER_LDAP extends OC_User_Backend {
ldap_unbind($this->ds);
}
+ private function setQuota( $uid ) {
+ if( !$this->ldap_dc )
+ return false;
+
+ $quota = $this->ldap_dc[$this->ldap_quota_attr][0];
+ $quota = $quota != -1 ? $quota : $this->ldap_quota_def;
+ OC_Preferences::setValue($uid, 'files', 'quota', $quota);
+ }
+
+ private function setEmail( $uid ) {
+ if( !$this->ldap_dc )
+ return false;
+
+ $email = OC_Preferences::getValue($uid, 'settings', 'email', '');
+ if ( !empty( $email ) )
+ return false;
+
+ $email = $this->ldap_dc[$this->ldap_email_attr][0];
+ OC_Preferences::setValue($uid, 'settings', 'email', $email);
+ }
+
+ //Connect to LDAP and store the resource
private function getDs() {
if(!$this->ds) {
$this->ds = ldap_connect( $this->ldap_host, $this->ldap_port );
@@ -74,18 +105,19 @@ class OC_USER_LDAP extends OC_User_Backend {
if($this->ldap_tls)
ldap_start_tls($this->ds);
}
-
+ //TODO: Not necessary to perform a bind each time, is it?
// login
if(!empty($this->ldap_dn)) {
$ldap_login = @ldap_bind( $this->ds, $this->ldap_dn, $this->ldap_password );
- if(!$ldap_login)
+ if(!$ldap_login) {
return false;
+ }
}
return $this->ds;
}
- private function getDn( $uid ) {
+ private function getDc( $uid ) {
if(!$this->configured)
return false;
@@ -99,31 +131,43 @@ class OC_USER_LDAP extends OC_User_Backend {
$sr = ldap_search( $this->getDs(), $this->ldap_base, $filter );
$entries = ldap_get_entries( $this->getDs(), $sr );
- if( $entries['count'] == 0 )
+ if( $entries['count'] == 0 ) {
return false;
+ }
- return $entries[0]['dn'];
+ $this->ldap_dc = $entries[0];
+
+ return $this->ldap_dc;
}
public function checkPassword( $uid, $password ) {
if(!$this->configured){
return false;
}
- $dn = $this->getDn( $uid );
- if( !$dn )
+ $dc = $this->getDc( $uid );
+ if( !$dc )
return false;
- if (!@ldap_bind( $this->getDs(), $dn, $password ))
+ if (!@ldap_bind( $this->getDs(), $dc['dn'], $password )) {
return false;
-
+ }
+
+ if(!empty($this->ldap_quota) && !empty($this->ldap_quota_def)) {
+ $this->setQuota($uid);
+ }
+
+ if(!empty($this->ldap_email_attr)) {
+ $this->setEmail($uid);
+ }
+
if($this->ldap_nocase) {
$filter = str_replace('%uid', $uid, $this->ldap_filter);
$sr = ldap_search( $this->getDs(), $this->ldap_base, $filter );
$entries = ldap_get_entries( $this->getDs(), $sr );
if( $entries['count'] == 1 ) {
foreach($entries as $row) {
- $ldap_display_name = strtolower($this->ldap_display_name);
- if(isset($row[$ldap_display_name])) {
+ $ldap_display_name = strtolower($this->ldap_display_name);
+ if(isset($row[$ldap_display_name])) {
return $row[$ldap_display_name][0];
}
}
@@ -131,12 +175,12 @@ class OC_USER_LDAP extends OC_User_Backend {
else {
return $uid;
}
-
+
}
else {
return $uid;
}
-
+
}
public function userExists( $uid ) {
@@ -146,17 +190,17 @@ class OC_USER_LDAP extends OC_User_Backend {
$dn = $this->getDn($uid);
return !empty($dn);
}
-
+
public function getUsers()
{
if(!$this->configured)
return false;
-
+
// connect to server
$ds = $this->getDs();
if( !$ds )
return false;
-
+
// get users
$filter = 'objectClass=person';
$sr = ldap_search( $this->getDs(), $this->ldap_base, $filter );
@@ -169,7 +213,7 @@ class OC_USER_LDAP extends OC_User_Backend {
// TODO ldap_get_entries() seems to lower all keys => needs review
$ldap_display_name = strtolower($this->ldap_display_name);
if(isset($row[$ldap_display_name])) {
- $users[] = $row[$ldap_display_name][0];
+ $users[] = $row[$ldap_display_name][0];
}
}
// TODO language specific sorting of user names
From 30d524b4260fe3e920b6be1f3818a0fbcbb5adfc Mon Sep 17 00:00:00 2001
From: Arthur Schiwon
Date: Mon, 20 Feb 2012 11:21:46 +0100
Subject: [PATCH 23/70] load apps before logout so that logout-hook works
---
index.php | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/index.php b/index.php
index 18ea3022bc..b4cac1879c 100644
--- a/index.php
+++ b/index.php
@@ -51,6 +51,7 @@ if($_SERVER['REQUEST_METHOD']=='PROPFIND'){
// Someone is logged in :
elseif(OC_User::isLoggedIn()) {
if(isset($_GET["logout"]) and ($_GET["logout"])) {
+ OC_App::loadApps();
OC_User::logout();
header("Location: ".OC::$WEBROOT.'/');
exit();
@@ -80,7 +81,7 @@ else {
OC_User::unsetMagicInCookie();
}
}
-
+
// Someone wants to log in :
elseif(isset($_POST["user"]) && isset($_POST['password'])) {
if(OC_User::login($_POST["user"], $_POST["password"])) {
From 12bcbcdc62989bec8222888320aa22aeda06c82c Mon Sep 17 00:00:00 2001
From: Thomas Tanghus
Date: Sun, 19 Feb 2012 23:03:10 +0100
Subject: [PATCH 24/70] Update ctag in deleteFromDAVData.
---
apps/contacts/lib/vcard.php | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/apps/contacts/lib/vcard.php b/apps/contacts/lib/vcard.php
index ece203bd45..17e95adff7 100644
--- a/apps/contacts/lib/vcard.php
+++ b/apps/contacts/lib/vcard.php
@@ -304,7 +304,7 @@ class OC_Contacts_VCard{
* @return boolean
*/
public static function delete($id){
- // FIXME: Add error checking.
+ // FIXME: Add error checking. Touch addressbook.
$stmt = OC_DB::prepare( 'DELETE FROM *PREFIX*contacts_cards WHERE id = ?' );
$stmt->execute(array($id));
@@ -329,6 +329,7 @@ class OC_Contacts_VCard{
// FIXME: Add error checking. Deleting a card gives an Kontact/Akonadi error.
$stmt = OC_DB::prepare( 'DELETE FROM *PREFIX*contacts_cards WHERE addressbookid = ? AND uri=?' );
$stmt->execute(array($aid,$uri));
+ OC_Contacts_Addressbook::touch($aid);
return true;
}
From 456ada01fa44a5de3146f58ea5de60baffe31521 Mon Sep 17 00:00:00 2001
From: Thomas Tanghus
Date: Mon, 20 Feb 2012 14:36:21 +0100
Subject: [PATCH 25/70] Contacts: Apply strip_tags on compound values.
---
apps/contacts/ajax/addproperty.php | 1 +
apps/contacts/ajax/saveproperty.php | 1 +
2 files changed, 2 insertions(+)
diff --git a/apps/contacts/ajax/addproperty.php b/apps/contacts/ajax/addproperty.php
index 03a45532f9..028974e1c6 100644
--- a/apps/contacts/ajax/addproperty.php
+++ b/apps/contacts/ajax/addproperty.php
@@ -66,6 +66,7 @@ foreach($current as $item) {
if(is_array($value)) {
ksort($value); // NOTE: Important, otherwise the compound value will be set in the order the fields appear in the form!
+ $value = array_map('strip_tags', $value);
} else {
$value = strip_tags($value);
}
diff --git a/apps/contacts/ajax/saveproperty.php b/apps/contacts/ajax/saveproperty.php
index 6c8132c1db..0c9e0cc783 100644
--- a/apps/contacts/ajax/saveproperty.php
+++ b/apps/contacts/ajax/saveproperty.php
@@ -52,6 +52,7 @@ $checksum = isset($_POST['checksum'])?$_POST['checksum']:null;
// }
if(is_array($value)){ // FIXME: How to strip_tags for compound values?
+ $value = array_map('strip_tags', $value);
ksort($value); // NOTE: Important, otherwise the compound value will be set in the order the fields appear in the form!
$value = OC_VObject::escapeSemicolons($value);
} else {
From ffdfe8257bb89750352553e71e863843e2416925 Mon Sep 17 00:00:00 2001
From: Thomas Tanghus
Date: Mon, 20 Feb 2012 15:24:54 +0100
Subject: [PATCH 26/70] Contacts: Fix adding/updating address book with empty
name.
---
apps/contacts/ajax/createaddressbook.php | 8 +++++++-
apps/contacts/ajax/updateaddressbook.php | 9 ++++++++-
apps/contacts/js/contacts.js | 22 ++++++++++++++--------
apps/contacts/js/interface.js | 8 +++++---
4 files changed, 34 insertions(+), 13 deletions(-)
diff --git a/apps/contacts/ajax/createaddressbook.php b/apps/contacts/ajax/createaddressbook.php
index fbd70bae58..28944fe864 100644
--- a/apps/contacts/ajax/createaddressbook.php
+++ b/apps/contacts/ajax/createaddressbook.php
@@ -13,7 +13,13 @@ OC_JSON::checkLoggedIn();
OC_JSON::checkAppEnabled('contacts');
$userid = OC_User::getUser();
-$bookid = OC_Contacts_Addressbook::add($userid, strip_tags($_POST['name']), null);
+$name = trim(strip_tags($_POST['name']));
+if(!$name) {
+ OC_JSON::error(array('data' => array('message' => OC_Contacts_App::$l10n->t('Cannot add addressbook with an empty name.'))));
+ OC_Log::write('contacts','ajax/createaddressbook.php: Cannot add addressbook with an empty name: '.strip_tags($_POST['name']), OC_Log::ERROR);
+ exit();
+}
+$bookid = OC_Contacts_Addressbook::add($userid, $name, null);
if(!$bookid) {
OC_JSON::error(array('data' => array('message' => OC_Contacts_App::$l10n->t('Error adding addressbook.'))));
OC_Log::write('contacts','ajax/createaddressbook.php: Error adding addressbook: '.$_POST['name'], OC_Log::ERROR);
diff --git a/apps/contacts/ajax/updateaddressbook.php b/apps/contacts/ajax/updateaddressbook.php
index b43b5b93a3..211df84b1d 100644
--- a/apps/contacts/ajax/updateaddressbook.php
+++ b/apps/contacts/ajax/updateaddressbook.php
@@ -15,7 +15,14 @@ OC_JSON::checkAppEnabled('contacts');
$bookid = $_POST['id'];
OC_Contacts_App::getAddressbook($bookid); // is owner access check
-if(!OC_Contacts_Addressbook::edit($bookid, $_POST['name'], null)) {
+$name = trim(strip_tags($_POST['name']));
+if(!$name) {
+ OC_JSON::error(array('data' => array('message' => OC_Contacts_App::$l10n->t('Cannot update addressbook with an empty name.'))));
+ OC_Log::write('contacts','ajax/updateaddressbook.php: Cannot update addressbook with an empty name: '.strip_tags($_POST['name']), OC_Log::ERROR);
+ exit();
+}
+
+if(!OC_Contacts_Addressbook::edit($bookid, $name, null)) {
OC_JSON::error(array('data' => array('message' => $l->t('Error updating addressbook.'))));
OC_Log::write('contacts','ajax/updateaddressbook.php: Error adding addressbook: ', OC_Log::ERROR);
//exit();
diff --git a/apps/contacts/js/contacts.js b/apps/contacts/js/contacts.js
index d33f983a42..0e06b650a1 100644
--- a/apps/contacts/js/contacts.js
+++ b/apps/contacts/js/contacts.js
@@ -1043,13 +1043,13 @@ Contacts={
return false;
}else{
$.post(OC.filePath('contacts', 'ajax', 'deletebook.php'), { id: bookid},
- function(data) {
- if (data.status == 'success'){
+ function(jsondata) {
+ if (jsondata.status == 'success'){
$('#chooseaddressbook_dialog').dialog('destroy').remove();
Contacts.UI.Contacts.update();
Contacts.UI.Addressbooks.overview();
} else {
- Contacts.UI.messageBox(t('contacts', 'Error'), data.message);
+ Contacts.UI.messageBox(t('contacts', 'Error'), jsondata.data.message);
//alert('Error: ' + data.message);
}
});
@@ -1059,10 +1059,14 @@ Contacts={
Contacts.UI.notImplemented();
},
submit:function(button, bookid){
- var displayname = $("#displayname_"+bookid).val();
+ var displayname = $("#displayname_"+bookid).val().trim();
var active = $("#edit_active_"+bookid+":checked").length;
var description = $("#description_"+bookid).val();
-
+
+ if(displayname.length == 0) {
+ Contacts.UI.messageBox(t('contacts', 'Error'), t('contacts', 'Displayname cannot be empty.'));
+ return false;
+ }
var url;
if (bookid == 'new'){
url = OC.filePath('contacts', 'ajax', 'createaddressbook.php');
@@ -1070,12 +1074,14 @@ Contacts={
url = OC.filePath('contacts', 'ajax', 'updateaddressbook.php');
}
$.post(url, { id: bookid, name: displayname, active: active, description: description },
- function(data){
- if(data.status == 'success'){
+ function(jsondata){
+ if(jsondata.status == 'success'){
$(button).closest('tr').prev().html(data.page).show().next().remove();
+ Contacts.UI.Contacts.update();
+ } else {
+ Contacts.UI.messageBox(t('contacts', 'Error'), jsondata.data.message);
}
});
- Contacts.UI.Contacts.update();
},
cancel:function(button, bookid){
$(button).closest('tr').prev().show().next().remove();
diff --git a/apps/contacts/js/interface.js b/apps/contacts/js/interface.js
index fe58a46d24..5908dd767a 100644
--- a/apps/contacts/js/interface.js
+++ b/apps/contacts/js/interface.js
@@ -124,12 +124,14 @@ Contacts={
url = OC.filePath('contacts', 'ajax', 'updateaddressbook.php');
}
$.post(url, { id: bookid, name: displayname, active: active, description: description },
- function(data){
- if(data.status == 'success'){
+ function(jsondata){
+ if(jsondata.status == 'success'){
$(button).closest('tr').prev().html(data.page).show().next().remove();
+ Contacts.UI.Contacts.update();
+ } else {
+ Contacts.UI.messageBox(t('contacts', 'Error'), jsondata.data.message);
}
});
- Contacts.UI.Contacts.update();
},
cancel:function(button, bookid){
$(button).closest('tr').prev().show().next().remove();
From d5f7a39936616479d576b946514ef8cddf85f05b Mon Sep 17 00:00:00 2001
From: VicDeo
Date: Mon, 20 Feb 2012 23:54:23 +0300
Subject: [PATCH 27/70] Contact list scroll fix
---
apps/contacts/js/jquery.inview.js | 52 ++++++++++++++++++++-----------
1 file changed, 34 insertions(+), 18 deletions(-)
diff --git a/apps/contacts/js/jquery.inview.js b/apps/contacts/js/jquery.inview.js
index a38ab16497..01900b0b4b 100644
--- a/apps/contacts/js/jquery.inview.js
+++ b/apps/contacts/js/jquery.inview.js
@@ -5,18 +5,40 @@
*/
(function ($) {
var inviewObjects = {}, viewportSize, viewportOffset,
- d = document, w = window, documentElement = d.documentElement, expando = $.expando;
+ d = document, w = window, documentElement = d.documentElement, expando = $.expando, isFiring = false, $elements = {};
$.event.special.inview = {
add: function(data) {
- inviewObjects[data.guid + "-" + this[expando]] = { data: data, $element: $(this) };
+ var inviewObject = { data: data, $element: $(this) }
+ inviewObjects[data.guid + "-" + this[expando]] = inviewObject;
+ var selector = inviewObject.data.selector,
+ $element = inviewObject.$element;
+ var hash = parseInt(getHash( data.guid + this[expando]));
+ $elements[hash] = selector ? $element.find(selector) : $element;
},
remove: function(data) {
try { delete inviewObjects[data.guid + "-" + this[expando]]; } catch(e) {}
+ try {
+ var hash = parseInt(getHash(data.guid + this[expando]));
+ delete($elements[hash]);
+ } catch (e){}
}
};
+
+ function getHash(str){
+ str = str+'';
+ var hash = 0;
+ if (str.length == 0) return hash;
+ for (i = 0; i < str.length; i++) {
+ char = str.charCodeAt(i);
+ hash = ((hash<<5)-hash)+char;
+ hash = hash & hash; // Convert to 32bit integer
+ }
+ return Math.abs(hash);
+ }
+
function getViewportSize() {
var mode, domObject, size = { height: w.innerHeight, width: w.innerWidth };
@@ -46,22 +68,15 @@
}
function checkInView() {
- var $elements = $(), elementsLength, i = 0;
-
- $.each(inviewObjects, function(i, inviewObject) {
- var selector = inviewObject.data.selector,
- $element = inviewObject.$element;
- $elements = $elements.add(selector ? $element.find(selector) : $element);
- });
-
- elementsLength = $elements.length;
- if (elementsLength) {
+ if (isFiring){
+ return;
+ }
+ isFiring = true;
viewportSize = viewportSize || getViewportSize();
viewportOffset = viewportOffset || getViewportOffset();
-
- for (; i
Date: Mon, 20 Feb 2012 22:33:38 +0100
Subject: [PATCH 28/70] some icons for filetypes have been added. for licensing
information please have look at core/img/filetypes/readme-2.txt
---
...ication-vnd.oasis.opendocument.formula.png | Bin 0 -> 580 bytes
...cation-vnd.oasis.opendocument.graphics.png | Bin 0 -> 572 bytes
...on-vnd.oasis.opendocument.presentation.png | Bin 0 -> 441 bytes
...ion-vnd.oasis.opendocument.spreadsheet.png | Bin 0 -> 436 bytes
...pplication-vnd.oasis.opendocument.text.png | Bin 0 -> 420 bytes
.../filetypes/application-x-7z-compressed.png | Bin 0 -> 652 bytes
.../application-x-bzip-compressed-tar.png | Bin 0 -> 652 bytes
core/img/filetypes/application-x-bzip.png | Bin 0 -> 652 bytes
.../application-x-compressed-tar.png | Bin 0 -> 652 bytes
core/img/filetypes/application-x-deb.png | Bin 0 -> 652 bytes
.../application-x-debian-package.png | Bin 0 -> 570 bytes
core/img/filetypes/application-x-gzip.png | Bin 0 -> 652 bytes
.../application-x-lzma-compressed-tar.png | Bin 0 -> 652 bytes
core/img/filetypes/application-x-rar.png | Bin 0 -> 652 bytes
core/img/filetypes/application-x-rpm.png | Bin 0 -> 652 bytes
core/img/filetypes/application-x-tar.png | Bin 0 -> 652 bytes
core/img/filetypes/application-x-tarz.png | Bin 0 -> 652 bytes
core/img/filetypes/application-zip.png | Bin 0 -> 652 bytes
core/img/filetypes/readme-2.txt | 28 ++++++++++++++++++
19 files changed, 28 insertions(+)
create mode 100644 core/img/filetypes/application-vnd.oasis.opendocument.formula.png
create mode 100644 core/img/filetypes/application-vnd.oasis.opendocument.graphics.png
create mode 100644 core/img/filetypes/application-vnd.oasis.opendocument.presentation.png
create mode 100644 core/img/filetypes/application-vnd.oasis.opendocument.spreadsheet.png
create mode 100644 core/img/filetypes/application-vnd.oasis.opendocument.text.png
create mode 100644 core/img/filetypes/application-x-7z-compressed.png
create mode 100644 core/img/filetypes/application-x-bzip-compressed-tar.png
create mode 100644 core/img/filetypes/application-x-bzip.png
create mode 100644 core/img/filetypes/application-x-compressed-tar.png
create mode 100644 core/img/filetypes/application-x-deb.png
create mode 100644 core/img/filetypes/application-x-debian-package.png
create mode 100644 core/img/filetypes/application-x-gzip.png
create mode 100644 core/img/filetypes/application-x-lzma-compressed-tar.png
create mode 100644 core/img/filetypes/application-x-rar.png
create mode 100644 core/img/filetypes/application-x-rpm.png
create mode 100644 core/img/filetypes/application-x-tar.png
create mode 100644 core/img/filetypes/application-x-tarz.png
create mode 100644 core/img/filetypes/application-zip.png
create mode 100644 core/img/filetypes/readme-2.txt
diff --git a/core/img/filetypes/application-vnd.oasis.opendocument.formula.png b/core/img/filetypes/application-vnd.oasis.opendocument.formula.png
new file mode 100644
index 0000000000000000000000000000000000000000..4cefbb690d106f7858203f619cc7766aca4b7c19
GIT binary patch
literal 580
zcmV-K0=xZ*P)bm%j6^(8~rQBta#G
zP$H2;*<>xERs(;_oO}1~oTsbJON)3ppU?T8htp)5CIInxoS~ti6b+=5!r^dy
z86F;vWwY7!>Vb$H6%mh!c#_HFH`zn!bXw--=0rqfbaXTo3!$
ze4cF-g7vcyiA4Nb>zQCM7y#A{fHUo_tQK{{#+C!keEPbGZQB404i5U2QZpkXBLTy0
zS+o>OG!@GY0Y@-!TNdSV84${nVNpj;X?;G>1m^|wZ+fu
zA3{A{^!IfGptYtskw}n8B=GrsD5a|L`unhj35R-cIt|92O;ECJu6AA|GH|QTUk9j70C3{?F?zcK0vIK&fQ&{N)=iUpPl+;5-2DWk}@P)aN*wXo^!rG_xe()6ab5hizE_>
zJUyV4!teLLOD2=?&CShn>q10^L}WxnMl8!(mo6w23X;p^L_{Q$$>a^g2#N^da2P#!
zeeL_-JRx|y)~g80haeh_PI#WTY8XZYDC+=Ill%Bl^?C{i`!(LYFHx`80f@z76H2Mo
zbUGc;gS8ri)!+E4Zcl>&bb_@SuInNq)a!NT=H@0G$GPVV%s-T#$_`{tD0X&sTIY?8
zjcr6EEF#k)GHqGbr*1=RLMhd@QmIs42MSHcVzF2Sc=_rzkDk83b{vKV2RIWw#rW7L
znx?f?%$Ylwj0m(Z
zRjimwdlPdUN@J=C6n(eDIrlj)@3|2X;Xl%VF<_{VSp~cUs!%9=1L7N}&;4$D%gv4h
zFFzeHGd;m;%ME=vIy}I6txk|rE#7W3+EPSXPADLOM!emoTrQt9n@u~BNO---Nam>T
z6h98;dg@ZCbcu*eRVtMm`GbnZqNxE_^?JP(w)O7eiS>;wug>SPq>_^WxULH#f?*h@
zh{*O{K{AW0-iF)z$DUe5B(u0GxA%`CB4QYZiHM-od@kDyU0?AWDWy69%d&o1_e1=d_+?pE2heCV
jNT<`+p_CBCVlln|C&Vf^)P;a%00000NkvXXu0mjfF{#1z
literal 0
HcmV?d00001
diff --git a/core/img/filetypes/application-vnd.oasis.opendocument.spreadsheet.png b/core/img/filetypes/application-vnd.oasis.opendocument.spreadsheet.png
new file mode 100644
index 0000000000000000000000000000000000000000..abc38d4310c9e73abb1f664a97dacb3708fcb2cc
GIT binary patch
literal 436
zcmV;l0ZaagP)ehz*L3RVxJt5er@XHZD$Pa&>ShxCX%z3W`EV6bnk{eu91jHxbOBE(Niz
z8e@!2G`UX3_llAB!W(`E?s@lIu3%Xf0KhN|=(_HJsk_djy0WzBW-$POh~|i>L`0=l
zt946E9iLpVNXF4A$IWKbk@I_({a?E!;QErWuV8oYm-YDx?(-x`AOpZ!WdSdP1X(qk
z6LEFZgCvQl9onfLefX-J4@1ljA_#-8Oam1%@?i)`5>egWO7%vg;mZBaGuoZ!%x12Z
z1rFmlhCoEC0Hy)JIy-Mq=B5gN^+umxcn<IFys;v9p2tVDEJ1|00K;M`w*)D0000#y#cx=a+!0-gf=ku8$2wIk9
zbk@CKg@MJ7t7dlMehm;Z|
zA%sA&Sj-0Sr|K{8D;OET*?&fB^r&ZU%!JlnRrIskW0
z91I5DCI_0PMdBa`px5hl0JA$Nm&=Rf^-Vn%ba`VFQx
zfNdOX1cV*L!F~axTprUl4y2Tb{L5%G`m<@ZKH^|J9-~w$y>1II3o`*ydp1-8p1Dr(>xn7O=%hWZ9B
zfuTNupqcs{iUS4)f*6WRFbIwg$iV2#?OSyggWEcS6AXHwpiWR9|Noy;!QJ_vs(xLb
z+`jn0-LDv16mA8Bq_0R8_^|kux~X_LujRk|{Ye
zYg;xqzqamv`Rcv3m+54;R)-LtFD)-0URYRU*op4994@MIh`+aIbUD
zm)<;mbUy+&QcBaNX)rTP6;-8_f{`Fps0d~{KgMu4B*i!dZdM_1M?~r`8ykOlJsYP0
zynFp>zbGalaHj(5)f1-~O;#9B78s5e8H~pah7*>Kp95g^_)&7VL*Ct`Yq#0m`A)mD
z#pm@8b*1W<8D;jJ8G_0T=^Ao9U~s5c@Z;Mjq-1iQQM#5gYcVraol4Dd6@)-c6(K|b
z%oLRjK<-*Z3X(fYDM%@}3TktJh~N$}M*?8(s0g3mzL>)dRY6Nea)(Ii``>^pSS*0!
zZX{JwN`%;}aWhnVMWtj)H^VIa0niL$xI3mwtV$0EX+HLTv?hX-9zuw7fI7HS@(fc!
zMTk{JOoo`*ydp1-8p1Dr(>xn7O=%hWZ9B
zfuTNupqcs{iUS4)f*6WRFbIwg$iV2#?OSyggWEcS6AXHwpiWR9|Noy;!QJ_vs(xLb
z+`jn0-LDv16mA8Bq_0R8_^|kux~X_LujRk|{Ye
zYg;xqzqamv`Rcv3m+54;R)-LtFD)-0URYRU*op4994@MIh`+aIbUD
zm)<;mbUy+&QcBaNX)rTP6;-8_f{`Fps0d~{KgMu4B*i!dZdM_1M?~r`8ykOlJsYP0
zynFp>zbGalaHj(5)f1-~O;#9B78s5e8H~pah7*>Kp95g^_)&7VL*Ct`Yq#0m`A)mD
z#pm@8b*1W<8D;jJ8G_0T=^Ao9U~s5c@Z;Mjq-1iQQM#5gYcVraol4Dd6@)-c6(K|b
z%oLRjK<-*Z3X(fYDM%@}3TktJh~N$}M*?8(s0g3mzL>)dRY6Nea)(Ii``>^pSS*0!
zZX{JwN`%;}aWhnVMWtj)H^VIa0niL$xI3mwtV$0EX+HLTv?hX-9zuw7fI7HS@(fc!
zMTk{JOoo`*ydp1-8p1Dr(>xn7O=%hWZ9B
zfuTNupqcs{iUS4)f*6WRFbIwg$iV2#?OSyggWEcS6AXHwpiWR9|Noy;!QJ_vs(xLb
z+`jn0-LDv16mA8Bq_0R8_^|kux~X_LujRk|{Ye
zYg;xqzqamv`Rcv3m+54;R)-LtFD)-0URYRU*op4994@MIh`+aIbUD
zm)<;mbUy+&QcBaNX)rTP6;-8_f{`Fps0d~{KgMu4B*i!dZdM_1M?~r`8ykOlJsYP0
zynFp>zbGalaHj(5)f1-~O;#9B78s5e8H~pah7*>Kp95g^_)&7VL*Ct`Yq#0m`A)mD
z#pm@8b*1W<8D;jJ8G_0T=^Ao9U~s5c@Z;Mjq-1iQQM#5gYcVraol4Dd6@)-c6(K|b
z%oLRjK<-*Z3X(fYDM%@}3TktJh~N$}M*?8(s0g3mzL>)dRY6Nea)(Ii``>^pSS*0!
zZX{JwN`%;}aWhnVMWtj)H^VIa0niL$xI3mwtV$0EX+HLTv?hX-9zuw7fI7HS@(fc!
zMTk{JOoo`*ydp1-8p1Dr(>xn7O=%hWZ9B
zfuTNupqcs{iUS4)f*6WRFbIwg$iV2#?OSyggWEcS6AXHwpiWR9|Noy;!QJ_vs(xLb
z+`jn0-LDv16mA8Bq_0R8_^|kux~X_LujRk|{Ye
zYg;xqzqamv`Rcv3m+54;R)-LtFD)-0URYRU*op4994@MIh`+aIbUD
zm)<;mbUy+&QcBaNX)rTP6;-8_f{`Fps0d~{KgMu4B*i!dZdM_1M?~r`8ykOlJsYP0
zynFp>zbGalaHj(5)f1-~O;#9B78s5e8H~pah7*>Kp95g^_)&7VL*Ct`Yq#0m`A)mD
z#pm@8b*1W<8D;jJ8G_0T=^Ao9U~s5c@Z;Mjq-1iQQM#5gYcVraol4Dd6@)-c6(K|b
z%oLRjK<-*Z3X(fYDM%@}3TktJh~N$}M*?8(s0g3mzL>)dRY6Nea)(Ii``>^pSS*0!
zZX{JwN`%;}aWhnVMWtj)H^VIa0niL$xI3mwtV$0EX+HLTv?hX-9zuw7fI7HS@(fc!
zMTk{JOoo`*ydp1-8p1Dr(>xn7O=%hWZ9B
zfuTNupqcs{iUS4)f*6WRFbIwg$iV2#?OSyggWEcS6AXHwpiWR9|Noy;!QJ_vs(xLb
z+`jn0-LDv16mA8Bq_0R8_^|kux~X_LujRk|{Ye
zYg;xqzqamv`Rcv3m+54;R)-LtFD)-0URYRU*op4994@MIh`+aIbUD
zm)<;mbUy+&QcBaNX)rTP6;-8_f{`Fps0d~{KgMu4B*i!dZdM_1M?~r`8ykOlJsYP0
zynFp>zbGalaHj(5)f1-~O;#9B78s5e8H~pah7*>Kp95g^_)&7VL*Ct`Yq#0m`A)mD
z#pm@8b*1W<8D;jJ8G_0T=^Ao9U~s5c@Z;Mjq-1iQQM#5gYcVraol4Dd6@)-c6(K|b
z%oLRjK<-*Z3X(fYDM%@}3TktJh~N$}M*?8(s0g3mzL>)dRY6Nea)(Ii``>^pSS*0!
zZX{JwN`%;}aWhnVMWtj)H^VIa0niL$xI3mwtV$0EX+HLTv?hX-9zuw7fI7HS@(fc!
zMTk{JOo%A_P)1gh6otR}*_~a-&KgAl3M!ED9#o;EGLh)=90(~9FOY|zz!fDOMP7miiU=eUhZx(j
zy}NT~hQcv1LDU@SO7o-p%^BST|66KvGdzCQ@AbBy8=GN_q1fI9pq`EhArQnfn@!&j
zUVr%c7vSxyr`&(|=-pPY8n~h)%N@Pl#{kSmU+`^1Q!km%Cc}&GUthd@^AP~O22}l>
zLsxbNHg{xsi7UGlTYZYHKCbMNx^
zO|ztFmMmst>cy0HImb6ON~@FM(f%HQ1t_<753<5_jVm!l2kQzlSCE$#09jd)bWKn>
z21}-Fw^Z%`IJN)@ASD#HMT(>pS3Xm`bC*^m|LBLJGFM!ZLS
zi-;g1#1L))UIeW`YlBh{QzV28|Lqe1F$P3d0N=KV_jr+8fcO@b0w_o+5<)EM%|<&C4EztpdHb5n6#6PFVxYPPKJt*P(b4I
z`41L#gSD2-YMwl}M?#^|sHE|AG;4r9zq~4JNPk3gaowP`CV3$Q#pOlA?}-8D<8c9K
z3vf0XpI%L_J29r;$-JwxjkVS)Ubp^q^Fh6K^Dn?1ML>Y~3yvxS99~^dWB>pF07*qo
IM6N<$f|eWirvLx|
literal 0
HcmV?d00001
diff --git a/core/img/filetypes/application-x-gzip.png b/core/img/filetypes/application-x-gzip.png
new file mode 100644
index 0000000000000000000000000000000000000000..55dd0f75366f0b7998b8b4a763b8a8dcc2a91b07
GIT binary patch
literal 652
zcmV;70(1R|P)o`*ydp1-8p1Dr(>xn7O=%hWZ9B
zfuTNupqcs{iUS4)f*6WRFbIwg$iV2#?OSyggWEcS6AXHwpiWR9|Noy;!QJ_vs(xLb
z+`jn0-LDv16mA8Bq_0R8_^|kux~X_LujRk|{Ye
zYg;xqzqamv`Rcv3m+54;R)-LtFD)-0URYRU*op4994@MIh`+aIbUD
zm)<;mbUy+&QcBaNX)rTP6;-8_f{`Fps0d~{KgMu4B*i!dZdM_1M?~r`8ykOlJsYP0
zynFp>zbGalaHj(5)f1-~O;#9B78s5e8H~pah7*>Kp95g^_)&7VL*Ct`Yq#0m`A)mD
z#pm@8b*1W<8D;jJ8G_0T=^Ao9U~s5c@Z;Mjq-1iQQM#5gYcVraol4Dd6@)-c6(K|b
z%oLRjK<-*Z3X(fYDM%@}3TktJh~N$}M*?8(s0g3mzL>)dRY6Nea)(Ii``>^pSS*0!
zZX{JwN`%;}aWhnVMWtj)H^VIa0niL$xI3mwtV$0EX+HLTv?hX-9zuw7fI7HS@(fc!
zMTk{JOoo`*ydp1-8p1Dr(>xn7O=%hWZ9B
zfuTNupqcs{iUS4)f*6WRFbIwg$iV2#?OSyggWEcS6AXHwpiWR9|Noy;!QJ_vs(xLb
z+`jn0-LDv16mA8Bq_0R8_^|kux~X_LujRk|{Ye
zYg;xqzqamv`Rcv3m+54;R)-LtFD)-0URYRU*op4994@MIh`+aIbUD
zm)<;mbUy+&QcBaNX)rTP6;-8_f{`Fps0d~{KgMu4B*i!dZdM_1M?~r`8ykOlJsYP0
zynFp>zbGalaHj(5)f1-~O;#9B78s5e8H~pah7*>Kp95g^_)&7VL*Ct`Yq#0m`A)mD
z#pm@8b*1W<8D;jJ8G_0T=^Ao9U~s5c@Z;Mjq-1iQQM#5gYcVraol4Dd6@)-c6(K|b
z%oLRjK<-*Z3X(fYDM%@}3TktJh~N$}M*?8(s0g3mzL>)dRY6Nea)(Ii``>^pSS*0!
zZX{JwN`%;}aWhnVMWtj)H^VIa0niL$xI3mwtV$0EX+HLTv?hX-9zuw7fI7HS@(fc!
zMTk{JOoo`*ydp1-8p1Dr(>xn7O=%hWZ9B
zfuTNupqcs{iUS4)f*6WRFbIwg$iV2#?OSyggWEcS6AXHwpiWR9|Noy;!QJ_vs(xLb
z+`jn0-LDv16mA8Bq_0R8_^|kux~X_LujRk|{Ye
zYg;xqzqamv`Rcv3m+54;R)-LtFD)-0URYRU*op4994@MIh`+aIbUD
zm)<;mbUy+&QcBaNX)rTP6;-8_f{`Fps0d~{KgMu4B*i!dZdM_1M?~r`8ykOlJsYP0
zynFp>zbGalaHj(5)f1-~O;#9B78s5e8H~pah7*>Kp95g^_)&7VL*Ct`Yq#0m`A)mD
z#pm@8b*1W<8D;jJ8G_0T=^Ao9U~s5c@Z;Mjq-1iQQM#5gYcVraol4Dd6@)-c6(K|b
z%oLRjK<-*Z3X(fYDM%@}3TktJh~N$}M*?8(s0g3mzL>)dRY6Nea)(Ii``>^pSS*0!
zZX{JwN`%;}aWhnVMWtj)H^VIa0niL$xI3mwtV$0EX+HLTv?hX-9zuw7fI7HS@(fc!
zMTk{JOoo`*ydp1-8p1Dr(>xn7O=%hWZ9B
zfuTNupqcs{iUS4)f*6WRFbIwg$iV2#?OSyggWEcS6AXHwpiWR9|Noy;!QJ_vs(xLb
z+`jn0-LDv16mA8Bq_0R8_^|kux~X_LujRk|{Ye
zYg;xqzqamv`Rcv3m+54;R)-LtFD)-0URYRU*op4994@MIh`+aIbUD
zm)<;mbUy+&QcBaNX)rTP6;-8_f{`Fps0d~{KgMu4B*i!dZdM_1M?~r`8ykOlJsYP0
zynFp>zbGalaHj(5)f1-~O;#9B78s5e8H~pah7*>Kp95g^_)&7VL*Ct`Yq#0m`A)mD
z#pm@8b*1W<8D;jJ8G_0T=^Ao9U~s5c@Z;Mjq-1iQQM#5gYcVraol4Dd6@)-c6(K|b
z%oLRjK<-*Z3X(fYDM%@}3TktJh~N$}M*?8(s0g3mzL>)dRY6Nea)(Ii``>^pSS*0!
zZX{JwN`%;}aWhnVMWtj)H^VIa0niL$xI3mwtV$0EX+HLTv?hX-9zuw7fI7HS@(fc!
zMTk{JOoo`*ydp1-8p1Dr(>xn7O=%hWZ9B
zfuTNupqcs{iUS4)f*6WRFbIwg$iV2#?OSyggWEcS6AXHwpiWR9|Noy;!QJ_vs(xLb
z+`jn0-LDv16mA8Bq_0R8_^|kux~X_LujRk|{Ye
zYg;xqzqamv`Rcv3m+54;R)-LtFD)-0URYRU*op4994@MIh`+aIbUD
zm)<;mbUy+&QcBaNX)rTP6;-8_f{`Fps0d~{KgMu4B*i!dZdM_1M?~r`8ykOlJsYP0
zynFp>zbGalaHj(5)f1-~O;#9B78s5e8H~pah7*>Kp95g^_)&7VL*Ct`Yq#0m`A)mD
z#pm@8b*1W<8D;jJ8G_0T=^Ao9U~s5c@Z;Mjq-1iQQM#5gYcVraol4Dd6@)-c6(K|b
z%oLRjK<-*Z3X(fYDM%@}3TktJh~N$}M*?8(s0g3mzL>)dRY6Nea)(Ii``>^pSS*0!
zZX{JwN`%;}aWhnVMWtj)H^VIa0niL$xI3mwtV$0EX+HLTv?hX-9zuw7fI7HS@(fc!
zMTk{JOoo`*ydp1-8p1Dr(>xn7O=%hWZ9B
zfuTNupqcs{iUS4)f*6WRFbIwg$iV2#?OSyggWEcS6AXHwpiWR9|Noy;!QJ_vs(xLb
z+`jn0-LDv16mA8Bq_0R8_^|kux~X_LujRk|{Ye
zYg;xqzqamv`Rcv3m+54;R)-LtFD)-0URYRU*op4994@MIh`+aIbUD
zm)<;mbUy+&QcBaNX)rTP6;-8_f{`Fps0d~{KgMu4B*i!dZdM_1M?~r`8ykOlJsYP0
zynFp>zbGalaHj(5)f1-~O;#9B78s5e8H~pah7*>Kp95g^_)&7VL*Ct`Yq#0m`A)mD
z#pm@8b*1W<8D;jJ8G_0T=^Ao9U~s5c@Z;Mjq-1iQQM#5gYcVraol4Dd6@)-c6(K|b
z%oLRjK<-*Z3X(fYDM%@}3TktJh~N$}M*?8(s0g3mzL>)dRY6Nea)(Ii``>^pSS*0!
zZX{JwN`%;}aWhnVMWtj)H^VIa0niL$xI3mwtV$0EX+HLTv?hX-9zuw7fI7HS@(fc!
zMTk{JOoo`*ydp1-8p1Dr(>xn7O=%hWZ9B
zfuTNupqcs{iUS4)f*6WRFbIwg$iV2#?OSyggWEcS6AXHwpiWR9|Noy;!QJ_vs(xLb
z+`jn0-LDv16mA8Bq_0R8_^|kux~X_LujRk|{Ye
zYg;xqzqamv`Rcv3m+54;R)-LtFD)-0URYRU*op4994@MIh`+aIbUD
zm)<;mbUy+&QcBaNX)rTP6;-8_f{`Fps0d~{KgMu4B*i!dZdM_1M?~r`8ykOlJsYP0
zynFp>zbGalaHj(5)f1-~O;#9B78s5e8H~pah7*>Kp95g^_)&7VL*Ct`Yq#0m`A)mD
z#pm@8b*1W<8D;jJ8G_0T=^Ao9U~s5c@Z;Mjq-1iQQM#5gYcVraol4Dd6@)-c6(K|b
z%oLRjK<-*Z3X(fYDM%@}3TktJh~N$}M*?8(s0g3mzL>)dRY6Nea)(Ii``>^pSS*0!
zZX{JwN`%;}aWhnVMWtj)H^VIa0niL$xI3mwtV$0EX+HLTv?hX-9zuw7fI7HS@(fc!
zMTk{JOo
Date: Tue, 21 Feb 2012 10:22:17 -0500
Subject: [PATCH 29/70] restore redirect after checkLoggedIn
---
lib/util.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/util.php b/lib/util.php
index ee32d31bfd..aa9fcdec65 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -255,7 +255,7 @@ class OC_Util {
public static function checkLoggedIn(){
// Check if we are a user
if( !OC_User::isLoggedIn()){
- header( 'Location: '.OC_Helper::linkToAbsolute( '', 'index.php' ));
+ header( 'Location: '.OC_Helper::linkToAbsolute( '', 'index.php', TRUE ));
exit();
}
}
From 21f8d0992f1ae389d8c9acc870927285e9413a96 Mon Sep 17 00:00:00 2001
From: Marvin Thomas Rabe
Date: Tue, 21 Feb 2012 18:28:27 +0100
Subject: [PATCH 30/70] Added missing files
---
apps/bookmarks/img/delete.png | Bin 0 -> 275 bytes
apps/bookmarks/img/edit.png | Bin 0 -> 310 bytes
apps/media/css/music.css | 4 ++--
3 files changed, 2 insertions(+), 2 deletions(-)
create mode 100644 apps/bookmarks/img/delete.png
create mode 100644 apps/bookmarks/img/edit.png
diff --git a/apps/bookmarks/img/delete.png b/apps/bookmarks/img/delete.png
new file mode 100644
index 0000000000000000000000000000000000000000..bc0c782882deaa4f9ecf1676592ddba0cc9aacbc
GIT binary patch
literal 275
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p
zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4%Pm*(PLD+t=F;b
z*eX3n(MkRcKXtZMbAR7WZg&GK3{-9d
P-NxYQ>gTe~DWM4f<>O_1
literal 0
HcmV?d00001
diff --git a/apps/bookmarks/img/edit.png b/apps/bookmarks/img/edit.png
new file mode 100644
index 0000000000000000000000000000000000000000..9993a092df101d4b2796379ac6f1cbe62f131a3c
GIT binary patch
literal 310
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p
zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4=coeX%YV7tbaA(MAa9*?eMT*!Qy-Sie
zj
Date: Tue, 21 Feb 2012 20:05:02 +0100
Subject: [PATCH 31/70] Move the redirect_url from linkTo function to the
checkLoggedIn function
---
lib/helper.php | 14 ++++----------
lib/util.php | 7 ++++---
2 files changed, 8 insertions(+), 13 deletions(-)
diff --git a/lib/helper.php b/lib/helper.php
index b1e6d053a1..2f71bdad2d 100644
--- a/lib/helper.php
+++ b/lib/helper.php
@@ -29,12 +29,11 @@ class OC_Helper {
* @brief Creates an url
* @param $app app
* @param $file file
- * @param $redirect_url redirect_url variable is appended to the URL
* @returns the url
*
* Returns a url to the given app and file.
*/
- public static function linkTo( $app, $file, $redirect_url=NULL, $absolute=false ){
+ public static function linkTo( $app, $file ){
if( $app != '' ){
$app .= '/';
// Check if the app is in the app folder
@@ -54,24 +53,19 @@ class OC_Helper {
}
}
- if($redirect_url)
- return $urlLinkTo.'?redirect_url='.urlencode($_SERVER["REQUEST_URI"]);
- else
- return $urlLinkTo;
-
+ return $urlLinkTo;
}
/**
* @brief Creates an absolute url
* @param $app app
* @param $file file
- * @param $redirect_url redirect_url variable is appended to the URL
* @returns the url
*
* Returns a absolute url to the given app and file.
*/
- public static function linkToAbsolute( $app, $file, $redirect_url=NULL ) {
- $urlLinkTo = self::linkTo( $app, $file, $redirect_url );
+ public static function linkToAbsolute( $app, $file ) {
+ $urlLinkTo = self::linkTo( $app, $file );
// Checking if the request was made through HTTPS. The last in line is for IIS
$protocol = isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && ($_SERVER['HTTPS']!='off');
$urlLinkTo = ($protocol?'https':'http') . '://' . $_SERVER['HTTP_HOST'] . $urlLinkTo;
diff --git a/lib/util.php b/lib/util.php
index aa9fcdec65..1b1e29b674 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -240,7 +240,7 @@ class OC_Util {
/**
- * Check if the app is enabled, send json error msg if not
+ * Check if the app is enabled, redirects to home if not
*/
public static function checkAppEnabled($app){
if( !OC_App::isEnabled($app)){
@@ -250,12 +250,13 @@ class OC_Util {
}
/**
- * Check if the user is logged in, redirects to home if not
+ * Check if the user is logged in, redirects to home if not. With
+ * redirect URL parameter to the request URI.
*/
public static function checkLoggedIn(){
// Check if we are a user
if( !OC_User::isLoggedIn()){
- header( 'Location: '.OC_Helper::linkToAbsolute( '', 'index.php', TRUE ));
+ header( 'Location: '.OC_Helper::linkToAbsolute( '', 'index.php' ).'?redirect_url='.urlencode($_SERVER["REQUEST_URI"]));
exit();
}
}
From 86d2927c02c09d6642268891e995bf9d0a11782c Mon Sep 17 00:00:00 2001
From: Bart Visscher
Date: Tue, 21 Feb 2012 20:10:40 +0100
Subject: [PATCH 32/70] Calendar: Correct calendarcolor format for ical color
property
---
apps/calendar/ajax/updatecalendar.php | 10 +++++++++-
apps/calendar/appinfo/info.xml | 2 +-
apps/calendar/appinfo/update.php | 17 +++++++++++++++++
apps/calendar/js/calendar.js | 2 +-
apps/calendar/lib/calendar.php | 24 ++++++++++++------------
5 files changed, 40 insertions(+), 15 deletions(-)
create mode 100644 apps/calendar/appinfo/update.php
diff --git a/apps/calendar/ajax/updatecalendar.php b/apps/calendar/ajax/updatecalendar.php
index 5add6d92bf..20c225d8a2 100644
--- a/apps/calendar/ajax/updatecalendar.php
+++ b/apps/calendar/ajax/updatecalendar.php
@@ -25,8 +25,16 @@ foreach($calendars as $cal){
}
$calendarid = $_POST['id'];
+$calendarcolor = $_POST['color'];
+if (preg_match('/^#?([0-9a-f]{6})/', $calendarcolor, $matches)) {
+ $calendarcolor = '#'.$matches[1];
+}
+else {
+ $calendarcolor = null;
+}
+
$calendar = OC_Calendar_App::getCalendar($calendarid);//access check
-OC_Calendar_Calendar::editCalendar($calendarid, strip_tags($_POST['name']), null, null, null, $_POST['color']);
+OC_Calendar_Calendar::editCalendar($calendarid, strip_tags($_POST['name']), null, null, null, $calendarcolor);
OC_Calendar_Calendar::setCalendarActive($calendarid, $_POST['active']);
$calendar = OC_Calendar_App::getCalendar($calendarid);
diff --git a/apps/calendar/appinfo/info.xml b/apps/calendar/appinfo/info.xml
index 46292af3db..4ac3c5bf09 100644
--- a/apps/calendar/appinfo/info.xml
+++ b/apps/calendar/appinfo/info.xml
@@ -2,7 +2,7 @@
calendar
Calendar
- 0.2
+ 0.2.1
AGPL
Georg Ehrke, Bart Visscher, Jakob Sack
2
diff --git a/apps/calendar/appinfo/update.php b/apps/calendar/appinfo/update.php
new file mode 100644
index 0000000000..375816a403
--- /dev/null
+++ b/apps/calendar/appinfo/update.php
@@ -0,0 +1,17 @@
+execute();
+ while( $row = $result->fetchRow()) {
+ $id = $row['id'];
+ $color = $row['calendarcolor'];
+ if ($color[0] == '#' || strlen($color) < 6) {
+ continue;
+ }
+ $color = '#' .$color;
+ $stmt = OC_DB::prepare( 'UPDATE *PREFIX*calendar_calendars SET calendarcolor=? WHERE id=?' );
+ $r = $stmt->execute(array($color,$id));
+ }
+}
diff --git a/apps/calendar/js/calendar.js b/apps/calendar/js/calendar.js
index 517d2ce128..ba8e293819 100644
--- a/apps/calendar/js/calendar.js
+++ b/apps/calendar/js/calendar.js
@@ -478,7 +478,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/apps/calendar/lib/calendar.php b/apps/calendar/lib/calendar.php
index 679649582d..277539af97 100644
--- a/apps/calendar/lib/calendar.php
+++ b/apps/calendar/lib/calendar.php
@@ -96,7 +96,7 @@ class OC_Calendar_Calendar{
* @param string $components Default: "VEVENT,VTODO,VJOURNAL"
* @param string $timezone Default: null
* @param integer $order Default: 1
- * @param string $color Default: null
+ * @param string $color Default: null, format: '#RRGGBB(AA)'
* @return insertid
*/
public static function addCalendar($userid,$name,$components='VEVENT,VTODO,VJOURNAL',$timezone=null,$order=0,$color=null){
@@ -122,7 +122,7 @@ class OC_Calendar_Calendar{
* @param string $components
* @param string $timezone
* @param integer $order
- * @param string $color
+ * @param string $color format: '#RRGGBB(AA)'
* @return insertid
*/
public static function addCalendarFromDAVData($principaluri,$uri,$name,$components,$timezone,$order,$color){
@@ -141,7 +141,7 @@ class OC_Calendar_Calendar{
* @param string $components Default: null
* @param string $timezone Default: null
* @param integer $order Default: null
- * @param string $color Default: null
+ * @param string $color Default: null, format: '#RRGGBB(AA)'
* @return boolean
*
* Values not null will be set
@@ -230,20 +230,20 @@ class OC_Calendar_Calendar{
}
public static function getCalendarColorOptions(){
return array(
- 'ff0000', // "Red"
- 'b3dc6c', // "Green"
- 'ffff00', // "Yellow"
- '808000', // "Olive"
- 'ffa500', // "Orange"
- 'ff7f50', // "Coral"
- 'ee82ee', // "Violet"
- '9fc6e7', // "light blue"
+ '#ff0000', // "Red"
+ '#b3dc6c', // "Green"
+ '#ffff00', // "Yellow"
+ '#808000', // "Olive"
+ '#ffa500', // "Orange"
+ '#ff7f50', // "Coral"
+ '#ee82ee', // "Violet"
+ '#9fc6e7', // "light blue"
);
}
public static function getEventSourceInfo($calendar){
return array(
'url' => 'ajax/events.php?calendar_id='.$calendar['id'],
- 'backgroundColor' => '#'.$calendar['calendarcolor'],
+ 'backgroundColor' => $calendar['calendarcolor'],
'borderColor' => '#888',
'textColor' => 'black',
'cache' => true,
From d3e6ea6ac000e6276c70c988237f7e8c548d2881 Mon Sep 17 00:00:00 2001
From: Bart Visscher
Date: Tue, 21 Feb 2012 20:28:24 +0100
Subject: [PATCH 33/70] Bookmarks: uses the core action icons
---
apps/bookmarks/img/delete.png | Bin 275 -> 0 bytes
apps/bookmarks/img/edit.png | Bin 310 -> 0 bytes
2 files changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 apps/bookmarks/img/delete.png
delete mode 100644 apps/bookmarks/img/edit.png
diff --git a/apps/bookmarks/img/delete.png b/apps/bookmarks/img/delete.png
deleted file mode 100644
index bc0c782882deaa4f9ecf1676592ddba0cc9aacbc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 275
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p
zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4%Pm*(PLD+t=F;b
z*eX3n(MkRcKXtZMbAR7WZg&GK3{-9d
P-NxYQ>gTe~DWM4f<>O_1
diff --git a/apps/bookmarks/img/edit.png b/apps/bookmarks/img/edit.png
deleted file mode 100644
index 9993a092df101d4b2796379ac6f1cbe62f131a3c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 310
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p
zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4=coeX%YV7tbaA(MAa9*?eMT*!Qy-Sie
zj
Date: Tue, 21 Feb 2012 10:11:26 +0100
Subject: [PATCH 34/70] Remove my FIXME comments when I've fixed it :-P
---
apps/contacts/ajax/saveproperty.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/contacts/ajax/saveproperty.php b/apps/contacts/ajax/saveproperty.php
index 0c9e0cc783..6f8366243f 100644
--- a/apps/contacts/ajax/saveproperty.php
+++ b/apps/contacts/ajax/saveproperty.php
@@ -51,7 +51,7 @@ $checksum = isset($_POST['checksum'])?$_POST['checksum']:null;
// }
// }
-if(is_array($value)){ // FIXME: How to strip_tags for compound values?
+if(is_array($value)){
$value = array_map('strip_tags', $value);
ksort($value); // NOTE: Important, otherwise the compound value will be set in the order the fields appear in the form!
$value = OC_VObject::escapeSemicolons($value);
From e0c92662f837161fc45cc6bd60485d113b324345 Mon Sep 17 00:00:00 2001
From: Thomas Tanghus
Date: Tue, 21 Feb 2012 23:15:26 +0100
Subject: [PATCH 35/70] JS fix on address book creation.
---
apps/contacts/js/contacts.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/contacts/js/contacts.js b/apps/contacts/js/contacts.js
index 0e06b650a1..11661320c5 100644
--- a/apps/contacts/js/contacts.js
+++ b/apps/contacts/js/contacts.js
@@ -1076,7 +1076,7 @@ Contacts={
$.post(url, { id: bookid, name: displayname, active: active, description: description },
function(jsondata){
if(jsondata.status == 'success'){
- $(button).closest('tr').prev().html(data.page).show().next().remove();
+ $(button).closest('tr').prev().html(jsondata.page).show().next().remove();
Contacts.UI.Contacts.update();
} else {
Contacts.UI.messageBox(t('contacts', 'Error'), jsondata.data.message);
From c5c843bfefb9e678b65bf30c42082676db07bc3c Mon Sep 17 00:00:00 2001
From: Thomas Tanghus
Date: Tue, 21 Feb 2012 23:19:13 +0100
Subject: [PATCH 36/70] Improved upgrading VCARD v. 2.1 => 3.0. Improved import
of malformed cards. Remove duplicate code.
---
apps/contacts/lib/vcard.php | 214 ++++++++++++++++++++++--------------
1 file changed, 129 insertions(+), 85 deletions(-)
diff --git a/apps/contacts/lib/vcard.php b/apps/contacts/lib/vcard.php
index 17e95adff7..0b8d95a2d9 100644
--- a/apps/contacts/lib/vcard.php
+++ b/apps/contacts/lib/vcard.php
@@ -103,6 +103,118 @@ class OC_Contacts_VCard{
return $result->fetchRow();
}
+ /**
+ * @brief Format property TYPE parameters for upgrading from v. 2.1
+ * @param $property Reference to a Sabre_VObject_Property.
+ * In version 2.1 e.g. a phone can be formatted like: TEL;HOME;CELL:123456789
+ * This has to be changed to either TEL;TYPE=HOME,CELL:123456789 or TEL;TYPE=HOME;TYPE=CELL:123456789 - both are valid.
+ */
+ public static function formatPropertyTypes(&$property) {
+ foreach($property->parameters as $key=>&$parameter){
+ $types = OC_Contacts_App::getTypesOfProperty($property->name);
+ if(is_array($types) && in_array(strtoupper($parameter->name), array_keys($types)) || strtoupper($parameter->name) == 'PREF') {
+ $property->parameters[] = new Sabre_VObject_Parameter('TYPE', $parameter->name);
+ }
+ unset($property->parameters[$key]);
+ }
+ }
+
+ /**
+ * @brief Decode properties for upgrading from v. 2.1
+ * @param $property Reference to a Sabre_VObject_Property.
+ * The only encoding allowed in version 3.0 is 'b' for binary. All encoded strings
+ * must therefor be decoded and the parameters removed.
+ */
+ public static function decodeProperty(&$property) {
+ // Check out for encoded string and decode them :-[
+ foreach($property->parameters as $key=>&$parameter){
+ if(strtoupper($parameter->name) == 'ENCODING') {
+ if(strtoupper($parameter->value) == 'QUOTED-PRINTABLE') { // what kind of other encodings could be used?
+ $property->value = quoted_printable_decode($property->value);
+ unset($property->parameters[$key]);
+ }
+ } elseif(strtoupper($parameter->name) == 'CHARSET') {
+ unset($property->parameters[$key]);
+ }
+ }
+ }
+
+ /**
+ * @brief Tries to update imported VCards to adhere to rfc2426 (VERSION: 3.0)
+ * @param vcard An OC_VObject of type VCARD (passed by reference).
+ */
+ protected static function updateValuesFromAdd(&$vcard) { // any suggestions for a better method name? ;-)
+ $stringprops = array('N', 'FN', 'ORG', 'NICK', 'ADR', 'NOTE');
+ $typeprops = array('ADR', 'TEL', 'EMAIL');
+ $upgrade = false;
+ $fn = $n = $uid = $email = null;
+ $version = $vcard->getAsString('VERSION');
+ // Add version if needed
+ if($version && $version < '3.0') {
+ $upgrade = true;
+ OC_Log::write('contacts','OC_Contacts_VCard::updateValuesFromAdd. Updating from version: '.$version,OC_Log::DEBUG);
+ }
+ foreach($vcard->children as &$property){
+ // Decode string properties and remove obsolete properties.
+ if($upgrade && in_array($property->name, $stringprops)) {
+ self::decodeProperty($property);
+ }
+ // Fix format of type parameters.
+ if($upgrade && in_array($property->name, $typeprops)) {
+ OC_Log::write('contacts','OC_Contacts_VCard::updateValuesFromAdd. before: '.$property->serialize(),OC_Log::DEBUG);
+ self::formatPropertyTypes($property);
+ OC_Log::write('contacts','OC_Contacts_VCard::updateValuesFromAdd. after: '.$property->serialize(),OC_Log::DEBUG);
+ }
+ if($property->name == 'FN'){
+ $fn = $property->value;
+ }
+ if($property->name == 'N'){
+ $n = $property->value;
+ }
+ if($property->name == 'UID'){
+ $uid = $property->value;
+ }
+ if($property->name == 'EMAIL' && is_null($email)){ // only use the first email as substitute for missing N or FN.
+ $email = $property->value;
+ }
+ }
+ // Check for missing 'N', 'FN' and 'UID' properties
+ if(!$fn) {
+ if($n && $n != ';;;;'){
+ $fn = join(' ', array_reverse(array_slice(explode(';', $n), 0, 2)));
+ } elseif($email) {
+ $fn = $email;
+ } else {
+ $fn = 'Unknown Name';
+ }
+ $vcard->setString('FN', $fn);
+ OC_Log::write('contacts','OC_Contacts_VCard::updateValuesFromAdd. Added missing \'FN\' field: '.$fn,OC_Log::DEBUG);
+ }
+ if(!$n || $n = ';;;;'){ // Fix missing 'N' field. Ugly hack ahead ;-)
+ $slice = array_reverse(array_slice(explode(' ', $fn), 0, 2)); // Take 2 first name parts of 'FN' and reverse.
+ if(count($slice) < 2) { // If not enought, add one more...
+ $slice[] = "";
+ }
+ $n = implode(';', $slice).';;;';
+ $vcard->setString('N', $n);
+ OC_Log::write('contacts','OC_Contacts_VCard::updateValuesFromAdd. Added missing \'N\' field: '.$n,OC_Log::DEBUG);
+ }
+ if(!$uid) {
+ $vcard->setUID();
+ OC_Log::write('contacts','OC_Contacts_VCard::updateValuesFromAdd. Added missing \'UID\' field: '.$uid,OC_Log::DEBUG);
+ }
+ $vcard->setString('VERSION','3.0');
+ // Add product ID is missing.
+ $prodid = trim($vcard->getAsString('PRODID'));
+ if(!$prodid) {
+ $appinfo = OC_App::getAppInfo('contacts');
+ $prodid = '-//ownCloud//NONSGML '.$appinfo['name'].' '.$appinfo['version'].'//EN';
+ $vcard->setString('PRODID', $prodid);
+ }
+ $now = new DateTime;
+ $vcard->setString('REV', $now->format(DateTime::W3C));
+ }
+
/**
* @brief Adds a card
* @param integer $id Addressbook id
@@ -114,58 +226,17 @@ class OC_Contacts_VCard{
$card = OC_VObject::parse($data);
if(!is_null($card)){
- $fn = $card->getAsString('FN');
- if(!$fn){ // Fix missing 'FN' field.
- $n = $card->getAsString('N');
- if(!is_null($n)){
- $fn = join(' ', array_reverse(array_slice(explode(';', $n), 0, 2)));
- $card->setString('FN', $fn);
- OC_Log::write('contacts','OC_Contacts_VCard::add. Added missing \'FN\' field: '.$fn,OC_Log::DEBUG);
- } else {
- $fn = 'Unknown Name';
- }
- }
- $n = $card->getAsString('N');
- if(!$n){ // Fix missing 'N' field.
- $n = implode(';', array_reverse(array_slice(explode(' ', $fn), 0, 2))).';;;';
- $card->setString('N', $n);
- OC_Log::write('contacts','OC_Contacts_VCard::add. Added missing \'N\' field: '.$n,OC_Log::DEBUG);
- }
- $uid = $card->getAsString('UID');
- if(!$uid){
- $card->setUID();
- $uid = $card->getAsString('UID');
- };
- $uri = $uid.'.vcf';
-
- // Add product ID.
- $prodid = trim($card->getAsString('PRODID'));
- if(!$prodid) {
- $appinfo = OC_App::getAppInfo('contacts');
- $prodid = '//ownCloud//NONSGML '.$appinfo['name'].' '.$appinfo['version'].'//EN';
- $card->setString('PRODID', $prodid);
- }
- // VCARD must have a version
- $version = $card->getAsString('VERSION');
- // Add version if needed
- if(!$version){
- $card->add(new Sabre_VObject_Property('VERSION','3.0'));
- //$data = $card->serialize();
- }/* else {
- OC_Log::write('contacts','OC_Contacts_VCard::add. Version already set as: '.$version,OC_Log::DEBUG);
- }*/
- $now = new DateTime;
- $card->setString('REV', $now->format(DateTime::W3C));
+ self::updateValuesFromAdd($card);
$data = $card->serialize();
}
else{
- // that's hard. Creating a UID and not saving it
OC_Log::write('contacts','OC_Contacts_VCard::add. Error parsing VCard: '.$data,OC_Log::ERROR);
return null; // Ditch cards that can't be parsed by Sabre.
- //$uid = self::createUID();
- //$uri = $uid.'.vcf';
};
+ $fn = $card->getAsString('FN');
+ $uid = $card->getAsString('UID');
+ $uri = $uid.'.vcf';
$stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*contacts_cards (addressbookid,fullname,carddata,uri,lastmodified) VALUES(?,?,?,?,?)' );
$result = $stmt->execute(array($id,$fn,$data,$uri,time()));
$newid = OC_DB::insertid('*PREFIX*contacts_cards');
@@ -183,54 +254,23 @@ class OC_Contacts_VCard{
* @return insertid
*/
public static function addFromDAVData($id,$uri,$data){
- $fn = $n = $uid = null;
- $email = null;
$card = OC_VObject::parse($data);
if(!is_null($card)){
- foreach($card->children as $property){
- if($property->name == 'FN'){
- $fn = $property->value;
- }
- if($property->name == 'N'){
- $n = $property->value;
- }
- if($property->name == 'UID'){
- $uid = $property->value;
- }
- if($property->name == 'EMAIL' && is_null($email)){
- $email = $property->value;
- }
- }
- }
- if(!$fn) {
- if($n){
- $fn = join(' ', array_reverse(array_slice(explode(';', $n), 0, 2)));
- } elseif($email) {
- $fn = $email;
- } else {
- $fn = 'Unknown Name';
- }
- $card->addProperty('FN', $fn);
+ self::updateValuesFromAdd($card);
$data = $card->serialize();
- OC_Log::write('contacts','OC_Contacts_VCard::add. Added missing \'FN\' field: '.$n,OC_Log::DEBUG);
- }
- if(!$n){ // Fix missing 'N' field.
- $n = implode(';', array_reverse(array_slice(explode(' ', $fn), 0, 2))).';;;';
- $card->setString('N', $n);
- $data = $card->serialize();
- OC_Log::write('contacts','OC_Contacts_VCard::add. Added missing \'N\' field: '.$n,OC_Log::DEBUG);
- }
- if(!$uid) {
- $card->setUID();
- $data = $card->serialize();
- }
+ } else {
+ OC_Log::write('contacts','OC_Contacts_VCard::addFromDAVData. Error parsing VCard: '.$data, OC_Log::ERROR);
+ return null; // Ditch cards that can't be parsed by Sabre.
+ };
+ $fn = $card->getAsString('FN');
$stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*contacts_cards (addressbookid,fullname,carddata,uri,lastmodified) VALUES(?,?,?,?,?)' );
$result = $stmt->execute(array($id,$fn,$data,$uri,time()));
+ $newid = OC_DB::insertid('*PREFIX*contacts_cards');
OC_Contacts_Addressbook::touch($id);
- return OC_DB::insertid('*PREFIX*contacts_cards');
+ return $newid;
}
/**
@@ -304,7 +344,7 @@ class OC_Contacts_VCard{
* @return boolean
*/
public static function delete($id){
- // FIXME: Add error checking. Touch addressbook.
+ // FIXME: Add error checking.
$stmt = OC_DB::prepare( 'DELETE FROM *PREFIX*contacts_cards WHERE id = ?' );
$stmt->execute(array($id));
@@ -381,10 +421,14 @@ class OC_Contacts_VCard{
'checksum' => md5($property->serialize()));
foreach($property->parameters as $parameter){
// Faulty entries by kaddressbook
+ // Actually TYPE=PREF is correct according to RFC 2426
+ // but this way is more handy in the UI. Tanghus.
if($parameter->name == 'TYPE' && $parameter->value == 'PREF'){
$parameter->name = 'PREF';
$parameter->value = '1';
}
+ // NOTE: Apparently Sabre_VObject_Reader can't always deal with value list parameters
+ // like TYPE=HOME,CELL,VOICE. Tanghus.
if ($property->name == 'TEL' && $parameter->name == 'TYPE'){
if (isset($temp['parameters'][$parameter->name])){
$temp['parameters'][$parameter->name][] = $parameter->value;
From b3f3b8c23f4f07a4d38e952f4d77827380c34b58 Mon Sep 17 00:00:00 2001
From: Marvin Thomas Rabe
Date: Tue, 21 Feb 2012 22:31:35 +0100
Subject: [PATCH 37/70] UI problems solved. Bookmarks app updated.
---
apps/bookmarks/css/bookmarks.css | 5 ++++-
apps/bookmarks/js/bookmarks.js | 3 +++
apps/bookmarks/templates/list.php | 10 ++++++----
apps/bookmarks/templates/settings.php | 2 +-
apps/contacts/css/contacts.css | 4 ++--
apps/contacts/js/contacts.js | 6 +++---
apps/gallery/css/styles.css | 6 +++---
apps/media/js/collection.js | 24 +++++++++++++-----------
apps/media/js/loader.js | 4 ++--
apps/media/js/music.js | 12 +++++-------
apps/media/js/playlist.js | 8 ++++----
apps/media/js/scanner.js | 8 ++++----
core/css/styles.css | 9 +++++----
core/js/js.js | 22 +++++++++++-----------
core/templates/layout.user.php | 4 ++--
settings/css/settings.css | 4 ++--
16 files changed, 70 insertions(+), 61 deletions(-)
diff --git a/apps/bookmarks/css/bookmarks.css b/apps/bookmarks/css/bookmarks.css
index 8dfdc8a07b..499a4e9c53 100644
--- a/apps/bookmarks/css/bookmarks.css
+++ b/apps/bookmarks/css/bookmarks.css
@@ -1,4 +1,7 @@
-#content { overflow: auto; }
+#content { overflow: auto; height: 100%; }
+#firstrun { width: 80%; margin: 5em auto auto auto; text-align: center; font-weight:bold; font-size:1.5em; color:#777;}
+#firstrun small { display: block; font-weight: normal; font-size: 0.5em; }
+#firstrun #selections { font-size:0.8em; width: 100%; margin: 2em auto auto auto; clear: both; }
.bookmarks_headline {
font-size: large;
diff --git a/apps/bookmarks/js/bookmarks.js b/apps/bookmarks/js/bookmarks.js
index fadbbd5513..328f88a45d 100644
--- a/apps/bookmarks/js/bookmarks.js
+++ b/apps/bookmarks/js/bookmarks.js
@@ -35,6 +35,7 @@ function getBookmarks() {
for(var i in bookmarks.data) {
updateBookmarksList(bookmarks.data[i]);
+ $("#firstrun").hide();
}
$('.bookmark_link').click(recordClick);
@@ -71,6 +72,8 @@ function addOrEditBookmark(event) {
var tags = encodeEntities($('#bookmark_add_tags').val());
var taglist = tags.split(' ');
var tagshtml = '';
+ $("#firstrun").hide();
+
for ( var i=0, len=taglist.length; i' + taglist[i] + ' ';
}
diff --git a/apps/bookmarks/templates/list.php b/apps/bookmarks/templates/list.php
index d44a0ecbcd..bd33fe457f 100644
--- a/apps/bookmarks/templates/list.php
+++ b/apps/bookmarks/templates/list.php
@@ -21,9 +21,11 @@
+
+
t('You have no bookmarks'); ?>
-
-
diff --git a/apps/bookmarks/templates/settings.php b/apps/bookmarks/templates/settings.php
index a985ee9d61..41433d8476 100644
--- a/apps/bookmarks/templates/settings.php
+++ b/apps/bookmarks/templates/settings.php
@@ -8,7 +8,7 @@
?>
diff --git a/apps/contacts/css/contacts.css b/apps/contacts/css/contacts.css
index 384541f375..b24ec438f2 100644
--- a/apps/contacts/css/contacts.css
+++ b/apps/contacts/css/contacts.css
@@ -17,8 +17,8 @@
#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;}
#card { /*max-width: 70em; border: thin solid lightgray; display: block;*/ }
-#firstrun { /*border: thin solid lightgray;*/ width: 80%; margin: 5em auto auto auto; text-align: center; font-weight:bold; font-size:1.5em; color:#777;}
-#firstrun #selections { /*border: thin solid lightgray;*/ font-size:0.8em; width: 100%; margin: 2em auto auto auto; clear: both; }
+#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; }
#card input[type="text"].contacts_property,input[type="email"].contacts_property { width: 16em; }
#card input[type="text"],input[type="email"],input[type="tel"],input[type="date"], select { background-color: #f8f8f8; 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; }
diff --git a/apps/contacts/js/contacts.js b/apps/contacts/js/contacts.js
index 11661320c5..d033e3f21c 100644
--- a/apps/contacts/js/contacts.js
+++ b/apps/contacts/js/contacts.js
@@ -8,7 +8,7 @@ String.prototype.strip_tags = function(){
tags = this;
stripped = tags.replace(/[\<\>]/gi, "");
return stripped;
-}
+};
Contacts={
@@ -142,7 +142,7 @@ Contacts={
}
});
});
- }
+ };
},
loadListHandlers:function() {
//$('.add,.delete').hide();
@@ -323,7 +323,7 @@ Contacts={
}
});
},
- delete:function() {
+ delete: function() {
$('#contacts_deletecard').tipsy('hide');
$.getJSON('ajax/deletecard.php',{'id':this.id},function(jsondata){
if(jsondata.status == 'success'){
diff --git a/apps/gallery/css/styles.css b/apps/gallery/css/styles.css
index c039cd5ec0..da94f9ac9e 100644
--- a/apps/gallery/css/styles.css
+++ b/apps/gallery/css/styles.css
@@ -1,8 +1,8 @@
-div#gallery_list { margin: 70pt 20pt 0 20pt; }
+div#gallery_list { margin: 4.5em 2em 0 2em; }
div#gallery_list.leftcontent { padding-top: 15pt; margin: 0; position: absolute; bottom:0px; text-align: center; overflow: auto; }
-div.gallery_album_box { width: 200px; position:relative; text-align: center; border: 0; display: inline-block; margin: 5pt; vertical-align: top; padding: 20px 5px 5px 5px; position: relative; -webkit-transition: color 0.5s ease-in-out; -o-transition: color 0.5s ease-in-out; -moz-transition: color 0.5s ease-in-out;color: #BBB;}
+div.gallery_album_box { width: 200px; position:relative; text-align: center; border: 0; display: inline-block; margin: 5pt; vertical-align: top; padding: 5px 5px 5px 5px; position: relative; -webkit-transition: color 0.5s ease-in-out; -o-transition: color 0.5s ease-in-out; -moz-transition: color 0.5s ease-in-out;color: #BBB;}
div.gallery_album_box h1 { font-size: 9pt; font-family: Verdana; }
-div.gallery_album_decoration { width: 200px; position: absolute; border: 0; height: 20px; top: 20px; text-align:right; vertical-align:middle; background-color: #eee; opacity: 0; -webkit-transition: opacity 0.5s ease-in-out; -moz-transition: opacity 0.5s ease-in-out; -o-transition: opacity 0.5s ease-in-out; border-bottom-right-radius: 7px; border-bottom-left-radius: 7px; -moz-border-radius-bottomright: 7px; -moz-border-radius-bottomleft:7px;}
+div.gallery_album_decoration { width: 200px; position: absolute; border: 0; height: 20px; top: 5px; text-align:right; vertical-align:middle; background-color: #eee; opacity: 0; -webkit-transition: opacity 0.5s ease-in-out; -moz-transition: opacity 0.5s ease-in-out; -o-transition: opacity 0.5s ease-in-out; border-bottom-right-radius: 7px; border-bottom-left-radius: 7px; -moz-border-radius-bottomright: 7px; -moz-border-radius-bottomleft:7px;}
div.gallery_album_box:hover { color: black; }
div.gallery_album_box:hover div.gallery_album_decoration { opacity: 0.7;}
div.gallery_album_decoration a {padding: 0 4pt; cursor: pointer;}
diff --git a/apps/media/js/collection.js b/apps/media/js/collection.js
index 2249acf3cc..753785f77b 100644
--- a/apps/media/js/collection.js
+++ b/apps/media/js/collection.js
@@ -1,3 +1,5 @@
+var initScanned = false;
+
Collection={
artists:[],
albums:[],
@@ -68,10 +70,10 @@ Collection={
for(var i=0;i0){
var tr=template.clone().removeClass('template');
@@ -108,7 +108,7 @@ Collection={
$('tr[data-artist="'+artist.name+'"]').addClass('active');
});
if(artist.songs.length>1){
- var expander=$('>');
+ expander=$('>');
expander.data('expanded',false);
expander.click(function(event){
var tr=$(this).parent().parent();
@@ -136,10 +136,11 @@ Collection={
var first=true;
$.each(artist.albums,function(j,album){
$.each(album.songs,function(i,song){
+ var newRow;
if(first){
newRow=tr;
}else{
- var newRow=tr.clone();
+ newRow=tr.clone();
newRow.find('td.artist').text('');
newRow.find('.expander').remove();
}
@@ -221,13 +222,14 @@ Collection={
tr.find('td.album-expander a.expander').addClass('expanded');
tr.find('td.album-expander a.expander').text('v');
$.each(albumData.songs,function(i,song){
+ var newRow;
if(i>0){
- var newRow=tr.clone();
+ newRow=tr.clone();
newRow.find('a.expander').remove();
newRow.find('td.album a').text('');
newRow.find('td.artist a').text('');
}else{
- var newRow=tr;
+ newRow=tr;
}
newRow.find('td.title a').text(song.name);
newRow.find('td.title a').click(function(event){
@@ -339,11 +341,11 @@ Collection={
path:song.song_path,
playCount:song.song_playcount,
};
- album.songs.push(songData)
+ album.songs.push(songData);
artist.songs.push(songData);
Collection.songs.push(songData);
}
-}
+};
$(document).ready(function(){
Collection.parent=$('#collection');
diff --git a/apps/media/js/loader.js b/apps/media/js/loader.js
index 055f858ae1..a832180d1e 100644
--- a/apps/media/js/loader.js
+++ b/apps/media/js/loader.js
@@ -1,7 +1,7 @@
function musicTypeFromFile(file){
var extention=file.substr(file.indexOf('.')+1);
if(extention=='ogg'){
- return 'oga'
+ return 'oga';
}
//TODO check for more specific cases
return extention;
@@ -39,7 +39,7 @@ function loadPlayer(type,ready){
}
$(document).ready(function() {
- loadPlayer.done=false
+ loadPlayer.done=false;
// FileActions.register('audio','Add to playlist','',addAudio);
// FileActions.register('application/ogg','Add to playlist','',addAudio);
diff --git a/apps/media/js/music.js b/apps/media/js/music.js
index 3373cbac25..1ffe4e1008 100644
--- a/apps/media/js/music.js
+++ b/apps/media/js/music.js
@@ -16,7 +16,7 @@ $(document).ready(function(){
PlayList.render();
});
var button=$('');
- button.css('background-image','url('+OC.imagePath('core','actions/play-add')+')')
+ button.css('background-image','url('+OC.imagePath('core','actions/play-add')+')');
button.click(function(event){
event.stopPropagation();
PlayList.add(media);
@@ -24,7 +24,7 @@ $(document).ready(function(){
});
row.find('div.name').append(button);
button.tipsy({gravity:'n', fade:true, delayIn: 400, live:true});
- }
+ };
Collection.display();
Collection.load(function(){
@@ -34,11 +34,9 @@ $(document).ready(function(){
PlayList.add(song);
PlayList.play(0);
}
- })
+ });
});
-
-
function getUrlVars(){
var vars = {}, hash;
var hashes = window.location.hash.substr(1).split('&');
@@ -52,8 +50,8 @@ function getUrlVars(){
function musicTypeFromFile(file){
var extention=file.split('.').pop();
if(extention=='ogg'){
- return 'oga'
+ return 'oga';
}
//TODO check for more specific cases
return extention;
-}
\ No newline at end of file
+}
diff --git a/apps/media/js/playlist.js b/apps/media/js/playlist.js
index 089065989a..8e9e2a9153 100644
--- a/apps/media/js/playlist.js
+++ b/apps/media/js/playlist.js
@@ -26,19 +26,19 @@ PlayList.render=function(){
li.click(function(event){
PlayList.play($(this).data('index'));
});
- li.append(img)
+ li.append(img);
li.data('index',i);
li.addClass('song');
PlayList.parent.append(li);
}
$(".jp-playlist-" + PlayList.current).addClass("collection_playing");
-}
+};
PlayList.getSelected=function(){
return $('tbody td.name input:checkbox:checked').parent().parent();
-}
+};
PlayList.hide=function(){
$('#playlist').hide();
-}
+};
$(document).ready(function(){
PlayList.parent=$('#leftcontent');
diff --git a/apps/media/js/scanner.js b/apps/media/js/scanner.js
index 0baa9db419..6c991b60d5 100644
--- a/apps/media/js/scanner.js
+++ b/apps/media/js/scanner.js
@@ -6,7 +6,7 @@ Scanner={
$.getJSON(OC.linkTo('media','ajax/api.php')+'?action=find_music',function(songs){
Scanner.songsFound=songs.length;
if(ready){
- ready(songs)
+ ready(songs);
}
});
},
@@ -24,13 +24,13 @@ Scanner={
Scanner.songsScanned=data.count;
$('#scan span.songCount').text(Scanner.songsScanned);
var progress=(Scanner.songsScanned/Scanner.songsFound)*100;
- $('#scanprogressbar').progressbar('value',progress)
+ $('#scanprogressbar').progressbar('value',progress);
});
Scanner.eventSource.listen('done',function(count){
$('#scan input.start').show();
$('#scan input.stop').hide();
$('#scanprogressbar').hide();
- Collection.load(Collection.display)
+ Collection.load(Collection.display);
if(ready){
ready();
}
@@ -41,4 +41,4 @@ Scanner={
Scanner.close();
},
-}
+};
diff --git a/core/css/styles.css b/core/css/styles.css
index 53af8b383e..335b008ffd 100644
--- a/core/css/styles.css
+++ b/core/css/styles.css
@@ -3,6 +3,7 @@
See the COPYING-README file. */
html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, dialog, figure, footer, header, hgroup, nav, section { margin:0; padding:0; border:0; outline:0; font-weight:inherit; font-size:100%; font-family:inherit; vertical-align:baseline; cursor:default; }
+html, body { height: 100%; }
article, aside, dialog, figure, footer, header, hgroup, nav, section { display:block; }
body { line-height:1.5; }
table { border-collapse:separate; border-spacing:0; white-space:nowrap; }
@@ -55,11 +56,11 @@ input[type="submit"].highlight{ background:#ffc100; border:1px solid #db0; text-
/* CONTENT ------------------------------------------------------------------ */
#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; }
+#content { top: 3.5em; left: 12.5em; position: absolute; }
#leftcontent, .leftcontent { position:fixed; overflow: auto; top:6.4em; width:20em; background:#f8f8f8; border-right:1px solid #ddd; }
#leftcontent li, .leftcontent li { background:#f8f8f8; padding:.3em .8em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; -webkit-transition:background-color 500ms; -moz-transition:background-color 500ms; -o-transition:background-color 500ms; transition:background-color 500ms; }
#leftcontent li:hover, #leftcontent li:active, #leftcontent li.active, .leftcontent li:hover, .leftcontent li:active, .leftcontent li.active { background:#eee; }
-#rightcontent, .rightcontent { position:absolute; top:6.4em; left:33em; }
+#rightcontent, .rightcontent { position:fixed; top: 6.4em; left: 32.5em; }
/* LOG IN & INSTALLATION ------------------------------------------------------------ */
@@ -113,8 +114,8 @@ table:not(.nostyle) tr { -webkit-transition:background-color 500ms; -moz-transit
tbody tr:hover, tr:active { background-color:#f8f8f8; }
#body-settings .personalblock, #body-settings .helpblock { padding:.5em 1em; margin:1em; background:#f8f8f8; color:#555; text-shadow:#fff 0 1px 0; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; }
-#body-settings .personalblock#quota { position:relative; margin-top:4.5em; padding:0; }
-#body-settings #controls+.helpblock { position:relative; margin-top:7.3em; }
+#body-settings .personalblock#quota { position:relative; padding:0; }
+#body-settings #controls+.helpblock { position:relative; margin-top: 3em; }
.personalblock > legend { margin-top:2em; }
#quota div, div.jp-play-bar, div.jp-seek-bar { padding:0; background:#e6e6e6; font-weight:normal; white-space:nowrap; -moz-border-radius-bottomleft:.4em; -webkit-border-bottom-left-radius:.4em; border-bottom-left-radius:.4em; -moz-border-radius-topleft:.4em; -webkit-border-top-left-radius:.4em; border-top-left-radius:.4em; }
diff --git a/core/js/js.js b/core/js/js.js
index c6cde3cea9..6da9c29e69 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -13,7 +13,7 @@ function t(app,text){
success:function(jsondata){
t.cache[app] = jsondata.data;
},
- })
+ });
// Bad answer ...
if( !( app in t.cache )){
@@ -58,7 +58,7 @@ OC={
}
link+=app;
if(type){
- link+=type+'/'
+ link+=type+'/';
}
link+=file;
return link;
@@ -73,7 +73,7 @@ OC={
*/
imagePath:function(app,file){
if(file.indexOf('.')==-1){//if no extention is given, use png or svg depending on browser support
- file+=(SVGSupport())?'.svg':'.png'
+ file+=(SVGSupport())?'.svg':'.png';
}
return OC.filePath(app,'img',file);
},
@@ -126,7 +126,7 @@ OC={
});
}
}
-}
+};
OC.search.customResults={};
OC.search.currentResult=-1;
OC.search.lastQuery='';
@@ -147,7 +147,7 @@ if(typeof localStorage !='undefined'){
getItem:function(name){
return JSON.parse(localStorage.getItem(OC.localStorage.namespace+name));
}
- }
+ };
}else{
//dummy localstorage
OC.localStorage={
@@ -160,7 +160,7 @@ if(typeof localStorage !='undefined'){
getItem:function(name){
return null;
}
- }
+ };
}
/**
@@ -182,7 +182,7 @@ if (!Array.prototype.filter) {
}
}
return res;
- }
+ };
}
/**
* implement Array.indexOf for browsers without native support
@@ -235,11 +235,11 @@ SVGSupport.checkMimeType=function(){
});
if(headers["Content-Type"]!='image/svg+xml'){
replaceSVG();
- SVGSupport.checkMimeType.correct=false
+ SVGSupport.checkMimeType.correct=false;
}
}
});
-}
+};
SVGSupport.checkMimeType.correct=true;
//replace all svg images with png for browser compatibility
@@ -305,11 +305,12 @@ $(document).ready(function(){
$(window).resize(function () {
fillHeight($('#leftcontent'));
+ fillWindow($('#content'));
fillWindow($('#rightcontent'));
});
$(window).trigger('resize');
- if(!SVGSupport()){//replace all svg images with png images for browser that dont support svg
+ if(!SVGSupport()){ //replace all svg images with png images for browser that dont support svg
replaceSVG();
}else{
SVGSupport.checkMimeType();
@@ -379,7 +380,6 @@ $(document).ready(function(){
}
});
- if($('body').attr("id")=="body-user") { $('#settings #expanddiv').hide(); }
$('#settings #expand').click(function(event) {
$('#settings #expanddiv').slideToggle();
event.stopPropagation();
diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php
index 64353d4d4f..c048653cce 100644
--- a/core/templates/layout.user.php
+++ b/core/templates/layout.user.php
@@ -44,8 +44,8 @@
- t('Settings');?>
-
+
t('Settings');?>
+
>
- class="active">
diff --git a/settings/css/settings.css b/settings/css/settings.css
index 8d89cee6ec..a8af839a1e 100644
--- a/settings/css/settings.css
+++ b/settings/css/settings.css
@@ -26,9 +26,9 @@ tr:hover>td.password>span { margin:0; cursor:pointer; }
tr:hover>td.remove>img, tr:hover>td.password>img, tr:hover>td.quota>img { visibility:visible; cursor:pointer; }
tr:hover>td.remove>img { float:right; }
li.selected { background-color:#ddd; }
-#content>table:not(.nostyle) { margin-top:6.5em; }
+#content>table:not(.nostyle) { margin-top:3em; }
table:not(.nostyle) { width:100%; }
-
+#rightcontent { padding-left: 1em; }
/* APPS */
li { color:#888; }
From d9914664f651a6be352084b82b2bf6ce6372b228 Mon Sep 17 00:00:00 2001
From: Marvin Thomas Rabe
Date: Tue, 21 Feb 2012 22:37:59 +0100
Subject: [PATCH 38/70] Text editor display error fixed.
---
apps/files_texteditor/css/style.css | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/apps/files_texteditor/css/style.css b/apps/files_texteditor/css/style.css
index cf24950232..bc238c1f40 100644
--- a/apps/files_texteditor/css/style.css
+++ b/apps/files_texteditor/css/style.css
@@ -1,8 +1,7 @@
#editor{
position: absoloute;
display: block;
- top: 80px;
- left: 160px;
+ top: 2em;
}
#editorwrapper{
position: absoloute;
From e2d6bf4c63b82573c266fb064dedf076eafd7261 Mon Sep 17 00:00:00 2001
From: Marvin Thomas Rabe
Date: Tue, 21 Feb 2012 23:08:57 +0100
Subject: [PATCH 39/70] Bookmarklet Window closes itself after submit.
---
apps/bookmarks/js/addBm.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/bookmarks/js/addBm.js b/apps/bookmarks/js/addBm.js
index 6e13b59bb2..59735f80ca 100644
--- a/apps/bookmarks/js/addBm.js
+++ b/apps/bookmarks/js/addBm.js
@@ -10,7 +10,7 @@ function addBookmark(event) {
url: 'ajax/addBookmark.php',
data: 'url=' + encodeURI(url) + '&title=' + encodeURI(title) + '&tags=' + encodeURI(tags),
success: function(data){
- location.href='index.php';
+ window.close();
}
});
}
\ No newline at end of file
From fd72f2bd29fad3010ee84c1e5e1f22ae5e159e88 Mon Sep 17 00:00:00 2001
From: Marvin Thomas Rabe
Date: Wed, 22 Feb 2012 16:04:17 +0100
Subject: [PATCH 40/70] Removed redundant code.
---
apps/bookmarks/addBm.php | 8 +----
apps/bookmarks/ajax/addBookmark.php | 11 ++++---
apps/bookmarks/ajax/getMeta.php | 39 ----------------------
apps/bookmarks/appinfo/app.php | 2 +-
apps/bookmarks/appinfo/database.xml | 8 -----
apps/bookmarks/appinfo/info.xml | 4 +--
apps/bookmarks/js/addBm.js | 3 +-
apps/bookmarks/js/bookmarks.js | 47 ++++-----------------------
apps/bookmarks/settings.php | 4 +--
apps/bookmarks/templates/addBm.php | 1 -
apps/bookmarks/templates/list.php | 2 +-
apps/bookmarks/templates/settings.php | 2 +-
12 files changed, 22 insertions(+), 109 deletions(-)
delete mode 100644 apps/bookmarks/ajax/getMeta.php
diff --git a/apps/bookmarks/addBm.php b/apps/bookmarks/addBm.php
index f56022c42c..d3d6ab0b1a 100644
--- a/apps/bookmarks/addBm.php
+++ b/apps/bookmarks/addBm.php
@@ -27,8 +27,6 @@ require_once('../../lib/base.php');
OC_Util::checkLoggedIn();
OC_Util::checkAppEnabled('bookmarks');
-require_once('bookmarksHelper.php');
-
OC_App::setActiveNavigationEntry( 'bookmarks_index' );
OC_Util::addScript('bookmarks','addBm');
@@ -37,10 +35,6 @@ OC_Util::addStyle('bookmarks', 'bookmarks');
$tmpl = new OC_Template( 'bookmarks', 'addBm', 'user' );
$url = isset($_GET['url']) ? urldecode($_GET['url']) : '';
-$metadata = getURLMetadata($url);
-
-$tmpl->assign('URL', htmlentities($metadata['url'],ENT_COMPAT,'utf-8'));
-$title = isset($metadata['title']) ? $metadata['title'] : (isset($_GET['title']) ? $_GET['title'] : '');
-$tmpl->assign('TITLE', htmlentities($title,ENT_COMPAT,'utf-8'));
+$tmpl->assign('URL', htmlentities($url,ENT_COMPAT,'utf-8'));
$tmpl->printPage();
diff --git a/apps/bookmarks/ajax/addBookmark.php b/apps/bookmarks/ajax/addBookmark.php
index 45b16ae5fa..8944656411 100644
--- a/apps/bookmarks/ajax/addBookmark.php
+++ b/apps/bookmarks/ajax/addBookmark.php
@@ -45,8 +45,13 @@ $query = OC_DB::prepare("
(url, title, user_id, public, added, lastmodified)
VALUES (?, ?, ?, 0, $_ut, $_ut)
");
-
-
+
+if(empty($_GET["title"])) {
+ require_once('../bookmarksHelper.php');
+ $metadata = getURLMetadata($_GET["url"]);
+ $_GET["title"] = $metadata['title'];
+}
+
$params=array(
htmlspecialchars_decode($_GET["url"]),
htmlspecialchars_decode($_GET["title"]),
@@ -56,7 +61,6 @@ $query->execute($params);
$b_id = OC_DB::insertid('*PREFIX*bookmarks');
-
if($b_id !== false) {
$query = OC_DB::prepare("
INSERT INTO *PREFIX*bookmarks_tags
@@ -76,4 +80,3 @@ if($b_id !== false) {
OC_JSON::success(array('data' => $b_id));
}
-
diff --git a/apps/bookmarks/ajax/getMeta.php b/apps/bookmarks/ajax/getMeta.php
deleted file mode 100644
index ca797315ef..0000000000
--- a/apps/bookmarks/ajax/getMeta.php
+++ /dev/null
@@ -1,39 +0,0 @@
-.
-*
-*/
-
-//no apps or filesystem
-$RUNTIME_NOSETUPFS=true;
-
-require_once('../../../lib/base.php');
-
-// Check if we are a user
-OC_JSON::checkLoggedIn();
-OC_JSON::checkAppEnabled('bookmarks');
-
-// $metadata = array();
-
-require '../bookmarksHelper.php';
-$metadata = getURLMetadata(htmlspecialchars_decode($_GET["url"]));
-
-
-OC_JSON::success(array('data' => $metadata));
diff --git a/apps/bookmarks/appinfo/app.php b/apps/bookmarks/appinfo/app.php
index 479d8ed476..a1f6139d89 100644
--- a/apps/bookmarks/appinfo/app.php
+++ b/apps/bookmarks/appinfo/app.php
@@ -1,6 +1,6 @@
+* Copyright (c) 2011 Marvin Thomas Rabe
* Copyright (c) 2011 Arthur Schiwon
* This file is licensed under the Affero General Public License version 3 or
* later.
diff --git a/apps/bookmarks/appinfo/database.xml b/apps/bookmarks/appinfo/database.xml
index fca38ad84b..f2fc68e4b5 100644
--- a/apps/bookmarks/appinfo/database.xml
+++ b/apps/bookmarks/appinfo/database.xml
@@ -75,14 +75,6 @@
descending
-
diff --git a/apps/bookmarks/appinfo/info.xml b/apps/bookmarks/appinfo/info.xml
index 23aa6c219a..862ab805a6 100644
--- a/apps/bookmarks/appinfo/info.xml
+++ b/apps/bookmarks/appinfo/info.xml
@@ -3,8 +3,8 @@
bookmarks
Bookmarks
Bookmark manager for ownCloud
- 0.1
+ 0.2
AGPL
- Arthur Schiwon
+ Arthur Schiwon, Marvin Thomas Rabe
2
\ No newline at end of file
diff --git a/apps/bookmarks/js/addBm.js b/apps/bookmarks/js/addBm.js
index 59735f80ca..d64e55e892 100644
--- a/apps/bookmarks/js/addBm.js
+++ b/apps/bookmarks/js/addBm.js
@@ -4,11 +4,10 @@ $(document).ready(function() {
function addBookmark(event) {
var url = $('#bookmark_add_url').val();
- var title = $('#bookmark_add_title').val();
var tags = $('#bookmark_add_tags').val();
$.ajax({
url: 'ajax/addBookmark.php',
- data: 'url=' + encodeURI(url) + '&title=' + encodeURI(title) + '&tags=' + encodeURI(tags),
+ data: 'url=' + encodeURI(url) + '&tags=' + encodeURI(tags),
success: function(data){
window.close();
}
diff --git a/apps/bookmarks/js/bookmarks.js b/apps/bookmarks/js/bookmarks.js
index 328f88a45d..6db0969a2b 100644
--- a/apps/bookmarks/js/bookmarks.js
+++ b/apps/bookmarks/js/bookmarks.js
@@ -11,8 +11,6 @@ $(document).ready(function() {
$('#bookmark_add_submit').click(addOrEditBookmark);
$(window).scroll(updateOnBottom);
- $('#bookmark_add_url').focusout(getMetadata);
-
$('.bookmarks_list').empty();
getBookmarks();
@@ -47,20 +45,6 @@ function getBookmarks() {
});
}
-function getMetadata() {
- var url = encodeEntities($('#bookmark_add_url').val());
- $('.loading_meta').css('display','inline');
- $.ajax({
- url: 'ajax/getMeta.php',
- data: 'url=' + encodeURIComponent(url),
- success: function(pageinfo){
- $('#bookmark_add_url').val(pageinfo.data.url);
- $('#bookmark_add_title').val(pageinfo.data.title);
- $('.loading_meta').css('display','none');
- }
- });
-}
-
// function addBookmark() {
// Instead of creating editBookmark() function, Converted the one above to
// addOrEditBookmark() to make .js file more compact.
@@ -86,21 +70,9 @@ function addOrEditBookmark(event) {
var bookmark_id = response.data;
$('.bookmarks_add').slideToggle();
$('.bookmarks_add').children('p').children('.bookmarks_input').val('');
- $('.bookmarks_list').prepend(
- '' +
- '
' +
- '' +
- '' +
- ' ' +
- '' +
- '' +
- '' +
- '
' +
- '
' + title + '
' +
- '
' + tagshtml + '
' +
- '
' + url + '
' +
- '
'
- );
+ $('.bookmarks_list').empty();
+ bookmarks_page = 0;
+ getBookmarks();
}
});
}
@@ -112,15 +84,9 @@ function addOrEditBookmark(event) {
$('.bookmarks_add').slideToggle();
$('.bookmarks_add').children('p').children('.bookmarks_input').val('');
$('#bookmark_add_id').val('0');
-
- var record = $('.bookmark_single[data-id = "' + id + '"]');
- record.children('.bookmark_url:first').text(url);
-
- var record_title = record.children('.bookmark_title:first').children('a:first');
- record_title.attr('href', url);
- record_title.text(title);
-
- record.children('.bookmark_tags:first').html(tagshtml);
+ $('.bookmarks_list').empty();
+ bookmarks_page = 0;
+ getBookmarks();
}
});
}
@@ -162,6 +128,7 @@ function updateBookmarksList(bookmark) {
if(!hasProtocol(bookmark.url)) {
bookmark.url = 'http://' + bookmark.url;
}
+ if(bookmark.title == '') bookmark.title = bookmark.url;
$('.bookmarks_list').append(
'' +
'
' +
diff --git a/apps/bookmarks/settings.php b/apps/bookmarks/settings.php
index 0ace04fa2c..9d945f64da 100644
--- a/apps/bookmarks/settings.php
+++ b/apps/bookmarks/settings.php
@@ -1,6 +1,6 @@
+ * Copyright (c) 2011 Marvin Thomas Rabe
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
@@ -8,6 +8,4 @@
$tmpl = new OC_Template( 'bookmarks', 'settings');
-//OC_Util::addScript('bookmarks','settings');
-
return $tmpl->fetchPage();
diff --git a/apps/bookmarks/templates/addBm.php b/apps/bookmarks/templates/addBm.php
index c285c3579c..9067d3481a 100644
--- a/apps/bookmarks/templates/addBm.php
+++ b/apps/bookmarks/templates/addBm.php
@@ -1,6 +1,5 @@
-
diff --git a/apps/bookmarks/templates/list.php b/apps/bookmarks/templates/list.php
index bd33fe457f..d772cb905a 100644
--- a/apps/bookmarks/templates/list.php
+++ b/apps/bookmarks/templates/list.php
@@ -1,6 +1,6 @@
+ * Copyright (c) 2011 Marvin Thomas Rabe
* Copyright (c) 2011 Arthur Schiwon
* This file is licensed under the Affero General Public License version 3 or
* later.
diff --git a/apps/bookmarks/templates/settings.php b/apps/bookmarks/templates/settings.php
index 41433d8476..b787e31f3c 100644
--- a/apps/bookmarks/templates/settings.php
+++ b/apps/bookmarks/templates/settings.php
@@ -1,6 +1,6 @@
+ * Copyright (c) 2011 Marvin Thomas Rabe
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
From 70f9936651870ad0768c26f76849fa5e7708eaee Mon Sep 17 00:00:00 2001
From: Alessandro Cosentino
Date: Wed, 22 Feb 2012 16:38:05 -0500
Subject: [PATCH 41/70] sharing code between the two bookmarklets
---
apps/bookmarks/css/bookmarks.css | 15 +--------------
apps/bookmarks/templates/bookmarklet.php | 8 ++++++++
apps/bookmarks/templates/list.php | 6 ++++--
apps/bookmarks/templates/settings.php | 7 +++++--
4 files changed, 18 insertions(+), 18 deletions(-)
create mode 100644 apps/bookmarks/templates/bookmarklet.php
diff --git a/apps/bookmarks/css/bookmarks.css b/apps/bookmarks/css/bookmarks.css
index 499a4e9c53..7203078ffd 100644
--- a/apps/bookmarks/css/bookmarks.css
+++ b/apps/bookmarks/css/bookmarks.css
@@ -1,7 +1,7 @@
#content { overflow: auto; height: 100%; }
#firstrun { width: 80%; margin: 5em auto auto auto; text-align: center; font-weight:bold; font-size:1.5em; color:#777;}
#firstrun small { display: block; font-weight: normal; font-size: 0.5em; }
-#firstrun #selections { font-size:0.8em; width: 100%; margin: 2em auto auto auto; clear: both; }
+#firstrun #selections { font-size:0.8em; font-weight: normal; width: 100%; margin: 2em auto auto auto; clear: both; }
.bookmarks_headline {
font-size: large;
@@ -87,16 +87,3 @@
display: none;
margin-left: 5px;
}
-
-#footer {
- color: #999;
- font-size: medium;
- text-align: center;
- position: absolute;
- bottom: 10px;
- left: 0px;
- width: 100%;
- height: 20px;
- visibility: visible;
- display: block
-}
diff --git a/apps/bookmarks/templates/bookmarklet.php b/apps/bookmarks/templates/bookmarklet.php
new file mode 100644
index 0000000000..eaae21d1ce
--- /dev/null
+++ b/apps/bookmarks/templates/bookmarklet.php
@@ -0,0 +1,8 @@
+" .$l->t('Drag this to your browser bookmarks and click it, when you want to bookmark a webpage:') . " ";
+ echo "";
+ echo $l->t('Add page to ownCloud') . "";
+}
diff --git a/apps/bookmarks/templates/list.php b/apps/bookmarks/templates/list.php
index d772cb905a..ae63d4dc6f 100644
--- a/apps/bookmarks/templates/list.php
+++ b/apps/bookmarks/templates/list.php
@@ -24,8 +24,10 @@
t('You have no bookmarks'); ?>
-
t('Drag this to your browser bookmarks and click it, when you want to bookmark a webpage.'); ?>
diff --git a/apps/bookmarks/templates/settings.php b/apps/bookmarks/templates/settings.php
index b787e31f3c..31edf7478b 100644
--- a/apps/bookmarks/templates/settings.php
+++ b/apps/bookmarks/templates/settings.php
@@ -8,7 +8,10 @@
?>
From 5387820a3b81b35521063bb142dd1492a87ef470 Mon Sep 17 00:00:00 2001
From: Marvin Thomas Rabe
Date: Wed, 22 Feb 2012 23:08:50 +0100
Subject: [PATCH 42/70] changed look of bookmarklet
---
apps/bookmarks/css/bookmarks.css | 2 +-
apps/bookmarks/templates/bookmarklet.php | 8 ++++----
apps/bookmarks/templates/list.php | 8 +++-----
3 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/apps/bookmarks/css/bookmarks.css b/apps/bookmarks/css/bookmarks.css
index 7203078ffd..fedd2af7c4 100644
--- a/apps/bookmarks/css/bookmarks.css
+++ b/apps/bookmarks/css/bookmarks.css
@@ -1,6 +1,6 @@
#content { overflow: auto; height: 100%; }
#firstrun { width: 80%; margin: 5em auto auto auto; text-align: center; font-weight:bold; font-size:1.5em; color:#777;}
-#firstrun small { display: block; font-weight: normal; font-size: 0.5em; }
+#firstrun small { display: block; font-weight: normal; font-size: 0.5em; margin-bottom: 1.5em; }
#firstrun #selections { font-size:0.8em; font-weight: normal; width: 100%; margin: 2em auto auto auto; clear: both; }
.bookmarks_headline {
diff --git a/apps/bookmarks/templates/bookmarklet.php b/apps/bookmarks/templates/bookmarklet.php
index eaae21d1ce..5719603da5 100644
--- a/apps/bookmarks/templates/bookmarklet.php
+++ b/apps/bookmarks/templates/bookmarklet.php
@@ -1,8 +1,8 @@
" .$l->t('Drag this to your browser bookmarks and click it, when you want to bookmark a webpage:') . " ";
- echo "";
- echo $l->t('Add page to ownCloud') . "";
+ $l = new OC_L10N('bookmarks');
+ echo '' . $l->t('Drag this to your browser bookmarks and click it, when you want to bookmark a webpage:') . ''
+ . ''
+ . $l->t('Add page to ownCloud') . '';
}
diff --git a/apps/bookmarks/templates/list.php b/apps/bookmarks/templates/list.php
index ae63d4dc6f..46577d1683 100644
--- a/apps/bookmarks/templates/list.php
+++ b/apps/bookmarks/templates/list.php
@@ -23,11 +23,9 @@
- t('You have no bookmarks'); ?>
-
t('You have no bookmarks');
+ require_once('bookmarklet.php');
+ createBookmarklet();
?>
-
From 3988ec2813c88fdd8a5caf5bb2a04a60868b18cc Mon Sep 17 00:00:00 2001
From: Marvin Thomas Rabe
Date: Wed, 22 Feb 2012 23:22:17 +0100
Subject: [PATCH 43/70] Updated bookmark form
---
apps/bookmarks/css/bookmarks.css | 7 +------
apps/bookmarks/js/bookmarks.js | 18 +++---------------
apps/bookmarks/templates/list.php | 13 ++++---------
settings/templates/users.php | 11 +++++------
4 files changed, 13 insertions(+), 36 deletions(-)
diff --git a/apps/bookmarks/css/bookmarks.css b/apps/bookmarks/css/bookmarks.css
index fedd2af7c4..12ccf938b5 100644
--- a/apps/bookmarks/css/bookmarks.css
+++ b/apps/bookmarks/css/bookmarks.css
@@ -15,11 +15,6 @@
padding: 0.5ex;
}
-.bookmarks_add {
- display: none;
- margin-top: 45px;
-}
-
.bookmarks_list {
margin-top: 36px;
}
@@ -35,7 +30,7 @@
}
.bookmarks_input {
- width: 20em;
+ width: 8em;
}
.bookmark_actions {
diff --git a/apps/bookmarks/js/bookmarks.js b/apps/bookmarks/js/bookmarks.js
index 6db0969a2b..166024eabd 100644
--- a/apps/bookmarks/js/bookmarks.js
+++ b/apps/bookmarks/js/bookmarks.js
@@ -3,11 +3,7 @@ var bookmarks_loading = false;
var bookmarks_sorting = 'bookmarks_sorting_recent';
-$(document).ready(function() {
- $('.bookmarks_addBtn').click(function(event){
- $('.bookmarks_add').slideToggle();
- });
-
+$(document).ready(function() {
$('#bookmark_add_submit').click(addOrEditBookmark);
$(window).scroll(updateOnBottom);
@@ -55,21 +51,14 @@ function addOrEditBookmark(event) {
var title = encodeEntities($('#bookmark_add_title').val());
var tags = encodeEntities($('#bookmark_add_tags').val());
var taglist = tags.split(' ');
- var tagshtml = '';
$("#firstrun").hide();
-
- for ( var i=0, len=taglist.length; i' + taglist[i] + ' ';
- }
if (id == 0) {
$.ajax({
url: 'ajax/addBookmark.php',
data: 'url=' + encodeURI(url) + '&title=' + encodeURI(title) + '&tags=' + encodeURI(tags),
success: function(response){
- var bookmark_id = response.data;
- $('.bookmarks_add').slideToggle();
- $('.bookmarks_add').children('p').children('.bookmarks_input').val('');
+ $('.bookmarks_input').val('');
$('.bookmarks_list').empty();
bookmarks_page = 0;
getBookmarks();
@@ -81,8 +70,7 @@ function addOrEditBookmark(event) {
url: 'ajax/editBookmark.php',
data: 'id=' + id + '&url=' + encodeURI(url) + '&title=' + encodeURI(title) + '&tags=' + encodeURI(tags),
success: function(){
- $('.bookmarks_add').slideToggle();
- $('.bookmarks_add').children('p').children('.bookmarks_input').val('');
+ $('.bookmarks_input').val('');
$('#bookmark_add_id').val('0');
$('.bookmarks_list').empty();
bookmarks_page = 0;
diff --git a/apps/bookmarks/templates/list.php b/apps/bookmarks/templates/list.php
index 46577d1683..b3849069fe 100644
--- a/apps/bookmarks/templates/list.php
+++ b/apps/bookmarks/templates/list.php
@@ -9,16 +9,11 @@
?>
-
-
-
diff --git a/settings/templates/users.php b/settings/templates/users.php
index bcc4d65fe4..fde4cfb9ae 100644
--- a/settings/templates/users.php
+++ b/settings/templates/users.php
@@ -12,15 +12,14 @@ foreach($_["groups"] as $group) {
From 996e6cf419cc9ebecb9c8985e444ee1ba17e9395 Mon Sep 17 00:00:00 2001
From: Marvin Thomas Rabe
Date: Wed, 22 Feb 2012 23:28:36 +0100
Subject: [PATCH 44/70] No bookmarks message will now show up if all bookmarks
are delted
---
apps/bookmarks/js/bookmarks.js | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/apps/bookmarks/js/bookmarks.js b/apps/bookmarks/js/bookmarks.js
index 166024eabd..2b8dbc3d6d 100644
--- a/apps/bookmarks/js/bookmarks.js
+++ b/apps/bookmarks/js/bookmarks.js
@@ -9,7 +9,6 @@ $(document).ready(function() {
$('.bookmarks_list').empty();
getBookmarks();
-
});
function getBookmarks() {
@@ -50,7 +49,6 @@ function addOrEditBookmark(event) {
var url = encodeEntities($('#bookmark_add_url').val());
var title = encodeEntities($('#bookmark_add_title').val());
var tags = encodeEntities($('#bookmark_add_tags').val());
- var taglist = tags.split(' ');
$("#firstrun").hide();
if (id == 0) {
@@ -86,7 +84,12 @@ function delBookmark(event) {
$.ajax({
url: 'ajax/delBookmark.php',
data: 'url=' + encodeURI($(this).parent().parent().children('.bookmark_url:first').text()),
- success: function(data){ record.animate({ opacity: 'hide' }, 'fast'); }
+ success: function(data){
+ record.remove();
+ if($('.bookmarks_list').is(':empty')) {
+ $("#firstrun").show();
+ }
+ }
});
}
From 77493e8d704c5a9c986b453583f966cb976409c9 Mon Sep 17 00:00:00 2001
From: Marvin Thomas Rabe
Date: Wed, 22 Feb 2012 23:52:56 +0100
Subject: [PATCH 45/70] Changed bookmarklet to read later widget
---
apps/bookmarks/addBm.php | 13 ++----
apps/bookmarks/ajax/addBookmark.php | 53 ++----------------------
apps/bookmarks/bookmarksHelper.php | 52 +++++++++++++++++++++++
apps/bookmarks/css/bookmarks.css | 1 +
apps/bookmarks/templates/addBm.php | 17 +++++---
apps/bookmarks/templates/bookmarklet.php | 4 +-
6 files changed, 72 insertions(+), 68 deletions(-)
diff --git a/apps/bookmarks/addBm.php b/apps/bookmarks/addBm.php
index d3d6ab0b1a..0225a7aa7b 100644
--- a/apps/bookmarks/addBm.php
+++ b/apps/bookmarks/addBm.php
@@ -27,14 +27,7 @@ require_once('../../lib/base.php');
OC_Util::checkLoggedIn();
OC_Util::checkAppEnabled('bookmarks');
-OC_App::setActiveNavigationEntry( 'bookmarks_index' );
+require_once('bookmarksHelper.php');
+addBookmark($_GET['url']);
-OC_Util::addScript('bookmarks','addBm');
-OC_Util::addStyle('bookmarks', 'bookmarks');
-
-$tmpl = new OC_Template( 'bookmarks', 'addBm', 'user' );
-
-$url = isset($_GET['url']) ? urldecode($_GET['url']) : '';
-$tmpl->assign('URL', htmlentities($url,ENT_COMPAT,'utf-8'));
-
-$tmpl->printPage();
+include 'templates/addBm.php';
diff --git a/apps/bookmarks/ajax/addBookmark.php b/apps/bookmarks/ajax/addBookmark.php
index 8944656411..8cda7f0f06 100644
--- a/apps/bookmarks/ajax/addBookmark.php
+++ b/apps/bookmarks/ajax/addBookmark.php
@@ -30,53 +30,6 @@ require_once('../../../lib/base.php');
OC_JSON::checkLoggedIn();
OC_JSON::checkAppEnabled('bookmarks');
-$CONFIG_DBTYPE = OC_Config::getValue( "dbtype", "sqlite" );
-if( $CONFIG_DBTYPE == 'sqlite' or $CONFIG_DBTYPE == 'sqlite3' ){
- $_ut = "strftime('%s','now')";
-} elseif($CONFIG_DBTYPE == 'pgsql') {
- $_ut = 'date_part(\'epoch\',now())::integer';
-} else {
- $_ut = "UNIX_TIMESTAMP()";
-}
-
-//FIXME: Detect when user adds a known URL
-$query = OC_DB::prepare("
- INSERT INTO *PREFIX*bookmarks
- (url, title, user_id, public, added, lastmodified)
- VALUES (?, ?, ?, 0, $_ut, $_ut)
- ");
-
-if(empty($_GET["title"])) {
- require_once('../bookmarksHelper.php');
- $metadata = getURLMetadata($_GET["url"]);
- $_GET["title"] = $metadata['title'];
-}
-
-$params=array(
- htmlspecialchars_decode($_GET["url"]),
- htmlspecialchars_decode($_GET["title"]),
- OC_User::getUser()
- );
-$query->execute($params);
-
-$b_id = OC_DB::insertid('*PREFIX*bookmarks');
-
-if($b_id !== false) {
- $query = OC_DB::prepare("
- INSERT INTO *PREFIX*bookmarks_tags
- (bookmark_id, tag)
- VALUES (?, ?)
- ");
-
- $tags = explode(' ', urldecode($_GET["tags"]));
- foreach ($tags as $tag) {
- if(empty($tag)) {
- //avoid saving blankspaces
- continue;
- }
- $params = array($b_id, trim($tag));
- $query->execute($params);
- }
-
- OC_JSON::success(array('data' => $b_id));
-}
+require_once('../bookmarksHelper.php');
+$id = addBookmark($_GET['url'], $_GET['title'], $_GET['tags']);
+OC_JSON::success(array('data' => $id));
\ No newline at end of file
diff --git a/apps/bookmarks/bookmarksHelper.php b/apps/bookmarks/bookmarksHelper.php
index ac512fbc24..8def7401e2 100644
--- a/apps/bookmarks/bookmarksHelper.php
+++ b/apps/bookmarks/bookmarksHelper.php
@@ -70,3 +70,55 @@ function getURLMetadata($url) {
return $metadata;
}
+
+function addBookmark($url, $title='', $tags='') {
+ $CONFIG_DBTYPE = OC_Config::getValue( "dbtype", "sqlite" );
+ if( $CONFIG_DBTYPE == 'sqlite' or $CONFIG_DBTYPE == 'sqlite3' ){
+ $_ut = "strftime('%s','now')";
+ } elseif($CONFIG_DBTYPE == 'pgsql') {
+ $_ut = 'date_part(\'epoch\',now())::integer';
+ } else {
+ $_ut = "UNIX_TIMESTAMP()";
+ }
+
+ //FIXME: Detect when user adds a known URL
+ $query = OC_DB::prepare("
+ INSERT INTO *PREFIX*bookmarks
+ (url, title, user_id, public, added, lastmodified)
+ VALUES (?, ?, ?, 0, $_ut, $_ut)
+ ");
+
+ if(empty($title)) {
+ $metadata = getURLMetadata($url);
+ $title = $metadata['title'];
+ }
+
+ $params=array(
+ htmlspecialchars_decode($url),
+ htmlspecialchars_decode($title),
+ OC_User::getUser()
+ );
+ $query->execute($params);
+
+ $b_id = OC_DB::insertid('*PREFIX*bookmarks');
+
+ if($b_id !== false) {
+ $query = OC_DB::prepare("
+ INSERT INTO *PREFIX*bookmarks_tags
+ (bookmark_id, tag)
+ VALUES (?, ?)
+ ");
+
+ $tags = explode(' ', urldecode($tags));
+ foreach ($tags as $tag) {
+ if(empty($tag)) {
+ //avoid saving blankspaces
+ continue;
+ }
+ $params = array($b_id, trim($tag));
+ $query->execute($params);
+ }
+
+ return $b_id;
+ }
+}
\ No newline at end of file
diff --git a/apps/bookmarks/css/bookmarks.css b/apps/bookmarks/css/bookmarks.css
index 12ccf938b5..b1139f2c34 100644
--- a/apps/bookmarks/css/bookmarks.css
+++ b/apps/bookmarks/css/bookmarks.css
@@ -1,6 +1,7 @@
#content { overflow: auto; height: 100%; }
#firstrun { width: 80%; margin: 5em auto auto auto; text-align: center; font-weight:bold; font-size:1.5em; color:#777;}
#firstrun small { display: block; font-weight: normal; font-size: 0.5em; margin-bottom: 1.5em; }
+#firstrun .button { font-size: 0.7em; }
#firstrun #selections { font-size:0.8em; font-weight: normal; width: 100%; margin: 2em auto auto auto; clear: both; }
.bookmarks_headline {
diff --git a/apps/bookmarks/templates/addBm.php b/apps/bookmarks/templates/addBm.php
index 9067d3481a..dbe673f53a 100644
--- a/apps/bookmarks/templates/addBm.php
+++ b/apps/bookmarks/templates/addBm.php
@@ -1,6 +1,11 @@
-
-
-
-
-
-
+
+
+
+
+ Read later - ownCloud
+
+
+
+ Saved!
+
+
\ No newline at end of file
diff --git a/apps/bookmarks/templates/bookmarklet.php b/apps/bookmarks/templates/bookmarklet.php
index 5719603da5..23779477cb 100644
--- a/apps/bookmarks/templates/bookmarklet.php
+++ b/apps/bookmarks/templates/bookmarklet.php
@@ -3,6 +3,6 @@
function createBookmarklet() {
$l = new OC_L10N('bookmarks');
echo '' . $l->t('Drag this to your browser bookmarks and click it, when you want to bookmark a webpage:') . ''
- . ''
- . $l->t('Add page to ownCloud') . '';
+ . ''
+ . $l->t('Read later') . '';
}
From 358fd1c0241d1f8c21637490350c0eac6b29c230 Mon Sep 17 00:00:00 2001
From: Marvin Thomas Rabe
Date: Wed, 22 Feb 2012 23:53:54 +0100
Subject: [PATCH 46/70] Changed text
---
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 23779477cb..3d8bbcc7b3 100644
--- a/apps/bookmarks/templates/bookmarklet.php
+++ b/apps/bookmarks/templates/bookmarklet.php
@@ -2,7 +2,7 @@
function createBookmarklet() {
$l = new OC_L10N('bookmarks');
- echo '' . $l->t('Drag this to your browser bookmarks and click it, when you want to bookmark a webpage:') . ''
+ 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 196d6196895e7128d9cd79ac861fdc65c7b54c09 Mon Sep 17 00:00:00 2001
From: Marvin Thomas Rabe
Date: Wed, 22 Feb 2012 23:58:38 +0100
Subject: [PATCH 47/70] Little bookmark improvement
---
apps/bookmarks/js/bookmarks.js | 3 +++
apps/bookmarks/templates/list.php | 2 +-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/apps/bookmarks/js/bookmarks.js b/apps/bookmarks/js/bookmarks.js
index 2b8dbc3d6d..17688615df 100644
--- a/apps/bookmarks/js/bookmarks.js
+++ b/apps/bookmarks/js/bookmarks.js
@@ -30,6 +30,9 @@ function getBookmarks() {
updateBookmarksList(bookmarks.data[i]);
$("#firstrun").hide();
}
+ if($('.bookmarks_list').is(':empty')) {
+ $("#firstrun").show();
+ }
$('.bookmark_link').click(recordClick);
$('.bookmark_delete').click(delBookmark);
diff --git a/apps/bookmarks/templates/list.php b/apps/bookmarks/templates/list.php
index b3849069fe..1abdbb7f83 100644
--- a/apps/bookmarks/templates/list.php
+++ b/apps/bookmarks/templates/list.php
@@ -17,7 +17,7 @@
-
+
t('You have no bookmarks');
require_once('bookmarklet.php');
From a62e109e8cafe710f7bf47c86815e34106852285 Mon Sep 17 00:00:00 2001
From: Frank Karlitschek
Date: Thu, 23 Feb 2012 15:37:38 +0100
Subject: [PATCH 48/70] =?UTF-8?q?make=20the=20location=20of=20the=203rdpar?=
=?UTF-8?q?ty=20folder=20flexible.=20It=C2=B4s=20automatically=20search=20?=
=?UTF-8?q?in=20the=20owncloud=20folder=20and=20in=20the=20parent=20folder?=
=?UTF-8?q?.=20override=20with=20an=20option=20in=20config.php=20is=20also?=
=?UTF-8?q?=20possible?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/calendar/ajax/events.php | 2 +-
config/config.sample.php | 2 ++
lib/base.php | 33 ++++++++++++++++++++++++++++++++-
lib/template.php | 22 +++++++++++++++++++---
4 files changed, 54 insertions(+), 5 deletions(-)
diff --git a/apps/calendar/ajax/events.php b/apps/calendar/ajax/events.php
index 7734129bd9..1436f63431 100755
--- a/apps/calendar/ajax/events.php
+++ b/apps/calendar/ajax/events.php
@@ -7,7 +7,7 @@
*/
require_once ('../../../lib/base.php');
-require_once('../../../3rdparty/when/When.php');
+require_once('when/When.php');
function create_return_event($event, $vevent){
$return_event = array();
diff --git a/config/config.sample.php b/config/config.sample.php
index cd52535871..5206737455 100755
--- a/config/config.sample.php
+++ b/config/config.sample.php
@@ -13,6 +13,8 @@ $CONFIG = array(
"forcessl" => false,
"enablebackup" => false,
"theme" => "",
+"3rdpartyroot" => "",
+"3rdpartyurl" => "",
// "datadirectory" => ""
);
?>
diff --git a/lib/base.php b/lib/base.php
index 880645ff79..a95c9d2b21 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -54,6 +54,14 @@ class OC{
* the folder that stores the data for the root filesystem (e.g. /srv/http/owncloud/data)
*/
public static $CONFIG_DATADIRECTORY_ROOT = '';
+ /**
+ * The installation path of the 3rdparty folder on the server (e.g. /srv/http/owncloud/3rdparty)
+ */
+ public static $THIRDPARTYROOT = '';
+ /**
+ * the root path of the 3rdparty folder for http requests (e.g. owncloud/3rdparty)
+ */
+ public static $THIRDPARTYWEBROOT = '';
/**
* SPL autoload
@@ -138,12 +146,35 @@ class OC{
}
OC::$WEBROOT=substr($scriptName,0,strlen($scriptName)-strlen(OC::$SUBURI));
+
if(OC::$WEBROOT!='' and OC::$WEBROOT[0]!=='/'){
OC::$WEBROOT='/'.OC::$WEBROOT;
}
+ // search the 3rdparty folder
+ if(OC_Config::getValue('3rdpartyroot', '')<>'' and OC_Config::getValue('3rdpartyurl', '')<>''){
+ OC::$THIRDPARTYROOT=OC_Config::getValue('3rdpartyroot', '');
+ OC::$THIRDPARTYWEBROOT=OC_Config::getValue('3rdpartyurl', '');
+ }elseif(file_exists(OC::$SERVERROOT.'/3rdparty')){
+ OC::$THIRDPARTYROOT=OC::$SERVERROOT;
+ OC::$THIRDPARTYWEBROOT=OC::$WEBROOT;
+ }elseif(file_exists(OC::$SERVERROOT.'/../3rdparty')){
+ $url_tmp=explode('/',OC::$WEBROOT);
+ $length=count($url_tmp);
+ unset($url_tmp[$length-1]);
+ OC::$THIRDPARTYWEBROOT=implode('/',$url_tmp);
+ $root_tmp=explode('/',OC::$SERVERROOT);
+ $length=count($root_tmp);
+ unset($root_tmp[$length-1]);
+ OC::$THIRDPARTYROOT=implode('/',$root_tmp);
+ }else{
+ echo("3rdparty directory not found! Please put the ownCloud 3rdparty folder in the ownCloud folder or the folder above. You can also configure the location in the config.php file.");
+ exit;
+ }
+
+
// set the right include path
- set_include_path(OC::$SERVERROOT.'/lib'.PATH_SEPARATOR.OC::$SERVERROOT.'/config'.PATH_SEPARATOR.OC::$SERVERROOT.'/3rdparty'.PATH_SEPARATOR.get_include_path().PATH_SEPARATOR.OC::$SERVERROOT);
+ set_include_path(OC::$SERVERROOT.'/lib'.PATH_SEPARATOR.OC::$SERVERROOT.'/config'.PATH_SEPARATOR.OC::$THIRDPARTYROOT.'/3rdparty'.PATH_SEPARATOR.get_include_path().PATH_SEPARATOR.OC::$SERVERROOT);
// Redirect to installer if not installed
if (!OC_Config::getValue('installed', false) && OC::$SUBURI != '/index.php') {
diff --git a/lib/template.php b/lib/template.php
index d991759fbc..5fe2eb7d6c 100644
--- a/lib/template.php
+++ b/lib/template.php
@@ -346,31 +346,41 @@ class OC_Template{
// Add the core js files or the js files provided by the selected theme
foreach(OC_Util::$scripts as $script){
- if(is_file(OC::$SERVERROOT."/themes/$theme/apps/$script$fext.js" )){
+ // Is it in 3rd party?
+ if(is_file(OC::$THIRDPARTYROOT."/$script.js" )){
+ $page->append( "jsfiles", OC::$THIRDPARTYWEBROOT."/$script.js" );
+
+ // Is it in apps and overwritten by the theme?
+ }elseif(is_file(OC::$SERVERROOT."/themes/$theme/apps/$script$fext.js" )){
$page->append( "jsfiles", OC::$WEBROOT."/themes/$theme/apps/$script$fext.js" );
}elseif(is_file(OC::$SERVERROOT."/themes/$theme/apps/$script.js" )){
$page->append( "jsfiles", OC::$WEBROOT."/themes/$theme/apps/$script.js" );
+ // Is it part of an app?
}elseif(is_file(OC::$SERVERROOT."/apps/$script$fext.js" )){
$page->append( "jsfiles", OC::$WEBROOT."/apps/$script$fext.js" );
}elseif(is_file(OC::$SERVERROOT."/apps/$script.js" )){
$page->append( "jsfiles", OC::$WEBROOT."/apps/$script.js" );
+ // Is it in the owncloud root but overwritten by the theme?
}elseif(is_file(OC::$SERVERROOT."/themes/$theme/$script$fext.js" )){
$page->append( "jsfiles", OC::$WEBROOT."/themes/$theme/$script$fext.js" );
}elseif(is_file(OC::$SERVERROOT."/themes/$theme/$script.js" )){
$page->append( "jsfiles", OC::$WEBROOT."/themes/$theme/$script.js" );
-
+
+ // Is it in the owncloud root ?
}elseif(is_file(OC::$SERVERROOT."/$script$fext.js" )){
$page->append( "jsfiles", OC::$WEBROOT."/$script$fext.js" );
}elseif(is_file(OC::$SERVERROOT."/$script.js" )){
$page->append( "jsfiles", OC::$WEBROOT."/$script.js" );
+ // Is in core but overwritten by a theme?
}elseif(is_file(OC::$SERVERROOT."/themes/$theme/core/$script$fext.js" )){
$page->append( "jsfiles", OC::$WEBROOT."/themes/$theme/core/$script$fext.js" );
}elseif(is_file(OC::$SERVERROOT."/themes/$theme/core/$script.js" )){
$page->append( "jsfiles", OC::$WEBROOT."/themes/$theme/core/$script.js" );
+ // Is it in core?
}elseif(is_file(OC::$SERVERROOT."/core/$script$fext.js" )){
$page->append( "jsfiles", OC::$WEBROOT."/core/$script$fext.js" );
}else{
@@ -380,14 +390,20 @@ class OC_Template{
}
// Add the css files
foreach(OC_Util::$styles as $style){
- if(is_file(OC::$SERVERROOT."/apps/$style$fext.css" )){
+ // is it in 3rdparty?
+ if(is_file(OC::$THIRDPARTYROOT."/$style.css" )){
+ $page->append( "cssfiles", OC::$THIRDPARTYWEBROOT."/$style.css" );
+ // or in apps?
+ }elseif(is_file(OC::$SERVERROOT."/apps/$style$fext.css" )){
$page->append( "cssfiles", OC::$WEBROOT."/apps/$style$fext.css" );
}elseif(is_file(OC::$SERVERROOT."/apps/$style.css" )){
$page->append( "cssfiles", OC::$WEBROOT."/apps/$style.css" );
+ // or in the owncloud root?
}elseif(is_file(OC::$SERVERROOT."/$style$fext.css" )){
$page->append( "cssfiles", OC::$WEBROOT."/$style$fext.css" );
}elseif(is_file(OC::$SERVERROOT."/$style.css" )){
$page->append( "cssfiles", OC::$WEBROOT."/$style.css" );
+ // or in core ?
}elseif(is_file(OC::$SERVERROOT."/core/$style$fext.css" )){
$page->append( "cssfiles", OC::$WEBROOT."/core/$style$fext.css" );
}else{
From 3e756407a0e2cd2da68a59b0ea50acd72fe4d415 Mon Sep 17 00:00:00 2001
From: Georg Ehrke
Date: Thu, 23 Feb 2012 18:23:09 +0100
Subject: [PATCH 49/70] check if the tempfile was created successfully
---
lib/db.php | 3 +++
1 file changed, 3 insertions(+)
diff --git a/lib/db.php b/lib/db.php
index 9d3c20e014..4c17cd0dbd 100644
--- a/lib/db.php
+++ b/lib/db.php
@@ -318,6 +318,9 @@ class OC_DB {
// Make changes and save them to a temporary file
$file2 = tempnam( get_temp_dir(), 'oc_db_scheme_' );
+ if($file2 == ''){
+ die('could not create tempfile in get_temp_dir() - aborting');
+ }
$content = str_replace( '*dbname*', $CONFIG_DBNAME, $content );
$content = str_replace( '*dbprefix*', $CONFIG_DBTABLEPREFIX, $content );
if( $CONFIG_DBTYPE == 'pgsql' ){ //mysql support it too but sqlite doesn't
From a02d5d1a3dc4ddbfda3927b19881dba2b41279c1 Mon Sep 17 00:00:00 2001
From: Bartek Przybylski
Date: Thu, 23 Feb 2012 19:28:01 +0100
Subject: [PATCH 50/70] log typo fix
---
lib/filecache.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/filecache.php b/lib/filecache.php
index 6ae2f8253d..faadddfb37 100644
--- a/lib/filecache.php
+++ b/lib/filecache.php
@@ -266,7 +266,7 @@ class OC_FileCache{
if(is_array($result)){
return $result['id'];
}else{
- OC_Log::write('getFieldId(): file not found in cache ('.$path.')','core',OC_Log::DEBUG);
+ OC_Log::write('getFileId(): file not found in cache ('.$path.')','core',OC_Log::DEBUG);
return -1;
}
}
From ce4fe9e7cbc4fbbdc8141b90231bb824198b4aaa Mon Sep 17 00:00:00 2001
From: Marvin Thomas Rabe
Date: Thu, 23 Feb 2012 20:35:48 +0100
Subject: [PATCH 51/70] Editor fixed.
---
apps/bookmarks/addBm.php | 2 +-
apps/bookmarks/js/bookmarks.js | 6 +++---
apps/files_texteditor/css/style.css | 5 +++--
apps/files_texteditor/js/editor.js | 5 +++--
4 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/apps/bookmarks/addBm.php b/apps/bookmarks/addBm.php
index 0225a7aa7b..861b677222 100644
--- a/apps/bookmarks/addBm.php
+++ b/apps/bookmarks/addBm.php
@@ -28,6 +28,6 @@ OC_Util::checkLoggedIn();
OC_Util::checkAppEnabled('bookmarks');
require_once('bookmarksHelper.php');
-addBookmark($_GET['url']);
+addBookmark($_GET['url'], '', 'Read-Later');
include 'templates/addBm.php';
diff --git a/apps/bookmarks/js/bookmarks.js b/apps/bookmarks/js/bookmarks.js
index 17688615df..7317a154a7 100644
--- a/apps/bookmarks/js/bookmarks.js
+++ b/apps/bookmarks/js/bookmarks.js
@@ -126,12 +126,12 @@ function updateBookmarksList(bookmark) {
$('.bookmarks_list').append(
'' +
'
' +
- '' +
- '' +
- ' ' +
'' +
'' +
'' +
+ '' +
+ '' +
+ ' ' +
'
' +
'
'+
'' + encodeEntities(bookmark.title) + '' +
diff --git a/apps/files_texteditor/css/style.css b/apps/files_texteditor/css/style.css
index bc238c1f40..e260ab0dd4 100644
--- a/apps/files_texteditor/css/style.css
+++ b/apps/files_texteditor/css/style.css
@@ -1,7 +1,8 @@
#editor{
- position: absoloute;
+ position: fixed;
display: block;
- top: 2em;
+ top: 6.5em;
+ left: 12.5em;
}
#editorwrapper{
position: absoloute;
diff --git a/apps/files_texteditor/js/editor.js b/apps/files_texteditor/js/editor.js
index 7473d53230..e45652b6ef 100644
--- a/apps/files_texteditor/js/editor.js
+++ b/apps/files_texteditor/js/editor.js
@@ -172,6 +172,7 @@ function giveEditorFocus(){
function showFileEditor(dir,filename){
if(!editorIsShown()){
// Loads the file editor and display it.
+ $('#content').append('
');
var data = $.getJSON(
OC.filePath('files_texteditor','ajax','loadfile.php'),
{file:filename,dir:dir},
@@ -273,10 +274,10 @@ $(document).ready(function(){
var dir=text.substr(0,text.length-file.length-1);
showFileEditor(dir,file);
});
- }
+ };
// Binds the file save and close editor events, and gotoline button
bindControlEvents();
-
+ $('#editor').remove();
// Binds the save keyboard shortcut events
//$(document).unbind('keydown').bind('keydown',checkForSaveKeyPress);
});
From e188b96596f7562e73b2974e640ff77b3e165629 Mon Sep 17 00:00:00 2001
From: Georg Ehrke
Date: Mon, 20 Feb 2012 11:25:42 +0100
Subject: [PATCH 52/70] remove old ajax files
---
apps/calendar/ajax/activation.php | 19 --
apps/calendar/ajax/choosecalendar.php | 15 --
apps/calendar/ajax/createcalendar.php | 37 ---
apps/calendar/ajax/deletecalendar.php | 21 --
apps/calendar/ajax/deleteevent.php | 19 --
apps/calendar/ajax/editcalendar.php | 20 --
apps/calendar/ajax/editevent.php | 33 ---
apps/calendar/ajax/editeventform.php | 258 --------------------
apps/calendar/ajax/gettimezonedetection.php | 11 -
apps/calendar/ajax/guesstimezone.php | 48 ----
apps/calendar/ajax/importdialog.php | 17 --
apps/calendar/ajax/moveevent.php | 43 ----
apps/calendar/ajax/newcalendar.php | 24 --
apps/calendar/ajax/newevent.php | 27 --
apps/calendar/ajax/neweventform.php | 76 ------
apps/calendar/ajax/resizeevent.php | 32 ---
apps/calendar/ajax/settimeformat.php | 17 --
apps/calendar/ajax/settimezone.php | 27 --
apps/calendar/ajax/timeformat.php | 12 -
apps/calendar/ajax/timezonedetection.php | 17 --
apps/calendar/ajax/updatecalendar.php | 46 ----
21 files changed, 819 deletions(-)
delete mode 100644 apps/calendar/ajax/activation.php
delete mode 100644 apps/calendar/ajax/choosecalendar.php
delete mode 100644 apps/calendar/ajax/createcalendar.php
delete mode 100644 apps/calendar/ajax/deletecalendar.php
delete mode 100644 apps/calendar/ajax/deleteevent.php
delete mode 100644 apps/calendar/ajax/editcalendar.php
delete mode 100644 apps/calendar/ajax/editevent.php
delete mode 100644 apps/calendar/ajax/editeventform.php
delete mode 100644 apps/calendar/ajax/gettimezonedetection.php
delete mode 100755 apps/calendar/ajax/guesstimezone.php
delete mode 100644 apps/calendar/ajax/importdialog.php
delete mode 100644 apps/calendar/ajax/moveevent.php
delete mode 100644 apps/calendar/ajax/newcalendar.php
delete mode 100644 apps/calendar/ajax/newevent.php
delete mode 100644 apps/calendar/ajax/neweventform.php
delete mode 100644 apps/calendar/ajax/resizeevent.php
delete mode 100644 apps/calendar/ajax/settimeformat.php
delete mode 100644 apps/calendar/ajax/settimezone.php
delete mode 100644 apps/calendar/ajax/timeformat.php
delete mode 100644 apps/calendar/ajax/timezonedetection.php
delete mode 100644 apps/calendar/ajax/updatecalendar.php
diff --git a/apps/calendar/ajax/activation.php b/apps/calendar/ajax/activation.php
deleted file mode 100644
index ada2e44547..0000000000
--- a/apps/calendar/ajax/activation.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-require_once ("../../../lib/base.php");
-OC_JSON::checkLoggedIn();
-OC_JSON::checkAppEnabled('calendar');
-$calendarid = $_POST['calendarid'];
-$calendar = OC_Calendar_App::getCalendar($calendarid);//access check
-OC_Calendar_Calendar::setCalendarActive($calendarid, $_POST['active']);
-$calendar = OC_Calendar_App::getCalendar($calendarid);
-OC_JSON::success(array(
- 'active' => $calendar['active'],
- 'eventSource' => OC_Calendar_Calendar::getEventSourceInfo($calendar),
-));
diff --git a/apps/calendar/ajax/choosecalendar.php b/apps/calendar/ajax/choosecalendar.php
deleted file mode 100644
index 9281c8edbd..0000000000
--- a/apps/calendar/ajax/choosecalendar.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-require_once('../../../lib/base.php');
-$l10n = new OC_L10N('calendar');
-OC_JSON::checkLoggedIn();
-OC_JSON::checkAppEnabled('calendar');
-$output = new OC_TEMPLATE("calendar", "part.choosecalendar");
-$output -> printpage();
-?>
diff --git a/apps/calendar/ajax/createcalendar.php b/apps/calendar/ajax/createcalendar.php
deleted file mode 100644
index 8d7b12f9b8..0000000000
--- a/apps/calendar/ajax/createcalendar.php
+++ /dev/null
@@ -1,37 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-require_once('../../../lib/base.php');
-
-// Check if we are a user
-OC_JSON::checkLoggedIn();
-OC_JSON::checkAppEnabled('calendar');
-
-if(trim($_POST['name']) == ''){
- OC_JSON::error(array('message'=>'empty'));
- exit;
-}
-$calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser());
-foreach($calendars as $cal){
- if($cal['displayname'] == $_POST['name']){
- OC_JSON::error(array('message'=>'namenotavailable'));
- exit;
- }
-}
-
-$userid = OC_User::getUser();
-$calendarid = OC_Calendar_Calendar::addCalendar($userid, strip_tags($_POST['name']), 'VEVENT,VTODO,VJOURNAL', null, 0, $_POST['color']);
-OC_Calendar_Calendar::setCalendarActive($calendarid, 1);
-
-$calendar = OC_Calendar_Calendar::find($calendarid);
-$tmpl = new OC_Template('calendar', 'part.choosecalendar.rowfields');
-$tmpl->assign('calendar', $calendar);
-OC_JSON::success(array(
- 'page' => $tmpl->fetchPage(),
- 'eventSource' => OC_Calendar_Calendar::getEventSourceInfo($calendar),
-));
diff --git a/apps/calendar/ajax/deletecalendar.php b/apps/calendar/ajax/deletecalendar.php
deleted file mode 100644
index 901cbbfcb0..0000000000
--- a/apps/calendar/ajax/deletecalendar.php
+++ /dev/null
@@ -1,21 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-require_once('../../../lib/base.php');
-
-OC_JSON::checkLoggedIn();
-OC_JSON::checkAppEnabled('calendar');
-
-$cal = $_POST["calendarid"];
-$calendar = OC_Calendar_App::getCalendar($cal);
-$del = OC_Calendar_Calendar::deleteCalendar($cal);
-if($del == true){
- OC_JSON::success();
-}else{
- OC_JSON::error(array('error'=>'dberror'));
-}
-?>
diff --git a/apps/calendar/ajax/deleteevent.php b/apps/calendar/ajax/deleteevent.php
deleted file mode 100644
index b25a5af1a2..0000000000
--- a/apps/calendar/ajax/deleteevent.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-require_once('../../../lib/base.php');
-
-$l10n = new OC_L10N('calendar');
-
-OC_JSON::checkLoggedIn();
-OC_JSON::checkAppEnabled('calendar');
-
-$id = $_POST['id'];
-$event_object = OC_Calendar_App::getEventObject($id);
-$result = OC_Calendar_Object::delete($id);
-OC_JSON::success();
-?>
diff --git a/apps/calendar/ajax/editcalendar.php b/apps/calendar/ajax/editcalendar.php
deleted file mode 100644
index 7aeb5bbe30..0000000000
--- a/apps/calendar/ajax/editcalendar.php
+++ /dev/null
@@ -1,20 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-require_once('../../../lib/base.php');
-OC_JSON::checkLoggedIn();
-OC_JSON::checkAppEnabled('calendar');
-
-$calendarcolor_options = OC_Calendar_Calendar::getCalendarColorOptions();
-$calendar = OC_Calendar_App::getCalendar($_GET['calendarid']);
-$tmpl = new OC_Template("calendar", "part.editcalendar");
-$tmpl->assign('new', false);
-$tmpl->assign('calendarcolor_options', $calendarcolor_options);
-$tmpl->assign('calendar', $calendar);
-$tmpl->printPage();
-?>
diff --git a/apps/calendar/ajax/editevent.php b/apps/calendar/ajax/editevent.php
deleted file mode 100644
index 5a487da175..0000000000
--- a/apps/calendar/ajax/editevent.php
+++ /dev/null
@@ -1,33 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-require_once('../../../lib/base.php');
-OC_JSON::checkLoggedIn();
-OC_JSON::checkAppEnabled('calendar');
-
-$errarr = OC_Calendar_Object::validateRequest($_POST);
-if($errarr){
- //show validate errors
- OC_JSON::error($errarr);
- exit;
-}else{
- $id = $_POST['id'];
- $cal = $_POST['calendar'];
- $data = OC_Calendar_App::getEventObject($id);
- $vcalendar = OC_VObject::parse($data['calendardata']);
-
- OC_Calendar_App::isNotModified($vcalendar->VEVENT, $_POST['lastmodified']);
- OC_Calendar_Object::updateVCalendarFromRequest($_POST, $vcalendar);
-
- $result = OC_Calendar_Object::edit($id, $vcalendar->serialize());
- if ($data['calendarid'] != $cal) {
- OC_Calendar_Object::moveToCalendar($id, $cal);
- }
- OC_JSON::success();
-}
-?>
diff --git a/apps/calendar/ajax/editeventform.php b/apps/calendar/ajax/editeventform.php
deleted file mode 100644
index 19f6a80a16..0000000000
--- a/apps/calendar/ajax/editeventform.php
+++ /dev/null
@@ -1,258 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-require_once('../../../lib/base.php');
-
-if(!OC_USER::isLoggedIn()) {
- die('');
-}
-OC_JSON::checkAppEnabled('calendar');
-
-$id = $_GET['id'];
-$data = OC_Calendar_App::getEventObject($id);
-$object = OC_VObject::parse($data['calendardata']);
-$vevent = $object->VEVENT;
-
-$dtstart = $vevent->DTSTART;
-$dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent);
-switch($dtstart->getDateType()) {
- case Sabre_VObject_Element_DateTime::LOCALTZ:
- case Sabre_VObject_Element_DateTime::LOCAL:
- $startdate = $dtstart->getDateTime()->format('d-m-Y');
- $starttime = $dtstart->getDateTime()->format('H:i');
- $enddate = $dtend->getDateTime()->format('d-m-Y');
- $endtime = $dtend->getDateTime()->format('H:i');
- $allday = false;
- break;
- case Sabre_VObject_Element_DateTime::DATE:
- $startdate = $dtstart->getDateTime()->format('d-m-Y');
- $starttime = '';
- $dtend->getDateTime()->modify('-1 day');
- $enddate = $dtend->getDateTime()->format('d-m-Y');
- $endtime = '';
- $allday = true;
- break;
-}
-
-$summary = $vevent->getAsString('SUMMARY');
-$location = $vevent->getAsString('LOCATION');
-$categories = $vevent->getAsArray('CATEGORIES');
-$description = $vevent->getAsString('DESCRIPTION');
-foreach($categories as $category){
- if (!in_array($category, $category_options)){
- array_unshift($category_options, $category);
- }
-}
-$last_modified = $vevent->__get('LAST-MODIFIED');
-if ($last_modified){
- $lastmodified = $last_modified->getDateTime()->format('U');
-}else{
- $lastmodified = 0;
-}
-if($data['repeating'] == 1){
- $rrule = explode(';', $vevent->getAsString('RRULE'));
- $rrulearr = array();
- foreach($rrule as $rule){
- list($attr, $val) = explode('=', $rule);
- $rrulearr[$attr] = $val;
- }
- if(!isset($rrulearr['INTERVAL']) || $rrulearr['INTERVAL'] == ''){
- $rrulearr['INTERVAL'] = 1;
- }
- if(array_key_exists('BYDAY', $rrulearr)){
- if(substr_count($rrulearr['BYDAY'], ',') == 0){
- if(strlen($rrulearr['BYDAY']) == 2){
- $repeat['weekdays'] = array($rrulearr['BYDAY']);
- }elseif(strlen($rrulearr['BYDAY']) == 3){
- $repeat['weekofmonth'] = substr($rrulearr['BYDAY'], 0, 1);
- $repeat['weekdays'] = array(substr($rrulearr['BYDAY'], 1, 2));
- }elseif(strlen($rrulearr['BYDAY']) == 4){
- $repeat['weekofmonth'] = substr($rrulearr['BYDAY'], 0, 2);
- $repeat['weekdays'] = array(substr($rrulearr['BYDAY'], 2, 2));
- }
- }else{
- $byday_days = explode(',', $rrulearr['BYDAY']);
- foreach($byday_days as $byday_day){
- if(strlen($byday_day) == 2){
- $repeat['weekdays'][] = $byday_day;
- }elseif(strlen($byday_day) == 3){
- $repeat['weekofmonth'] = substr($byday_day , 0, 1);
- $repeat['weekdays'][] = substr($byday_day , 1, 2);
- }elseif(strlen($byday_day) == 4){
- $repeat['weekofmonth'] = substr($byday_day , 0, 2);
- $repeat['weekdays'][] = substr($byday_day , 2, 2);
- }
- }
- }
- }
- if(array_key_exists('BYMONTHDAY', $rrulearr)){
- if(substr_count($rrulearr['BYMONTHDAY'], ',') == 0){
- $repeat['bymonthday'][] = $rrulearr['BYMONTHDAY'];
- }else{
- $bymonthdays = explode(',', $rrulearr['BYMONTHDAY']);
- foreach($bymonthdays as $bymonthday){
- $repeat['bymonthday'][] = $bymonthday;
- }
- }
- }
- if(array_key_exists('BYYEARDAY', $rrulearr)){
- if(substr_count($rrulearr['BYYEARDAY'], ',') == 0){
- $repeat['byyearday'][] = $rrulearr['BYYEARDAY'];
- }else{
- $byyeardays = explode(',', $rrulearr['BYYEARDAY']);
- foreach($byyeardays as $yearday){
- $repeat['byyearday'][] = $yearday;
- }
- }
- }
- if(array_key_exists('BYWEEKNO', $rrulearr)){
- if(substr_count($rrulearr['BYWEEKNO'], ',') == 0){
- $repeat['byweekno'][] = (string) $rrulearr['BYWEEKNO'];
- }else{
- $byweekno = explode(',', $rrulearr['BYWEEKNO']);
- foreach($byweekno as $weekno){
- $repeat['byweekno'][] = (string) $weekno;
- }
- }
- }
- if(array_key_exists('BYMONTH', $rrulearr)){
- $months = OC_Calendar_App::getByMonthOptions();
- if(substr_count($rrulearr['BYMONTH'], ',') == 0){
- $repeat['bymonth'][] = $months[$month];
- }else{
- $bymonth = explode(',', $rrulearr['BYMONTH']);
- foreach($bymonth as $month){
- $repeat['bymonth'][] = $months[$month];
- }
- }
- }
- switch($rrulearr['FREQ']){
- case 'DAILY':
- $repeat['repeat'] = 'daily';
- break;
- case 'WEEKLY':
- if($rrulearr['INTERVAL'] % 2 == 0){
- $repeat['repeat'] = 'biweekly';
- $rrulearr['INTERVAL'] = $rrulearr['INTERVAL'] / 2;
- }elseif($rrulearr['BYDAY'] == 'MO,TU,WE,TH,FR'){
- $repeat['repeat'] = 'weekday';
- }else{
- $repeat['repeat'] = 'weekly';
- }
- break;
- case 'MONTHLY':
- $repeat['repeat'] = 'monthly';
- if(array_key_exists('BYDAY', $rrulearr)){
- $repeat['month'] = 'weekday';
- }else{
- $repeat['month'] = 'monthday';
- }
- break;
- case 'YEARLY':
- $repeat['repeat'] = 'yearly';
- if(array_key_exists('BYMONTH', $rrulearr)){
- $repeat['year'] = 'bydaymonth';
- }elseif(array_key_exists('BYWEEKNO', $rrulearr)){
- $repeat['year'] = 'byweekno';
- }else{
- $repeat['year'] = 'byyearday';
- }
- }
- $repeat['interval'] = $rrulearr['INTERVAL'];
- if(array_key_exists('COUNT', $rrulearr)){
- $repeat['end'] = 'count';
- $repeat['count'] = $rrulearr['COUNT'];
- }elseif(array_key_exists('UNTIL', $rrulearr)){
- $repeat['end'] = 'date';
- $endbydate_day = substr($rrulearr['UNTIL'], 6, 2);
- $endbydate_month = substr($rrulearr['UNTIL'], 4, 2);
- $endbydate_year = substr($rrulearr['UNTIL'], 0, 4);
- $repeat['date'] = $endbydate_day . '-' . $endbydate_month . '-' . $endbydate_year;
- }else{
- $repeat['end'] = 'never';
- }
- if(array_key_exists('weekdays', $repeat)){
- $repeat_weekdays_ = array();
- $days = OC_Calendar_App::getWeeklyOptions();
- foreach($repeat['weekdays'] as $weekday){
- $repeat_weekdays_[] = $days[$weekday];
- }
- $repeat['weekdays'] = $repeat_weekdays_;
- }
-}else{
- $repeat['repeat'] = 'doesnotrepeat';
-}
-
-$calendar_options = OC_Calendar_Calendar::allCalendars(OC_User::getUser());
-$category_options = OC_Calendar_App::getCategoryOptions();
-$repeat_options = OC_Calendar_App::getRepeatOptions();
-$repeat_end_options = OC_Calendar_App::getEndOptions();
-$repeat_month_options = OC_Calendar_App::getMonthOptions();
-$repeat_year_options = OC_Calendar_App::getYearOptions();
-$repeat_weekly_options = OC_Calendar_App::getWeeklyOptions();
-$repeat_weekofmonth_options = OC_Calendar_App::getWeekofMonth();
-$repeat_byyearday_options = OC_Calendar_App::getByYearDayOptions();
-$repeat_bymonth_options = OC_Calendar_App::getByMonthOptions();
-$repeat_byweekno_options = OC_Calendar_App::getByWeekNoOptions();
-$repeat_bymonthday_options = OC_Calendar_App::getByMonthDayOptions();
-
-$tmpl = new OC_Template('calendar', 'part.editevent');
-$tmpl->assign('id', $id);
-$tmpl->assign('lastmodified', $lastmodified);
-$tmpl->assign('calendar_options', $calendar_options);
-$tmpl->assign('category_options', $category_options);
-$tmpl->assign('repeat_options', $repeat_options);
-$tmpl->assign('repeat_month_options', $repeat_month_options);
-$tmpl->assign('repeat_weekly_options', $repeat_weekly_options);
-$tmpl->assign('repeat_end_options', $repeat_end_options);
-$tmpl->assign('repeat_year_options', $repeat_year_options);
-$tmpl->assign('repeat_byyearday_options', $repeat_byyearday_options);
-$tmpl->assign('repeat_bymonth_options', $repeat_bymonth_options);
-$tmpl->assign('repeat_byweekno_options', $repeat_byweekno_options);
-$tmpl->assign('repeat_bymonthday_options', $repeat_bymonthday_options);
-$tmpl->assign('repeat_weekofmonth_options', $repeat_weekofmonth_options);
-
-$tmpl->assign('title', $summary);
-$tmpl->assign('location', $location);
-$tmpl->assign('categories', $categories);
-$tmpl->assign('calendar', $data['calendarid']);
-$tmpl->assign('allday', $allday);
-$tmpl->assign('startdate', $startdate);
-$tmpl->assign('starttime', $starttime);
-$tmpl->assign('enddate', $enddate);
-$tmpl->assign('endtime', $endtime);
-$tmpl->assign('description', $description);
-
-$tmpl->assign('repeat', $repeat['repeat']);
-if($repeat['repeat'] != 'doesnotrepeat'){
- $tmpl->assign('repeat_month', $repeat['month']);
- $tmpl->assign('repeat_weekdays', $repeat['weekdays']);
- $tmpl->assign('repeat_interval', $repeat['interval']);
- $tmpl->assign('repeat_end', $repeat['end']);
- $tmpl->assign('repeat_count', $repeat['count']);
- $tmpl->assign('repeat_weekofmonth', $repeat['weekofmonth']);
- $tmpl->assign('repeat_date', $repeat['date']);
- $tmpl->assign('repeat_year', $repeat['year']);
- $tmpl->assign('repeat_byyearday', $repeat['byyearday']);
- $tmpl->assign('repeat_bymonthday', $repeat['bymonthday']);
- $tmpl->assign('repeat_bymonth', $repeat['bymonth']);
- $tmpl->assign('repeat_byweekno', $repeat['byweekno']);
-}
-else {
- $tmpl->assign('repeat_month', 'monthday');
- $tmpl->assign('repeat_weekdays', array());
- $tmpl->assign('repeat_interval', 1);
- $tmpl->assign('repeat_end', 'never');
- $tmpl->assign('repeat_count', '10');
- $tmpl->assign('repeat_weekofmonth', 'auto');
- $tmpl->assign('repeat_date', '');
- $tmpl->assign('repeat_year', 'bydate');
-}
-$tmpl->printpage();
-
-?>
diff --git a/apps/calendar/ajax/gettimezonedetection.php b/apps/calendar/ajax/gettimezonedetection.php
deleted file mode 100644
index ae58370712..0000000000
--- a/apps/calendar/ajax/gettimezonedetection.php
+++ /dev/null
@@ -1,11 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-require_once ("../../../lib/base.php");
-OC_JSON::checkLoggedIn();
-OC_JSON::checkAppEnabled('calendar');
-OC_JSON::success(array('detection' => OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezonedetection')));
\ No newline at end of file
diff --git a/apps/calendar/ajax/guesstimezone.php b/apps/calendar/ajax/guesstimezone.php
deleted file mode 100755
index 41aea26985..0000000000
--- a/apps/calendar/ajax/guesstimezone.php
+++ /dev/null
@@ -1,48 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-function make_array_out_of_xml ($xml){
- $returnarray = array();
- $xml = (array)$xml ;
- foreach ($xml as $property => $value){
- $value = (array)$value;
- if(!isset($value[0])){
- $returnarray[$property] = make_array_out_of_xml($value);
- }else{
- $returnarray[$property] = trim($value[0]);
- }
- }
- return $returnarray;
-}
-require_once ("../../../lib/base.php");
-OC_JSON::checkLoggedIn();
-OC_JSON::checkAppEnabled('calendar');
-$l = new OC_L10N('calendar');
-$lat = $_GET['lat'];
-$long = $_GET['long'];
-if(OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'position') == $lat . '-' . $long && OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezone') != null){
- OC_JSON::success();
- exit;
-}
-OC_Preferences::setValue(OC_USER::getUser(), 'calendar', 'position', $lat . '-' . $long);
-$geolocation = file_get_contents('http://ws.geonames.org/timezone?lat=' . $lat . '&lng=' . $long);
-//Information are by Geonames (http://www.geonames.org) and licensed under the Creative Commons Attribution 3.0 License
-$geoxml = simplexml_load_string($geolocation);
-$geoarray = make_array_out_of_xml($geoxml);
-if($geoarray['timezone']['timezoneId'] == OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezone')){
- OC_JSON::success();
- exit;
-}
-if(in_array($geoarray['timezone']['timezoneId'], DateTimeZone::listIdentifiers())){
- OC_Preferences::setValue(OC_USER::getUser(), 'calendar', 'timezone', $geoarray['timezone']['timezoneId']);
- $message = array('message'=> $l->t('New Timezone:') . $geoarray['timezone']['timezoneId']);
- OC_JSON::success($message);
-}else{
- OC_JSON::error();
-}
-
-?>
diff --git a/apps/calendar/ajax/importdialog.php b/apps/calendar/ajax/importdialog.php
deleted file mode 100644
index f6b8453fc2..0000000000
--- a/apps/calendar/ajax/importdialog.php
+++ /dev/null
@@ -1,17 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-require_once('../../../lib/base.php');
-OC_JSON::checkLoggedIn();
-OC_Util::checkAppEnabled('calendar');
-$l10n = new OC_L10N('calendar');
-$tmpl = new OC_Template('calendar', 'part.import');
-$tmpl->assign('path', $_POST['path']);
-$tmpl->assign('filename', $_POST['filename']);
-$tmpl->printpage();
-?>
diff --git a/apps/calendar/ajax/moveevent.php b/apps/calendar/ajax/moveevent.php
deleted file mode 100644
index f2256d4eee..0000000000
--- a/apps/calendar/ajax/moveevent.php
+++ /dev/null
@@ -1,43 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-require_once('../../../lib/base.php');
-OC_JSON::checkLoggedIn();
-
-$id = $_POST['id'];
-
-$vcalendar = OC_Calendar_App::getVCalendar($id);
-$vevent = $vcalendar->VEVENT;
-
-$allday = $_POST['allDay'];
-$delta = new DateInterval('P0D');
-$delta->d = $_POST['dayDelta'];
-$delta->i = $_POST['minuteDelta'];
-
-OC_Calendar_App::isNotModified($vevent, $_POST['lastmodified']);
-
-$dtstart = $vevent->DTSTART;
-$dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent);
-$start_type = $dtstart->getDateType();
-$end_type = $dtend->getDateType();
-if ($allday && $start_type != Sabre_VObject_Element_DateTime::DATE){
- $start_type = $end_type = Sabre_VObject_Element_DateTime::DATE;
- $dtend->setDateTime($dtend->getDateTime()->modify('+1 day'), $end_type);
-}
-if (!$allday && $start_type == Sabre_VObject_Element_DateTime::DATE){
- $start_type = $end_type = Sabre_VObject_Element_DateTime::LOCALTZ;
-}
-$dtstart->setDateTime($dtstart->getDateTime()->add($delta), $start_type);
-$dtend->setDateTime($dtend->getDateTime()->add($delta), $end_type);
-unset($vevent->DURATION);
-
-$vevent->setDateTime('LAST-MODIFIED', 'now', Sabre_VObject_Element_DateTime::UTC);
-$vevent->setDateTime('DTSTAMP', 'now', Sabre_VObject_Element_DateTime::UTC);
-
-$result = OC_Calendar_Object::edit($id, $vcalendar->serialize());
-$lastmodified = $vevent->__get('LAST-MODIFIED')->getDateTime();
-OC_JSON::success(array('lastmodified'=>(int)$lastmodified->format('U')));
diff --git a/apps/calendar/ajax/newcalendar.php b/apps/calendar/ajax/newcalendar.php
deleted file mode 100644
index af3ba4fbbe..0000000000
--- a/apps/calendar/ajax/newcalendar.php
+++ /dev/null
@@ -1,24 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-require_once('../../../lib/base.php');
-$l10n = new OC_L10N('calendar');
-OC_JSON::checkLoggedIn();
-OC_JSON::checkAppEnabled('calendar');
-$calendarcolor_options = OC_Calendar_Calendar::getCalendarColorOptions();
-$calendar = array(
- 'id' => 'new',
- 'displayname' => '',
- 'calendarcolor' => '',
-);
-$tmpl = new OC_Template('calendar', 'part.editcalendar');
-$tmpl->assign('new', true);
-$tmpl->assign('calendarcolor_options', $calendarcolor_options);
-$tmpl->assign('calendar', $calendar);
-$tmpl->printPage();
-?>
diff --git a/apps/calendar/ajax/newevent.php b/apps/calendar/ajax/newevent.php
deleted file mode 100644
index c7c4d29943..0000000000
--- a/apps/calendar/ajax/newevent.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-require_once('../../../lib/base.php');
-
-$l10n = new OC_L10N('calendar');
-
-OC_JSON::checkLoggedIn();
-OC_JSON::checkAppEnabled('calendar');
-
-$errarr = OC_Calendar_Object::validateRequest($_POST);
-if($errarr){
- //show validate errors
- OC_JSON::error($errarr);
- exit;
-}else{
- $cal = $_POST['calendar'];
- $vcalendar = OC_Calendar_Object::createVCalendarFromRequest($_POST);
- $result = OC_Calendar_Object::add($cal, $vcalendar->serialize());
- OC_JSON::success();
-}
-?>
diff --git a/apps/calendar/ajax/neweventform.php b/apps/calendar/ajax/neweventform.php
deleted file mode 100644
index 3870c879b0..0000000000
--- a/apps/calendar/ajax/neweventform.php
+++ /dev/null
@@ -1,76 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-require_once('../../../lib/base.php');
-
-if(!OC_USER::isLoggedIn()) {
- die('');
-}
-OC_JSON::checkAppEnabled('calendar');
-
-if (!isset($_POST['start'])){
- OC_JSON::error();
- die;
-}
-$start = $_POST['start'];
-$end = $_POST['end'];
-$allday = $_POST['allday'];
-
-if (!$end){
- $duration = OC_Preferences::getValue( OC_User::getUser(), 'calendar', 'duration', '60');
- $end = $start + ($duration * 60);
-}
-$start = new DateTime('@'.$start);
-$end = new DateTime('@'.$end);
-$timezone = OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezone', date_default_timezone_get());
-$start->setTimezone(new DateTimeZone($timezone));
-$end->setTimezone(new DateTimeZone($timezone));
-
-$calendar_options = OC_Calendar_Calendar::allCalendars(OC_User::getUser());
-$category_options = OC_Calendar_App::getCategoryOptions();
-$repeat_options = OC_Calendar_App::getRepeatOptions();
-$repeat_end_options = OC_Calendar_App::getEndOptions();
-$repeat_month_options = OC_Calendar_App::getMonthOptions();
-$repeat_year_options = OC_Calendar_App::getYearOptions();
-$repeat_weekly_options = OC_Calendar_App::getWeeklyOptions();
-$repeat_weekofmonth_options = OC_Calendar_App::getWeekofMonth();
-$repeat_byyearday_options = OC_Calendar_App::getByYearDayOptions();
-$repeat_bymonth_options = OC_Calendar_App::getByMonthOptions();
-$repeat_byweekno_options = OC_Calendar_App::getByWeekNoOptions();
-$repeat_bymonthday_options = OC_Calendar_App::getByMonthDayOptions();
-
-$tmpl = new OC_Template('calendar', 'part.newevent');
-$tmpl->assign('calendar_options', $calendar_options);
-$tmpl->assign('category_options', $category_options);
-$tmpl->assign('repeat_options', $repeat_options);
-$tmpl->assign('repeat_month_options', $repeat_month_options);
-$tmpl->assign('repeat_weekly_options', $repeat_weekly_options);
-$tmpl->assign('repeat_end_options', $repeat_end_options);
-$tmpl->assign('repeat_year_options', $repeat_year_options);
-$tmpl->assign('repeat_byyearday_options', $repeat_byyearday_options);
-$tmpl->assign('repeat_bymonth_options', $repeat_bymonth_options);
-$tmpl->assign('repeat_byweekno_options', $repeat_byweekno_options);
-$tmpl->assign('repeat_bymonthday_options', $repeat_bymonthday_options);
-$tmpl->assign('repeat_weekofmonth_options', $repeat_weekofmonth_options);
-
-$tmpl->assign('startdate', $start->format('d-m-Y'));
-$tmpl->assign('starttime', $start->format('H:i'));
-$tmpl->assign('enddate', $end->format('d-m-Y'));
-$tmpl->assign('endtime', $end->format('H:i'));
-$tmpl->assign('allday', $allday);
-$tmpl->assign('repeat', 'doesnotrepeat');
-$tmpl->assign('repeat_month', 'monthday');
-$tmpl->assign('repeat_weekdays', array());
-$tmpl->assign('repeat_interval', 1);
-$tmpl->assign('repeat_end', 'never');
-$tmpl->assign('repeat_count', '10');
-$tmpl->assign('repeat_weekofmonth', 'auto');
-$tmpl->assign('repeat_date', '');
-$tmpl->assign('repeat_year', 'bydate');
-$tmpl->printpage();
-?>
diff --git a/apps/calendar/ajax/resizeevent.php b/apps/calendar/ajax/resizeevent.php
deleted file mode 100644
index 6834790652..0000000000
--- a/apps/calendar/ajax/resizeevent.php
+++ /dev/null
@@ -1,32 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-require_once('../../../lib/base.php');
-OC_JSON::checkLoggedIn();
-
-$id = $_POST['id'];
-
-$vcalendar = OC_Calendar_App::getVCalendar($id);
-$vevent = $vcalendar->VEVENT;
-
-$delta = new DateInterval('P0D');
-$delta->d = $_POST['dayDelta'];
-$delta->i = $_POST['minuteDelta'];
-
-OC_Calendar_App::isNotModified($vevent, $_POST['lastmodified']);
-
-$dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent);
-$end_type = $dtend->getDateType();
-$dtend->setDateTime($dtend->getDateTime()->add($delta), $end_type);
-unset($vevent->DURATION);
-
-$vevent->setDateTime('LAST-MODIFIED', 'now', Sabre_VObject_Element_DateTime::UTC);
-$vevent->setDateTime('DTSTAMP', 'now', Sabre_VObject_Element_DateTime::UTC);
-
-$result = OC_Calendar_Object::edit($id, $vcalendar->serialize());
-$lastmodified = $vevent->__get('LAST-MODIFIED')->getDateTime();
-OC_JSON::success(array('lastmodified'=>(int)$lastmodified->format('U')));
diff --git a/apps/calendar/ajax/settimeformat.php b/apps/calendar/ajax/settimeformat.php
deleted file mode 100644
index 7805120ba5..0000000000
--- a/apps/calendar/ajax/settimeformat.php
+++ /dev/null
@@ -1,17 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-require_once('../../../lib/base.php');
-OC_JSON::checkLoggedIn();
-if(isset($_POST["timeformat"])){
- OC_Preferences::setValue(OC_User::getUser(), 'calendar', 'timeformat', $_POST["timeformat"]);
- OC_JSON::success();
-}else{
- OC_JSON::error();
-}
-?>
-
diff --git a/apps/calendar/ajax/settimezone.php b/apps/calendar/ajax/settimezone.php
deleted file mode 100644
index c726a11471..0000000000
--- a/apps/calendar/ajax/settimezone.php
+++ /dev/null
@@ -1,27 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-// Init owncloud
-require_once('../../../lib/base.php');
-
-$l=new OC_L10N('calendar');
-
-// Check if we are a user
-OC_JSON::checkLoggedIn();
-OC_JSON::checkAppEnabled('calendar');
-
-// Get data
-if( isset( $_POST['timezone'] ) ){
- $timezone=$_POST['timezone'];
- OC_Preferences::setValue( OC_User::getUser(), 'calendar', 'timezone', $timezone );
- OC_JSON::success(array('data' => array( 'message' => $l->t('Timezone changed') )));
-}else{
- OC_JSON::error(array('data' => array( 'message' => $l->t('Invalid request') )));
-}
-
-?>
diff --git a/apps/calendar/ajax/timeformat.php b/apps/calendar/ajax/timeformat.php
deleted file mode 100644
index 3533adcf8e..0000000000
--- a/apps/calendar/ajax/timeformat.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-require_once('../../../lib/base.php');
-OC_JSON::checkLoggedIn();
-$timeformat = OC_Preferences::getValue( OC_User::getUser(), 'calendar', 'timeformat', "24");
-OC_JSON::encodedPrint(array("timeformat" => $timeformat));
-?>
diff --git a/apps/calendar/ajax/timezonedetection.php b/apps/calendar/ajax/timezonedetection.php
deleted file mode 100644
index 77e4c4f6eb..0000000000
--- a/apps/calendar/ajax/timezonedetection.php
+++ /dev/null
@@ -1,17 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-require_once ("../../../lib/base.php");
-OC_JSON::checkLoggedIn();
-OC_JSON::checkAppEnabled('calendar');
-if($_POST['timezonedetection'] == 'on'){
- OC_Preferences::setValue(OC_USER::getUser(), 'calendar', 'timezonedetection', 'true');
-}else{
- OC_Preferences::setValue(OC_USER::getUser(), 'calendar', 'timezonedetection', 'false');
-}
-OC_JSON::success();
-
diff --git a/apps/calendar/ajax/updatecalendar.php b/apps/calendar/ajax/updatecalendar.php
deleted file mode 100644
index 20c225d8a2..0000000000
--- a/apps/calendar/ajax/updatecalendar.php
+++ /dev/null
@@ -1,46 +0,0 @@
-
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-require_once('../../../lib/base.php');
-
-// Check if we are a user
-OC_JSON::checkLoggedIn();
-OC_JSON::checkAppEnabled('calendar');
-
-if(trim($_POST['name']) == ''){
- OC_JSON::error(array('message'=>'empty'));
- exit;
-}
-$calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser());
-foreach($calendars as $cal){
- if($cal['displayname'] == $_POST['name'] && $cal['id'] != $_POST['id']){
- OC_JSON::error(array('message'=>'namenotavailable'));
- exit;
- }
-}
-
-$calendarid = $_POST['id'];
-$calendarcolor = $_POST['color'];
-if (preg_match('/^#?([0-9a-f]{6})/', $calendarcolor, $matches)) {
- $calendarcolor = '#'.$matches[1];
-}
-else {
- $calendarcolor = null;
-}
-
-$calendar = OC_Calendar_App::getCalendar($calendarid);//access check
-OC_Calendar_Calendar::editCalendar($calendarid, strip_tags($_POST['name']), null, null, null, $calendarcolor);
-OC_Calendar_Calendar::setCalendarActive($calendarid, $_POST['active']);
-
-$calendar = OC_Calendar_App::getCalendar($calendarid);
-$tmpl = new OC_Template('calendar', 'part.choosecalendar.rowfields');
-$tmpl->assign('calendar', $calendar);
-OC_JSON::success(array(
- 'page' => $tmpl->fetchPage(),
- 'eventSource' => OC_Calendar_Calendar::getEventSourceInfo($calendar),
-));
From b7de1850a00b91be34af062957df73424c95469b Mon Sep 17 00:00:00 2001
From: Georg Ehrke
Date: Mon, 20 Feb 2012 11:26:22 +0100
Subject: [PATCH 53/70] add moved files to clean up ajax folder
---
apps/calendar/ajax/calendar/activation.php | 19 ++
apps/calendar/ajax/calendar/delete.php | 21 ++
apps/calendar/ajax/calendar/edit.form.php | 20 ++
apps/calendar/ajax/calendar/edit.php | 20 ++
apps/calendar/ajax/calendar/new.form.php | 24 ++
apps/calendar/ajax/calendar/new.php | 37 +++
apps/calendar/ajax/calendar/overview.php | 15 ++
.../calendar/ajax/calendar/updatecalendar.php | 38 +++
apps/calendar/ajax/event/delete.php | 19 ++
apps/calendar/ajax/event/edit.form.php | 248 ++++++++++++++++++
apps/calendar/ajax/event/edit.php | 33 +++
apps/calendar/ajax/event/move.php | 43 +++
apps/calendar/ajax/event/new.form.php | 76 ++++++
apps/calendar/ajax/event/new.php | 27 ++
apps/calendar/ajax/event/resize.php | 32 +++
apps/calendar/ajax/import/dialog.php | 17 ++
apps/calendar/ajax/import/import.php | 120 +++++++++
.../ajax/settings/gettimezonedetection.php | 11 +
apps/calendar/ajax/settings/guesstimezone.php | 48 ++++
apps/calendar/ajax/settings/settimeformat.php | 17 ++
apps/calendar/ajax/settings/settimezone.php | 27 ++
apps/calendar/ajax/settings/timeformat.php | 12 +
.../ajax/settings/timezonedetection.php | 17 ++
apps/calendar/ajax/share/changepermission.php | 40 +++
apps/calendar/ajax/share/dropdown.php | 18 ++
apps/calendar/ajax/share/share.php | 51 ++++
apps/calendar/ajax/share/unshare.php | 44 ++++
27 files changed, 1094 insertions(+)
create mode 100644 apps/calendar/ajax/calendar/activation.php
create mode 100644 apps/calendar/ajax/calendar/delete.php
create mode 100644 apps/calendar/ajax/calendar/edit.form.php
create mode 100644 apps/calendar/ajax/calendar/edit.php
create mode 100644 apps/calendar/ajax/calendar/new.form.php
create mode 100644 apps/calendar/ajax/calendar/new.php
create mode 100644 apps/calendar/ajax/calendar/overview.php
create mode 100644 apps/calendar/ajax/calendar/updatecalendar.php
create mode 100644 apps/calendar/ajax/event/delete.php
create mode 100644 apps/calendar/ajax/event/edit.form.php
create mode 100644 apps/calendar/ajax/event/edit.php
create mode 100644 apps/calendar/ajax/event/move.php
create mode 100644 apps/calendar/ajax/event/new.form.php
create mode 100644 apps/calendar/ajax/event/new.php
create mode 100644 apps/calendar/ajax/event/resize.php
create mode 100644 apps/calendar/ajax/import/dialog.php
create mode 100644 apps/calendar/ajax/import/import.php
create mode 100644 apps/calendar/ajax/settings/gettimezonedetection.php
create mode 100755 apps/calendar/ajax/settings/guesstimezone.php
create mode 100644 apps/calendar/ajax/settings/settimeformat.php
create mode 100644 apps/calendar/ajax/settings/settimezone.php
create mode 100644 apps/calendar/ajax/settings/timeformat.php
create mode 100644 apps/calendar/ajax/settings/timezonedetection.php
create mode 100644 apps/calendar/ajax/share/changepermission.php
create mode 100644 apps/calendar/ajax/share/dropdown.php
create mode 100644 apps/calendar/ajax/share/share.php
create mode 100644 apps/calendar/ajax/share/unshare.php
diff --git a/apps/calendar/ajax/calendar/activation.php b/apps/calendar/ajax/calendar/activation.php
new file mode 100644
index 0000000000..7677d85aff
--- /dev/null
+++ b/apps/calendar/ajax/calendar/activation.php
@@ -0,0 +1,19 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+require_once('../../../../lib/base.php');
+OC_JSON::checkLoggedIn();
+OC_JSON::checkAppEnabled('calendar');
+$calendarid = $_POST['calendarid'];
+$calendar = OC_Calendar_App::getCalendar($calendarid);//access check
+OC_Calendar_Calendar::setCalendarActive($calendarid, $_POST['active']);
+$calendar = OC_Calendar_App::getCalendar($calendarid);
+OC_JSON::success(array(
+ 'active' => $calendar['active'],
+ 'eventSource' => OC_Calendar_Calendar::getEventSourceInfo($calendar),
+));
diff --git a/apps/calendar/ajax/calendar/delete.php b/apps/calendar/ajax/calendar/delete.php
new file mode 100644
index 0000000000..a2f5311731
--- /dev/null
+++ b/apps/calendar/ajax/calendar/delete.php
@@ -0,0 +1,21 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+require_once('../../../../lib/base.php');
+
+OC_JSON::checkLoggedIn();
+OC_JSON::checkAppEnabled('calendar');
+
+$cal = $_POST["calendarid"];
+$calendar = OC_Calendar_App::getCalendar($cal);
+$del = OC_Calendar_Calendar::deleteCalendar($cal);
+if($del == true){
+ OC_JSON::success();
+}else{
+ OC_JSON::error(array('error'=>'dberror'));
+}
+?>
diff --git a/apps/calendar/ajax/calendar/edit.form.php b/apps/calendar/ajax/calendar/edit.form.php
new file mode 100644
index 0000000000..8922b3eba4
--- /dev/null
+++ b/apps/calendar/ajax/calendar/edit.form.php
@@ -0,0 +1,20 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+require_once('../../../../lib/base.php');
+OC_JSON::checkLoggedIn();
+OC_JSON::checkAppEnabled('calendar');
+
+$calendarcolor_options = OC_Calendar_Calendar::getCalendarColorOptions();
+$calendar = OC_Calendar_App::getCalendar($_GET['calendarid']);
+$tmpl = new OC_Template("calendar", "part.editcalendar");
+$tmpl->assign('new', false);
+$tmpl->assign('calendarcolor_options', $calendarcolor_options);
+$tmpl->assign('calendar', $calendar);
+$tmpl->printPage();
+?>
diff --git a/apps/calendar/ajax/calendar/edit.php b/apps/calendar/ajax/calendar/edit.php
new file mode 100644
index 0000000000..8922b3eba4
--- /dev/null
+++ b/apps/calendar/ajax/calendar/edit.php
@@ -0,0 +1,20 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+require_once('../../../../lib/base.php');
+OC_JSON::checkLoggedIn();
+OC_JSON::checkAppEnabled('calendar');
+
+$calendarcolor_options = OC_Calendar_Calendar::getCalendarColorOptions();
+$calendar = OC_Calendar_App::getCalendar($_GET['calendarid']);
+$tmpl = new OC_Template("calendar", "part.editcalendar");
+$tmpl->assign('new', false);
+$tmpl->assign('calendarcolor_options', $calendarcolor_options);
+$tmpl->assign('calendar', $calendar);
+$tmpl->printPage();
+?>
diff --git a/apps/calendar/ajax/calendar/new.form.php b/apps/calendar/ajax/calendar/new.form.php
new file mode 100644
index 0000000000..6e7423cbe9
--- /dev/null
+++ b/apps/calendar/ajax/calendar/new.form.php
@@ -0,0 +1,24 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+require_once('../../../../lib/base.php');
+$l10n = new OC_L10N('calendar');
+OC_JSON::checkLoggedIn();
+OC_JSON::checkAppEnabled('calendar');
+$calendarcolor_options = OC_Calendar_Calendar::getCalendarColorOptions();
+$calendar = array(
+ 'id' => 'new',
+ 'displayname' => '',
+ 'calendarcolor' => '',
+);
+$tmpl = new OC_Template('calendar', 'part.editcalendar');
+$tmpl->assign('new', true);
+$tmpl->assign('calendarcolor_options', $calendarcolor_options);
+$tmpl->assign('calendar', $calendar);
+$tmpl->printPage();
+?>
diff --git a/apps/calendar/ajax/calendar/new.php b/apps/calendar/ajax/calendar/new.php
new file mode 100644
index 0000000000..228e624772
--- /dev/null
+++ b/apps/calendar/ajax/calendar/new.php
@@ -0,0 +1,37 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+require_once('../../../../lib/base.php');
+
+// Check if we are a user
+OC_JSON::checkLoggedIn();
+OC_JSON::checkAppEnabled('calendar');
+
+if(trim($_POST['name']) == ''){
+ OC_JSON::error(array('message'=>'empty'));
+ exit;
+}
+$calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser());
+foreach($calendars as $cal){
+ if($cal['displayname'] == $_POST['name']){
+ OC_JSON::error(array('message'=>'namenotavailable'));
+ exit;
+ }
+}
+
+$userid = OC_User::getUser();
+$calendarid = OC_Calendar_Calendar::addCalendar($userid, strip_tags($_POST['name']), 'VEVENT,VTODO,VJOURNAL', null, 0, $_POST['color']);
+OC_Calendar_Calendar::setCalendarActive($calendarid, 1);
+
+$calendar = OC_Calendar_Calendar::find($calendarid);
+$tmpl = new OC_Template('calendar', 'part.choosecalendar.rowfields');
+$tmpl->assign('calendar', $calendar);
+OC_JSON::success(array(
+ 'page' => $tmpl->fetchPage(),
+ 'eventSource' => OC_Calendar_Calendar::getEventSourceInfo($calendar),
+));
diff --git a/apps/calendar/ajax/calendar/overview.php b/apps/calendar/ajax/calendar/overview.php
new file mode 100644
index 0000000000..2f73f5d071
--- /dev/null
+++ b/apps/calendar/ajax/calendar/overview.php
@@ -0,0 +1,15 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+require_once('../../../../lib/base.php');
+$l10n = new OC_L10N('calendar');
+OC_JSON::checkLoggedIn();
+OC_JSON::checkAppEnabled('calendar');
+$output = new OC_TEMPLATE("calendar", "part.choosecalendar");
+$output -> printpage();
+?>
diff --git a/apps/calendar/ajax/calendar/updatecalendar.php b/apps/calendar/ajax/calendar/updatecalendar.php
new file mode 100644
index 0000000000..f400c8c14b
--- /dev/null
+++ b/apps/calendar/ajax/calendar/updatecalendar.php
@@ -0,0 +1,38 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+require_once('../../../../lib/base.php');
+
+// Check if we are a user
+OC_JSON::checkLoggedIn();
+OC_JSON::checkAppEnabled('calendar');
+
+if(trim($_POST['name']) == ''){
+ OC_JSON::error(array('message'=>'empty'));
+ exit;
+}
+$calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser());
+foreach($calendars as $cal){
+ if($cal['displayname'] == $_POST['name'] && $cal['id'] != $_POST['id']){
+ OC_JSON::error(array('message'=>'namenotavailable'));
+ exit;
+ }
+}
+
+$calendarid = $_POST['id'];
+$calendar = OC_Calendar_App::getCalendar($calendarid);//access check
+OC_Calendar_Calendar::editCalendar($calendarid, strip_tags($_POST['name']), null, null, null, $_POST['color']);
+OC_Calendar_Calendar::setCalendarActive($calendarid, $_POST['active']);
+
+$calendar = OC_Calendar_App::getCalendar($calendarid);
+$tmpl = new OC_Template('calendar', 'part.choosecalendar.rowfields');
+$tmpl->assign('calendar', $calendar);
+OC_JSON::success(array(
+ 'page' => $tmpl->fetchPage(),
+ 'eventSource' => OC_Calendar_Calendar::getEventSourceInfo($calendar),
+));
diff --git a/apps/calendar/ajax/event/delete.php b/apps/calendar/ajax/event/delete.php
new file mode 100644
index 0000000000..862dec6bf5
--- /dev/null
+++ b/apps/calendar/ajax/event/delete.php
@@ -0,0 +1,19 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+require_once('../../../../lib/base.php');
+
+$l10n = new OC_L10N('calendar');
+
+OC_JSON::checkLoggedIn();
+OC_JSON::checkAppEnabled('calendar');
+
+$id = $_POST['id'];
+$event_object = OC_Calendar_App::getEventObject($id);
+$result = OC_Calendar_Object::delete($id);
+OC_JSON::success();
+?>
diff --git a/apps/calendar/ajax/event/edit.form.php b/apps/calendar/ajax/event/edit.form.php
new file mode 100644
index 0000000000..837edbbbf0
--- /dev/null
+++ b/apps/calendar/ajax/event/edit.form.php
@@ -0,0 +1,248 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+require_once('../../../../lib/base.php');
+
+if(!OC_USER::isLoggedIn()) {
+ die('');
+}
+OC_JSON::checkAppEnabled('calendar');
+
+$id = $_GET['id'];
+$data = OC_Calendar_App::getEventObject($id);
+$object = OC_VObject::parse($data['calendardata']);
+$vevent = $object->VEVENT;
+
+$dtstart = $vevent->DTSTART;
+$dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent);
+switch($dtstart->getDateType()) {
+ case Sabre_VObject_Element_DateTime::LOCALTZ:
+ case Sabre_VObject_Element_DateTime::LOCAL:
+ $startdate = $dtstart->getDateTime()->format('d-m-Y');
+ $starttime = $dtstart->getDateTime()->format('H:i');
+ $enddate = $dtend->getDateTime()->format('d-m-Y');
+ $endtime = $dtend->getDateTime()->format('H:i');
+ $allday = false;
+ break;
+ case Sabre_VObject_Element_DateTime::DATE:
+ $startdate = $dtstart->getDateTime()->format('d-m-Y');
+ $starttime = '';
+ $dtend->getDateTime()->modify('-1 day');
+ $enddate = $dtend->getDateTime()->format('d-m-Y');
+ $endtime = '';
+ $allday = true;
+ break;
+}
+
+$summary = $vevent->getAsString('SUMMARY');
+$location = $vevent->getAsString('LOCATION');
+$categories = $vevent->getAsArray('CATEGORIES');
+$description = $vevent->getAsString('DESCRIPTION');
+foreach($categories as $category){
+ if (!in_array($category, $category_options)){
+ array_unshift($category_options, $category);
+ }
+}
+$last_modified = $vevent->__get('LAST-MODIFIED');
+if ($last_modified){
+ $lastmodified = $last_modified->getDateTime()->format('U');
+}else{
+ $lastmodified = 0;
+}
+if($data['repeating'] == 1){
+ $rrule = explode(';', $vevent->getAsString('RRULE'));
+ $rrulearr = array();
+ foreach($rrule as $rule){
+ list($attr, $val) = explode('=', $rule);
+ $rrulearr[$attr] = $val;
+ }
+ if(!isset($rrulearr['INTERVAL']) || $rrulearr['INTERVAL'] == ''){
+ $rrulearr['INTERVAL'] = 1;
+ }
+ if(array_key_exists('BYDAY', $rrulearr)){
+ if(substr_count($rrulearr['BYDAY'], ',') == 0){
+ if(strlen($rrulearr['BYDAY']) == 2){
+ $repeat['weekdays'] = array($rrulearr['BYDAY']);
+ }elseif(strlen($rrulearr['BYDAY']) == 3){
+ $repeat['weekofmonth'] = substr($rrulearr['BYDAY'], 0, 1);
+ $repeat['weekdays'] = array(substr($rrulearr['BYDAY'], 1, 2));
+ }elseif(strlen($rrulearr['BYDAY']) == 4){
+ $repeat['weekofmonth'] = substr($rrulearr['BYDAY'], 0, 2);
+ $repeat['weekdays'] = array(substr($rrulearr['BYDAY'], 2, 2));
+ }
+ }else{
+ $byday_days = explode(',', $rrulearr['BYDAY']);
+ foreach($byday_days as $byday_day){
+ if(strlen($byday_day) == 2){
+ $repeat['weekdays'][] = $byday_day;
+ }elseif(strlen($byday_day) == 3){
+ $repeat['weekofmonth'] = substr($byday_day , 0, 1);
+ $repeat['weekdays'][] = substr($byday_day , 1, 2);
+ }elseif(strlen($byday_day) == 4){
+ $repeat['weekofmonth'] = substr($byday_day , 0, 2);
+ $repeat['weekdays'][] = substr($byday_day , 2, 2);
+ }
+ }
+ }
+ }
+ if(array_key_exists('BYMONTHDAY', $rrulearr)){
+ if(substr_count($rrulearr['BYMONTHDAY'], ',') == 0){
+ $repeat['bymonthday'][] = $rrulearr['BYMONTHDAY'];
+ }else{
+ $bymonthdays = explode(',', $rrulearr['BYMONTHDAY']);
+ foreach($bymonthdays as $bymonthday){
+ $repeat['bymonthday'][] = $bymonthday;
+ }
+ }
+ }
+ if(array_key_exists('BYYEARDAY', $rrulearr)){
+ if(substr_count($rrulearr['BYYEARDAY'], ',') == 0){
+ $repeat['byyearday'][] = $rrulearr['BYYEARDAY'];
+ }else{
+ $byyeardays = explode(',', $rrulearr['BYYEARDAY']);
+ foreach($byyeardays as $yearday){
+ $repeat['byyearday'][] = $yearday;
+ }
+ }
+ }
+ if(array_key_exists('BYWEEKNO', $rrulearr)){
+ if(substr_count($rrulearr['BYWEEKNO'], ',') == 0){
+ $repeat['byweekno'][] = (string) $rrulearr['BYWEEKNO'];
+ }else{
+ $byweekno = explode(',', $rrulearr['BYWEEKNO']);
+ foreach($byweekno as $weekno){
+ $repeat['byweekno'][] = (string) $weekno;
+ }
+ }
+ }
+ if(array_key_exists('BYMONTH', $rrulearr)){
+ $months = OC_Calendar_App::getByMonthOptions();
+ if(substr_count($rrulearr['BYMONTH'], ',') == 0){
+ $repeat['bymonth'][] = $months[$month];
+ }else{
+ $bymonth = explode(',', $rrulearr['BYMONTH']);
+ foreach($bymonth as $month){
+ $repeat['bymonth'][] = $months[$month];
+ }
+ }
+ }
+ switch($rrulearr['FREQ']){
+ case 'DAILY':
+ $repeat['repeat'] = 'daily';
+ break;
+ case 'WEEKLY':
+ if($rrulearr['INTERVAL'] % 2 == 0){
+ $repeat['repeat'] = 'biweekly';
+ $rrulearr['INTERVAL'] = $rrulearr['INTERVAL'] / 2;
+ }elseif($rrulearr['BYDAY'] == 'MO,TU,WE,TH,FR'){
+ $repeat['repeat'] = 'weekday';
+ }else{
+ $repeat['repeat'] = 'weekly';
+ }
+ break;
+ case 'MONTHLY':
+ $repeat['repeat'] = 'monthly';
+ if(array_key_exists('BYDAY', $rrulearr)){
+ $repeat['month'] = 'weekday';
+ }else{
+ $repeat['month'] = 'monthday';
+ }
+ break;
+ case 'YEARLY':
+ $repeat['repeat'] = 'yearly';
+ if(array_key_exists('BYMONTH', $rrulearr)){
+ $repeat['year'] = 'bydaymonth';
+ }elseif(array_key_exists('BYWEEKNO', $rrulearr)){
+ $repeat['year'] = 'byweekno';
+ }else{
+ $repeat['year'] = 'byyearday';
+ }
+ }
+ $repeat['interval'] = $rrulearr['INTERVAL'];
+ if(array_key_exists('COUNT', $rrulearr)){
+ $repeat['end'] = 'count';
+ $repeat['count'] = $rrulearr['COUNT'];
+ }elseif(array_key_exists('UNTIL', $rrulearr)){
+ $repeat['end'] = 'date';
+ $endbydate_day = substr($rrulearr['UNTIL'], 6, 2);
+ $endbydate_month = substr($rrulearr['UNTIL'], 4, 2);
+ $endbydate_year = substr($rrulearr['UNTIL'], 0, 4);
+ $repeat['date'] = $endbydate_day . '-' . $endbydate_month . '-' . $endbydate_year;
+ }else{
+ $repeat['end'] = 'never';
+ }
+ if(array_key_exists('weekdays', $repeat)){
+ $repeat_weekdays_ = array();
+ $days = OC_Calendar_App::getWeeklyOptions();
+ foreach($repeat['weekdays'] as $weekday){
+ $repeat_weekdays_[] = $days[$weekday];
+ }
+ $repeat['weekdays'] = $repeat_weekdays_;
+ }
+}else{
+ $repeat['repeat'] = 'doesnotrepeat';
+}
+
+$calendar_options = OC_Calendar_Calendar::allCalendars(OC_User::getUser());
+$category_options = OC_Calendar_App::getCategoryOptions();
+$repeat_options = OC_Calendar_App::getRepeatOptions();
+$repeat_end_options = OC_Calendar_App::getEndOptions();
+$repeat_month_options = OC_Calendar_App::getMonthOptions();
+$repeat_year_options = OC_Calendar_App::getYearOptions();
+$repeat_weekly_options = OC_Calendar_App::getWeeklyOptions();
+$repeat_weekofmonth_options = OC_Calendar_App::getWeekofMonth();
+$repeat_byyearday_options = OC_Calendar_App::getByYearDayOptions();
+$repeat_bymonth_options = OC_Calendar_App::getByMonthOptions();
+$repeat_byweekno_options = OC_Calendar_App::getByWeekNoOptions();
+$repeat_bymonthday_options = OC_Calendar_App::getByMonthDayOptions();
+
+$tmpl = new OC_Template('calendar', 'part.editevent');
+$tmpl->assign('id', $id);
+$tmpl->assign('lastmodified', $lastmodified);
+$tmpl->assign('calendar_options', $calendar_options);
+$tmpl->assign('category_options', $category_options);
+$tmpl->assign('repeat_options', $repeat_options);
+$tmpl->assign('repeat_month_options', $repeat_month_options);
+$tmpl->assign('repeat_weekly_options', $repeat_weekly_options);
+$tmpl->assign('repeat_end_options', $repeat_end_options);
+$tmpl->assign('repeat_year_options', $repeat_year_options);
+$tmpl->assign('repeat_byyearday_options', $repeat_byyearday_options);
+$tmpl->assign('repeat_bymonth_options', $repeat_bymonth_options);
+$tmpl->assign('repeat_byweekno_options', $repeat_byweekno_options);
+$tmpl->assign('repeat_bymonthday_options', $repeat_bymonthday_options);
+$tmpl->assign('repeat_weekofmonth_options', $repeat_weekofmonth_options);
+
+$tmpl->assign('title', $summary);
+$tmpl->assign('location', $location);
+$tmpl->assign('categories', $categories);
+$tmpl->assign('calendar', $data['calendarid']);
+$tmpl->assign('allday', $allday);
+$tmpl->assign('startdate', $startdate);
+$tmpl->assign('starttime', $starttime);
+$tmpl->assign('enddate', $enddate);
+$tmpl->assign('endtime', $endtime);
+$tmpl->assign('description', $description);
+
+$tmpl->assign('repeat', $repeat['repeat']);
+if($repeat['repeat'] != 'doesnotrepeat'){
+ $tmpl->assign('repeat_month', $repeat['month']);
+ $tmpl->assign('repeat_weekdays', $repeat['weekdays']);
+ $tmpl->assign('repeat_interval', $repeat['interval']);
+ $tmpl->assign('repeat_end', $repeat['end']);
+ $tmpl->assign('repeat_count', $repeat['count']);
+ $tmpl->assign('repeat_weekofmonth', $repeat['weekofmonth']);
+ $tmpl->assign('repeat_date', $repeat['date']);
+ $tmpl->assign('repeat_year', $repeat['year']);
+ $tmpl->assign('repeat_byyearday', $repeat['byyearday']);
+ $tmpl->assign('repeat_bymonthday', $repeat['bymonthday']);
+ $tmpl->assign('repeat_bymonth', $repeat['bymonth']);
+ $tmpl->assign('repeat_byweekno', $repeat['byweekno']);
+}
+$tmpl->printpage();
+
+?>
\ No newline at end of file
diff --git a/apps/calendar/ajax/event/edit.php b/apps/calendar/ajax/event/edit.php
new file mode 100644
index 0000000000..64daffddef
--- /dev/null
+++ b/apps/calendar/ajax/event/edit.php
@@ -0,0 +1,33 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+require_once('../../../../lib/base.php');
+OC_JSON::checkLoggedIn();
+OC_JSON::checkAppEnabled('calendar');
+
+$errarr = OC_Calendar_Object::validateRequest($_POST);
+if($errarr){
+ //show validate errors
+ OC_JSON::error($errarr);
+ exit;
+}else{
+ $id = $_POST['id'];
+ $cal = $_POST['calendar'];
+ $data = OC_Calendar_App::getEventObject($id);
+ $vcalendar = OC_VObject::parse($data['calendardata']);
+
+ OC_Calendar_App::isNotModified($vcalendar->VEVENT, $_POST['lastmodified']);
+ OC_Calendar_Object::updateVCalendarFromRequest($_POST, $vcalendar);
+
+ $result = OC_Calendar_Object::edit($id, $vcalendar->serialize());
+ if ($data['calendarid'] != $cal) {
+ OC_Calendar_Object::moveToCalendar($id, $cal);
+ }
+ OC_JSON::success();
+}
+?>
diff --git a/apps/calendar/ajax/event/move.php b/apps/calendar/ajax/event/move.php
new file mode 100644
index 0000000000..8150fdbaa3
--- /dev/null
+++ b/apps/calendar/ajax/event/move.php
@@ -0,0 +1,43 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+require_once('../../../../lib/base.php');
+OC_JSON::checkLoggedIn();
+
+$id = $_POST['id'];
+
+$vcalendar = OC_Calendar_App::getVCalendar($id);
+$vevent = $vcalendar->VEVENT;
+
+$allday = $_POST['allDay'];
+$delta = new DateInterval('P0D');
+$delta->d = $_POST['dayDelta'];
+$delta->i = $_POST['minuteDelta'];
+
+OC_Calendar_App::isNotModified($vevent, $_POST['lastmodified']);
+
+$dtstart = $vevent->DTSTART;
+$dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent);
+$start_type = $dtstart->getDateType();
+$end_type = $dtend->getDateType();
+if ($allday && $start_type != Sabre_VObject_Element_DateTime::DATE){
+ $start_type = $end_type = Sabre_VObject_Element_DateTime::DATE;
+ $dtend->setDateTime($dtend->getDateTime()->modify('+1 day'), $end_type);
+}
+if (!$allday && $start_type == Sabre_VObject_Element_DateTime::DATE){
+ $start_type = $end_type = Sabre_VObject_Element_DateTime::LOCALTZ;
+}
+$dtstart->setDateTime($dtstart->getDateTime()->add($delta), $start_type);
+$dtend->setDateTime($dtend->getDateTime()->add($delta), $end_type);
+unset($vevent->DURATION);
+
+$vevent->setDateTime('LAST-MODIFIED', 'now', Sabre_VObject_Element_DateTime::UTC);
+$vevent->setDateTime('DTSTAMP', 'now', Sabre_VObject_Element_DateTime::UTC);
+
+$result = OC_Calendar_Object::edit($id, $vcalendar->serialize());
+$lastmodified = $vevent->__get('LAST-MODIFIED')->getDateTime();
+OC_JSON::success(array('lastmodified'=>(int)$lastmodified->format('U')));
diff --git a/apps/calendar/ajax/event/new.form.php b/apps/calendar/ajax/event/new.form.php
new file mode 100644
index 0000000000..c19928a727
--- /dev/null
+++ b/apps/calendar/ajax/event/new.form.php
@@ -0,0 +1,76 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+require_once('../../../../lib/base.php');
+
+if(!OC_USER::isLoggedIn()) {
+ die('');
+}
+OC_JSON::checkAppEnabled('calendar');
+
+if (!isset($_POST['start'])){
+ OC_JSON::error();
+ die;
+}
+$start = $_POST['start'];
+$end = $_POST['end'];
+$allday = $_POST['allday'];
+
+if (!$end){
+ $duration = OC_Preferences::getValue( OC_User::getUser(), 'calendar', 'duration', '60');
+ $end = $start + ($duration * 60);
+}
+$start = new DateTime('@'.$start);
+$end = new DateTime('@'.$end);
+$timezone = OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezone', date_default_timezone_get());
+$start->setTimezone(new DateTimeZone($timezone));
+$end->setTimezone(new DateTimeZone($timezone));
+
+$calendar_options = OC_Calendar_Calendar::allCalendars(OC_User::getUser());
+$category_options = OC_Calendar_App::getCategoryOptions();
+$repeat_options = OC_Calendar_App::getRepeatOptions();
+$repeat_end_options = OC_Calendar_App::getEndOptions();
+$repeat_month_options = OC_Calendar_App::getMonthOptions();
+$repeat_year_options = OC_Calendar_App::getYearOptions();
+$repeat_weekly_options = OC_Calendar_App::getWeeklyOptions();
+$repeat_weekofmonth_options = OC_Calendar_App::getWeekofMonth();
+$repeat_byyearday_options = OC_Calendar_App::getByYearDayOptions();
+$repeat_bymonth_options = OC_Calendar_App::getByMonthOptions();
+$repeat_byweekno_options = OC_Calendar_App::getByWeekNoOptions();
+$repeat_bymonthday_options = OC_Calendar_App::getByMonthDayOptions();
+
+$tmpl = new OC_Template('calendar', 'part.newevent');
+$tmpl->assign('calendar_options', $calendar_options);
+$tmpl->assign('category_options', $category_options);
+$tmpl->assign('repeat_options', $repeat_options);
+$tmpl->assign('repeat_month_options', $repeat_month_options);
+$tmpl->assign('repeat_weekly_options', $repeat_weekly_options);
+$tmpl->assign('repeat_end_options', $repeat_end_options);
+$tmpl->assign('repeat_year_options', $repeat_year_options);
+$tmpl->assign('repeat_byyearday_options', $repeat_byyearday_options);
+$tmpl->assign('repeat_bymonth_options', $repeat_bymonth_options);
+$tmpl->assign('repeat_byweekno_options', $repeat_byweekno_options);
+$tmpl->assign('repeat_bymonthday_options', $repeat_bymonthday_options);
+$tmpl->assign('repeat_weekofmonth_options', $repeat_weekofmonth_options);
+
+$tmpl->assign('startdate', $start->format('d-m-Y'));
+$tmpl->assign('starttime', $start->format('H:i'));
+$tmpl->assign('enddate', $end->format('d-m-Y'));
+$tmpl->assign('endtime', $end->format('H:i'));
+$tmpl->assign('allday', $allday);
+$tmpl->assign('repeat', 'doesnotrepeat');
+$tmpl->assign('repeat_month', 'monthday');
+$tmpl->assign('repeat_weekdays', array());
+$tmpl->assign('repeat_interval', 1);
+$tmpl->assign('repeat_end', 'never');
+$tmpl->assign('repeat_count', '10');
+$tmpl->assign('repeat_weekofmonth', 'auto');
+$tmpl->assign('repeat_date', '');
+$tmpl->assign('repeat_year', 'bydate');
+$tmpl->printpage();
+?>
diff --git a/apps/calendar/ajax/event/new.php b/apps/calendar/ajax/event/new.php
new file mode 100644
index 0000000000..59fda79da7
--- /dev/null
+++ b/apps/calendar/ajax/event/new.php
@@ -0,0 +1,27 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+require_once('../../../../lib/base.php');
+
+$l10n = new OC_L10N('calendar');
+
+OC_JSON::checkLoggedIn();
+OC_JSON::checkAppEnabled('calendar');
+
+$errarr = OC_Calendar_Object::validateRequest($_POST);
+if($errarr){
+ //show validate errors
+ OC_JSON::error($errarr);
+ exit;
+}else{
+ $cal = $_POST['calendar'];
+ $vcalendar = OC_Calendar_Object::createVCalendarFromRequest($_POST);
+ $result = OC_Calendar_Object::add($cal, $vcalendar->serialize());
+ OC_JSON::success();
+}
+?>
diff --git a/apps/calendar/ajax/event/resize.php b/apps/calendar/ajax/event/resize.php
new file mode 100644
index 0000000000..aa2d420e77
--- /dev/null
+++ b/apps/calendar/ajax/event/resize.php
@@ -0,0 +1,32 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+require_once('../../../../lib/base.php');
+OC_JSON::checkLoggedIn();
+
+$id = $_POST['id'];
+
+$vcalendar = OC_Calendar_App::getVCalendar($id);
+$vevent = $vcalendar->VEVENT;
+
+$delta = new DateInterval('P0D');
+$delta->d = $_POST['dayDelta'];
+$delta->i = $_POST['minuteDelta'];
+
+OC_Calendar_App::isNotModified($vevent, $_POST['lastmodified']);
+
+$dtend = OC_Calendar_Object::getDTEndFromVEvent($vevent);
+$end_type = $dtend->getDateType();
+$dtend->setDateTime($dtend->getDateTime()->add($delta), $end_type);
+unset($vevent->DURATION);
+
+$vevent->setDateTime('LAST-MODIFIED', 'now', Sabre_VObject_Element_DateTime::UTC);
+$vevent->setDateTime('DTSTAMP', 'now', Sabre_VObject_Element_DateTime::UTC);
+
+$result = OC_Calendar_Object::edit($id, $vcalendar->serialize());
+$lastmodified = $vevent->__get('LAST-MODIFIED')->getDateTime();
+OC_JSON::success(array('lastmodified'=>(int)$lastmodified->format('U')));
diff --git a/apps/calendar/ajax/import/dialog.php b/apps/calendar/ajax/import/dialog.php
new file mode 100644
index 0000000000..2e00209215
--- /dev/null
+++ b/apps/calendar/ajax/import/dialog.php
@@ -0,0 +1,17 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+require_once('../../../../lib/base.php');
+OC_JSON::checkLoggedIn();
+OC_Util::checkAppEnabled('calendar');
+$l10n = new OC_L10N('calendar');
+$tmpl = new OC_Template('calendar', 'part.import');
+$tmpl->assign('path', $_POST['path']);
+$tmpl->assign('filename', $_POST['filename']);
+$tmpl->printpage();
+?>
diff --git a/apps/calendar/ajax/import/import.php b/apps/calendar/ajax/import/import.php
new file mode 100644
index 0000000000..96d7af4834
--- /dev/null
+++ b/apps/calendar/ajax/import/import.php
@@ -0,0 +1,120 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+//check for calendar rights or create new one
+ob_start();
+require_once('../../../../lib/base.php');
+OC_JSON::checkLoggedIn();
+OC_Util::checkAppEnabled('calendar');
+$nl = "\n";
+$progressfile = OC::$SERVERROOT . '/apps/calendar/import_tmp/' . md5(session_id()) . '.txt';
+if(is_writable('import_tmp/')){
+ $progressfopen = fopen($progressfile, 'w');
+ fwrite($progressfopen, '10');
+ fclose($progressfopen);
+}
+$file = OC_Filesystem::file_get_contents($_POST['path'] . '/' . $_POST['file']);
+if($_POST['method'] == 'new'){
+ $id = OC_Calendar_Calendar::addCalendar(OC_User::getUser(), $_POST['calname']);
+ OC_Calendar_Calendar::setCalendarActive($id, 1);
+}else{
+ $calendar = OC_Calendar_App::getCalendar($_POST['id']);
+ if($calendar['userid'] != OC_USER::getUser()){
+ OC_JSON::error();
+ exit();
+ }
+ $id = $_POST['id'];
+}
+//analyse the calendar file
+if(is_writable('import_tmp/')){
+ $progressfopen = fopen($progressfile, 'w');
+ fwrite($progressfopen, '20');
+ fclose($progressfopen);
+}
+$searchfor = array('VEVENT', 'VTODO', 'VJOURNAL');
+$parts = $searchfor;
+$filearr = explode($nl, $file);
+$inelement = false;
+$parts = array();
+$i = 0;
+foreach($filearr as $line){
+ foreach($searchfor as $search){
+ if(substr_count($line, $search) == 1){
+ list($attr, $val) = explode(':', $line);
+ if($attr == 'BEGIN'){
+ $parts[]['begin'] = $i;
+ $inelement = true;
+ }
+ if($attr == 'END'){
+ $parts[count($parts) - 1]['end'] = $i;
+ $inelement = false;
+ }
+ }
+ }
+ $i++;
+}
+//import the calendar
+if(is_writable('import_tmp/')){
+ $progressfopen = fopen($progressfile, 'w');
+ fwrite($progressfopen, '40');
+ fclose($progressfopen);
+}
+$start = '';
+for ($i = 0; $i < $parts[0]['begin']; $i++) {
+ if($i == 0){
+ $start = $filearr[0];
+ }else{
+ $start .= $nl . $filearr[$i];
+ }
+}
+$end = '';
+for($i = $parts[count($parts) - 1]['end'] + 1;$i <= count($filearr) - 1; $i++){
+ if($i == $parts[count($parts) - 1]['end'] + 1){
+ $end = $filearr[$parts[count($parts) - 1]['end'] + 1];
+ }else{
+ $end .= $nl . $filearr[$i];
+ }
+}
+if(is_writable('import_tmp/')){
+ $progressfopen = fopen($progressfile, 'w');
+ fwrite($progressfopen, '50');
+ fclose($progressfopen);
+}
+$importready = array();
+foreach($parts as $part){
+ for($i = $part['begin']; $i <= $part['end'];$i++){
+ if($i == $part['begin']){
+ $content = $filearr[$i];
+ }else{
+ $content .= $nl . $filearr[$i];
+ }
+ }
+ $importready[] = $start . $nl . $content . $nl . $end;
+}
+if(is_writable('import_tmp/')){
+ $progressfopen = fopen($progressfile, 'w');
+ fwrite($progressfopen, '70');
+ fclose($progressfopen);
+}
+if(count($parts) == 1){
+ OC_Calendar_Object::add($id, $file);
+}else{
+ foreach($importready as $import){
+ OC_Calendar_Object::add($id, $import);
+ }
+}
+//done the import
+if(is_writable('import_tmp/')){
+ $progressfopen = fopen($progressfile, 'w');
+ fwrite($progressfopen, '100');
+ fclose($progressfopen);
+}
+sleep(3);
+if(is_writable('import_tmp/')){
+ unlink($progressfile);
+}
+OC_JSON::success();
\ No newline at end of file
diff --git a/apps/calendar/ajax/settings/gettimezonedetection.php b/apps/calendar/ajax/settings/gettimezonedetection.php
new file mode 100644
index 0000000000..11255fe8ef
--- /dev/null
+++ b/apps/calendar/ajax/settings/gettimezonedetection.php
@@ -0,0 +1,11 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+require_once('../../../../lib/base.php');
+OC_JSON::checkLoggedIn();
+OC_JSON::checkAppEnabled('calendar');
+OC_JSON::success(array('detection' => OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezonedetection')));
\ No newline at end of file
diff --git a/apps/calendar/ajax/settings/guesstimezone.php b/apps/calendar/ajax/settings/guesstimezone.php
new file mode 100755
index 0000000000..cfa92e1aee
--- /dev/null
+++ b/apps/calendar/ajax/settings/guesstimezone.php
@@ -0,0 +1,48 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+function make_array_out_of_xml ($xml){
+ $returnarray = array();
+ $xml = (array)$xml ;
+ foreach ($xml as $property => $value){
+ $value = (array)$value;
+ if(!isset($value[0])){
+ $returnarray[$property] = make_array_out_of_xml($value);
+ }else{
+ $returnarray[$property] = trim($value[0]);
+ }
+ }
+ return $returnarray;
+}
+require_once('../../../../lib/base.php');
+OC_JSON::checkLoggedIn();
+OC_JSON::checkAppEnabled('calendar');
+$l = new OC_L10N('calendar');
+$lat = $_GET['lat'];
+$long = $_GET['long'];
+if(OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'position') == $lat . '-' . $long && OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezone') != null){
+ OC_JSON::success();
+ exit;
+}
+OC_Preferences::setValue(OC_USER::getUser(), 'calendar', 'position', $lat . '-' . $long);
+$geolocation = file_get_contents('http://ws.geonames.org/timezone?lat=' . $lat . '&lng=' . $long);
+//Information are by Geonames (http://www.geonames.org) and licensed under the Creative Commons Attribution 3.0 License
+$geoxml = simplexml_load_string($geolocation);
+$geoarray = make_array_out_of_xml($geoxml);
+if($geoarray['timezone']['timezoneId'] == OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezone')){
+ OC_JSON::success();
+ exit;
+}
+if(in_array($geoarray['timezone']['timezoneId'], DateTimeZone::listIdentifiers())){
+ OC_Preferences::setValue(OC_USER::getUser(), 'calendar', 'timezone', $geoarray['timezone']['timezoneId']);
+ $message = array('message'=> $l->t('New Timezone:') . $geoarray['timezone']['timezoneId']);
+ OC_JSON::success($message);
+}else{
+ OC_JSON::error();
+}
+
+?>
diff --git a/apps/calendar/ajax/settings/settimeformat.php b/apps/calendar/ajax/settings/settimeformat.php
new file mode 100644
index 0000000000..8f65447065
--- /dev/null
+++ b/apps/calendar/ajax/settings/settimeformat.php
@@ -0,0 +1,17 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+require_once('../../../../lib/base.php');
+OC_JSON::checkLoggedIn();
+if(isset($_POST["timeformat"])){
+ OC_Preferences::setValue(OC_User::getUser(), 'calendar', 'timeformat', $_POST["timeformat"]);
+ OC_JSON::success();
+}else{
+ OC_JSON::error();
+}
+?>
+
diff --git a/apps/calendar/ajax/settings/settimezone.php b/apps/calendar/ajax/settings/settimezone.php
new file mode 100644
index 0000000000..c639753fe2
--- /dev/null
+++ b/apps/calendar/ajax/settings/settimezone.php
@@ -0,0 +1,27 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+// Init owncloud
+require_once('../../../../lib/base.php');
+
+$l=new OC_L10N('calendar');
+
+// Check if we are a user
+OC_JSON::checkLoggedIn();
+OC_JSON::checkAppEnabled('calendar');
+
+// Get data
+if( isset( $_POST['timezone'] ) ){
+ $timezone=$_POST['timezone'];
+ OC_Preferences::setValue( OC_User::getUser(), 'calendar', 'timezone', $timezone );
+ OC_JSON::success(array('data' => array( 'message' => $l->t('Timezone changed') )));
+}else{
+ OC_JSON::error(array('data' => array( 'message' => $l->t('Invalid request') )));
+}
+
+?>
diff --git a/apps/calendar/ajax/settings/timeformat.php b/apps/calendar/ajax/settings/timeformat.php
new file mode 100644
index 0000000000..e0dbe8d3cd
--- /dev/null
+++ b/apps/calendar/ajax/settings/timeformat.php
@@ -0,0 +1,12 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+require_once('../../../../lib/base.php');
+OC_JSON::checkLoggedIn();
+$timeformat = OC_Preferences::getValue( OC_User::getUser(), 'calendar', 'timeformat', "24");
+OC_JSON::encodedPrint(array("timeformat" => $timeformat));
+?>
diff --git a/apps/calendar/ajax/settings/timezonedetection.php b/apps/calendar/ajax/settings/timezonedetection.php
new file mode 100644
index 0000000000..f67bab901e
--- /dev/null
+++ b/apps/calendar/ajax/settings/timezonedetection.php
@@ -0,0 +1,17 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+require_once('../../../../lib/base.php');
+OC_JSON::checkLoggedIn();
+OC_JSON::checkAppEnabled('calendar');
+if($_POST['timezonedetection'] == 'on'){
+ OC_Preferences::setValue(OC_USER::getUser(), 'calendar', 'timezonedetection', 'true');
+}else{
+ OC_Preferences::setValue(OC_USER::getUser(), 'calendar', 'timezonedetection', 'false');
+}
+OC_JSON::success();
+
diff --git a/apps/calendar/ajax/share/changepermission.php b/apps/calendar/ajax/share/changepermission.php
new file mode 100644
index 0000000000..d91f87b613
--- /dev/null
+++ b/apps/calendar/ajax/share/changepermission.php
@@ -0,0 +1,40 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+require_once('../../../../lib/base.php');
+$id = strip_tags($_GET['id']);
+$idtype = strip_tags($_GET['idtype']);
+$permission = (int) strip_tags($_GET['permission']);
+switch($idtype){
+ case 'calendar':
+ case 'event':
+ break;
+ default:
+ OC_JSON::error(array('message'=>'unexspected parameter'));
+ exit;
+}
+$sharewith = $_GET['sharewith'];
+$sharetype = strip_tags($_GET['sharetype']);
+switch($sharetype){
+ case 'user':
+ case 'group':
+ case 'public':
+ break;
+ default:
+ OC_JSON::error(array('message'=>'unexspected parameter'));
+ exit;
+}
+if($sharetype == 'user' && !OC_User::userExists($sharewith)){
+ OC_JSON::error(array('message'=>'user not found'));
+ exit;
+}
+if($sharetype == 'group' && !OC_Group::groupExists($sharewith)){
+ OC_JSON::error(array('message'=>'group not found'));
+ exit;
+}
+$success = OC_Calendar_Share::changepermission($sharewith, $sharetype, $id, $permission, (($idtype=='calendar') ? OC_Calendar_Share::CALENDAR : OC_Calendar_Share::Event));
+OC_JSON::success();
\ No newline at end of file
diff --git a/apps/calendar/ajax/share/dropdown.php b/apps/calendar/ajax/share/dropdown.php
new file mode 100644
index 0000000000..eb396d38fd
--- /dev/null
+++ b/apps/calendar/ajax/share/dropdown.php
@@ -0,0 +1,18 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+require_once('../../../../lib/base.php');
+$user = OC_USER::getUser();
+$calid = $_GET['calid'];
+$calendar = OC_Calendar_Calendar::find($calid);
+if($calendar['userid'] != $user){
+ OC_JSON::error();
+ exit;
+}
+$tmpl = new OC_Template('calendar', 'share.dropdown');
+$tmpl->assign('calid', $calid);
+$tmpl->printPage();
\ No newline at end of file
diff --git a/apps/calendar/ajax/share/share.php b/apps/calendar/ajax/share/share.php
new file mode 100644
index 0000000000..d892727701
--- /dev/null
+++ b/apps/calendar/ajax/share/share.php
@@ -0,0 +1,51 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+require_once('../../../../lib/base.php');
+$id = strip_tags($_GET['id']);
+$idtype = strip_tags($_GET['idtype']);
+switch($idtype){
+ case 'calendar':
+ case 'event':
+ break;
+ default:
+ OC_JSON::error(array('message'=>'unexspected parameter'));
+ exit;
+}
+$sharewith = $_GET['sharewith'];
+$sharetype = strip_tags($_GET['sharetype']);
+switch($sharetype){
+ case 'user':
+ case 'group':
+ case 'public':
+ break;
+ default:
+ OC_JSON::error(array('message'=>'unexspected parameter'));
+ exit;
+}
+if($sharetype == 'user' && !OC_User::userExists($sharewith)){
+ OC_JSON::error(array('message'=>'user not found'));
+ exit;
+}
+if($sharetype == 'group' && !OC_Group::groupExists($sharewith)){
+ OC_JSON::error(array('message'=>'group not found'));
+ exit;
+}
+if($sharetype == 'user' && OC_User::getUser() == $sharewith){
+ OC_JSON::error(array('meesage'=>'you can not share with yourself'));
+}
+$success = OC_Calendar_Share::share(OC_User::getUser(), $sharewith, $sharetype, $id, (($idtype=='calendar') ? OC_Calendar_Share::CALENDAR : OC_Calendar_Share::Event));
+if($success){
+ if($sharetype == 'public'){
+ OC_JSON::success(array('message'=>$success));
+ }else{
+ OC_JSON::success(array('message'=>'shared'));
+ }
+}else{
+ OC_JSON::error(array('message'=>'can not share'));
+ exit;
+}
\ No newline at end of file
diff --git a/apps/calendar/ajax/share/unshare.php b/apps/calendar/ajax/share/unshare.php
new file mode 100644
index 0000000000..ec3150a89a
--- /dev/null
+++ b/apps/calendar/ajax/share/unshare.php
@@ -0,0 +1,44 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+require_once('../../../../lib/base.php');
+$id = strip_tags($_GET['id']);
+$idtype = strip_tags($_GET['idtype']);
+switch($idtype){
+ case 'calendar':
+ case 'event':
+ break;
+ default:
+ OC_JSON::error(array('message'=>'unexspected parameter'));
+ exit;
+}
+$sharewith = $_GET['sharewith'];
+$sharetype = strip_tags($_GET['sharetype']);
+switch($sharetype){
+ case 'user':
+ case 'group':
+ case 'public':
+ break;
+ default:
+ OC_JSON::error(array('message'=>'unexspected parameter'));
+ exit;
+}
+if($sharetype == 'user' && !OC_User::userExists($sharewith)){
+ OC_JSON::error(array('message'=>'user not found'));
+ exit;
+}
+if($sharetype == 'group' && !OC_Group::groupExists($sharewith)){
+ OC_JSON::error(array('message'=>'group not found'));
+ exit;
+}
+$success = OC_Calendar_Share::unshare(OC_User::getUser(), $sharewith, $sharetype, $id, (($idtype=='calendar') ? OC_Calendar_Share::CALENDAR : OC_Calendar_Share::Event));
+if($success){
+ OC_JSON::success();
+}else{
+ OC_JSON::error(array('message'=>'can not unshare'));
+ exit;
+}
\ No newline at end of file
From 8cd102721450ce02f41a07bf3473fb9a0582f054 Mon Sep 17 00:00:00 2001
From: Georg Ehrke
Date: Mon, 20 Feb 2012 11:26:43 +0100
Subject: [PATCH 54/70] better var name in changeview.php
---
apps/calendar/ajax/changeview.php | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/apps/calendar/ajax/changeview.php b/apps/calendar/ajax/changeview.php
index ef05c7cd49..ae48b229b1 100644
--- a/apps/calendar/ajax/changeview.php
+++ b/apps/calendar/ajax/changeview.php
@@ -9,7 +9,16 @@
require_once ("../../../lib/base.php");
OC_JSON::checkLoggedIn();
OC_JSON::checkAppEnabled('calendar');
-$currentview = $_GET["v"];
-OC_Preferences::setValue(OC_USER::getUser(), "calendar", "currentview", $currentview);
+$view = $_GET['v'];
+switch($view){
+ case 'agendaWeek':
+ case 'month';
+ case 'list':
+ break;
+ default:
+ OC_JSON::error(array('message'=>'unexspected parameter: ' . $view));
+ exit;
+}
+OC_Preferences::setValue(OC_USER::getUser(), 'calendar', 'currentview', $view);
OC_JSON::success();
?>
From cfa284bfa868a44b7f4a348fb579a00c361531f1 Mon Sep 17 00:00:00 2001
From: Georg Ehrke
Date: Mon, 20 Feb 2012 11:27:25 +0100
Subject: [PATCH 55/70] update js files for new ajax pathes
---
apps/calendar/js/calendar.js | 22 +++++++++++-----------
apps/calendar/js/geo.js | 2 +-
apps/calendar/js/loader.js | 6 +++---
apps/calendar/js/settings.js | 10 +++++-----
4 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/apps/calendar/js/calendar.js b/apps/calendar/js/calendar.js
index ba8e293819..84b76a3c88 100644
--- a/apps/calendar/js/calendar.js
+++ b/apps/calendar/js/calendar.js
@@ -69,7 +69,7 @@ Calendar={
$('#event').dialog('destroy').remove();
}else{
Calendar.UI.loading(true);
- $('#dialog_holder').load(OC.filePath('calendar', 'ajax', 'neweventform.php'), {start:start, end:end, allday:allday?1:0}, Calendar.UI.startEventDialog);
+ $('#dialog_holder').load(OC.filePath('calendar', 'ajax/event', 'new.form.php'), {start:start, end:end, allday:allday?1:0}, Calendar.UI.startEventDialog);
}
},
editEvent:function(calEvent, jsEvent, view){
@@ -79,7 +79,7 @@ Calendar={
$('#event').dialog('destroy').remove();
}else{
Calendar.UI.loading(true);
- $('#dialog_holder').load(OC.filePath('calendar', 'ajax', 'editeventform.php') + '?id=' + id, Calendar.UI.startEventDialog);
+ $('#dialog_holder').load(OC.filePath('calendar', 'ajax/event', 'edit.form.php') + '?id=' + id, Calendar.UI.startEventDialog);
}
},
submitDeleteEventForm:function(url){
@@ -141,7 +141,7 @@ Calendar={
moveEvent:function(event, dayDelta, minuteDelta, allDay, revertFunc){
$('.tipsy').remove();
Calendar.UI.loading(true);
- $.post(OC.filePath('calendar', 'ajax', 'moveevent.php'), { id: event.id, dayDelta: dayDelta, minuteDelta: minuteDelta, allDay: allDay?1:0, lastmodified: event.lastmodified},
+ $.post(OC.filePath('calendar', 'ajax/event', 'move.php'), { id: event.id, dayDelta: dayDelta, minuteDelta: minuteDelta, allDay: allDay?1:0, lastmodified: event.lastmodified},
function(data) {
Calendar.UI.loading(false);
if (data.status == 'success'){
@@ -156,7 +156,7 @@ Calendar={
resizeEvent:function(event, dayDelta, minuteDelta, revertFunc){
$('.tipsy').remove();
Calendar.UI.loading(true);
- $.post(OC.filePath('calendar', 'ajax', 'resizeevent.php'), { id: event.id, dayDelta: dayDelta, minuteDelta: minuteDelta, lastmodified: event.lastmodified},
+ $.post(OC.filePath('calendar', 'ajax/event', 'resize.php'), { id: event.id, dayDelta: dayDelta, minuteDelta: minuteDelta, lastmodified: event.lastmodified},
function(data) {
Calendar.UI.loading(false);
if (data.status == 'success'){
@@ -373,7 +373,7 @@ Calendar={
$('#choosecalendar_dialog').dialog('moveToTop');
}else{
Calendar.UI.loading(true);
- $('#dialog_holder').load(OC.filePath('calendar', 'ajax', 'choosecalendar.php'), function(){
+ $('#dialog_holder').load(OC.filePath('calendar', 'ajax/calendar', 'overview.php'), function(){
$('#choosecalendar_dialog').dialog({
width : 600,
close : function(event, ui) {
@@ -387,7 +387,7 @@ Calendar={
activation:function(checkbox, calendarid)
{
Calendar.UI.loading(true);
- $.post(OC.filePath('calendar', 'ajax', 'activation.php'), { calendarid: calendarid, active: checkbox.checked?1:0 },
+ $.post(OC.filePath('calendar', 'ajax/calendar', 'activation.php'), { calendarid: calendarid, active: checkbox.checked?1:0 },
function(data) {
Calendar.UI.loading(false);
if (data.status == 'success'){
@@ -402,13 +402,13 @@ Calendar={
},
newCalendar:function(object){
var tr = $(document.createElement('tr'))
- .load(OC.filePath('calendar', 'ajax', 'newcalendar.php'),
+ .load(OC.filePath('calendar', 'ajax/calendar', 'new.form.php'),
function(){Calendar.UI.Calendar.colorPicker(this)});
$(object).closest('tr').after(tr).hide();
},
edit:function(object, calendarid){
var tr = $(document.createElement('tr'))
- .load(OC.filePath('calendar', 'ajax', 'editcalendar.php') + "?calendarid="+calendarid,
+ .load(OC.filePath('calendar', 'ajax/calendar', 'edit.form.php') + "?calendarid="+calendarid,
function(){Calendar.UI.Calendar.colorPicker(this)});
$(object).closest('tr').after(tr).hide();
},
@@ -417,7 +417,7 @@ Calendar={
if(check == false){
return false;
}else{
- $.post(OC.filePath('calendar', 'ajax', 'deletecalendar.php'), { calendarid: calid},
+ $.post(OC.filePath('calendar', 'ajax/calendar', 'delete.php'), { calendarid: calid},
function(data) {
if (data.status == 'success'){
var url = 'ajax/events.php?calendar_id='+calid;
@@ -442,9 +442,9 @@ Calendar={
var url;
if (calendarid == 'new'){
- url = OC.filePath('calendar', 'ajax', 'createcalendar.php');
+ url = OC.filePath('calendar', 'ajax/calendar', 'new.php');
}else{
- url = OC.filePath('calendar', 'ajax', 'updatecalendar.php');
+ url = OC.filePath('calendar', 'ajax/calendar', 'update.php');
}
$.post(url, { id: calendarid, name: displayname, active: active, description: description, color: calendarcolor },
function(data){
diff --git a/apps/calendar/js/geo.js b/apps/calendar/js/geo.js
index ae6a971e93..c9cc5dd095 100755
--- a/apps/calendar/js/geo.js
+++ b/apps/calendar/js/geo.js
@@ -6,7 +6,7 @@
*/
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
- $.getJSON(OC.filePath('calendar', 'ajax', 'guesstimezone.php?lat=' + position.coords.latitude + '&long=' + position.coords.longitude + ''),
+ $.getJSON(OC.filePath('calendar', 'ajax/settings', 'guesstimezone.php?lat=' + position.coords.latitude + '&long=' + position.coords.longitude + ''),
function(data){
if (data.status == 'success' && typeof(data.message) != 'undefined'){
$('#notification').html(data.message);
diff --git a/apps/calendar/js/loader.js b/apps/calendar/js/loader.js
index 4e483f9864..5400387975 100644
--- a/apps/calendar/js/loader.js
+++ b/apps/calendar/js/loader.js
@@ -8,7 +8,7 @@ Calendar_Import={
importdialog: function(filename){
var path = $('#dir').val();
$('body').append('');
- $('#calendar_import').load(OC.filePath('calendar', 'ajax', 'importdialog.php'), {filename:filename, path:path}, function(){Calendar_Import.initdialog(filename);});
+ $('#calendar_import').load(OC.filePath('calendar', 'ajax/import', 'dialog.php'), {filename:filename, path:path}, function(){Calendar_Import.initdialog(filename);});
},
initdialog: function(filename){
$('#calendar_import_dialog').dialog({
@@ -68,7 +68,7 @@ Calendar_Import={
if(percent < 100){
window.setTimeout('Calendar_Import.getimportstatus(\'' + progressfile + '\')', 500);
}else{
- $('#import_done').css('display', 'block');
+ $('#import_done').css('display', 'block');
}
});
}
@@ -78,4 +78,4 @@ $(document).ready(function(){
FileActions.register('text/calendar','importcal', '', Calendar_Import.importdialog);
FileActions.setDefault('text/calendar','importcal');
};
-});
\ No newline at end of file
+});
diff --git a/apps/calendar/js/settings.js b/apps/calendar/js/settings.js
index 7330088556..fcbfc423db 100644
--- a/apps/calendar/js/settings.js
+++ b/apps/calendar/js/settings.js
@@ -3,7 +3,7 @@ $(document).ready(function(){
OC.msg.startSaving('#calendar .msg')
// Serialize the data
var post = $( '#timezone' ).serialize();
- $.post( OC.filePath('calendar', 'ajax', 'settimezone.php'), post, function(data){
+ $.post( OC.filePath('calendar', 'ajax/settings', 'settimezone.php'), post, function(data){
//OC.msg.finishedSaving('#calendar .msg', data);
});
return false;
@@ -11,7 +11,7 @@ $(document).ready(function(){
$('#timezone').chosen();
$('#timeformat').change( function(){
var data = $('#timeformat').serialize();
- $.post( OC.filePath('calendar', 'ajax', 'settimeformat.php'), data, function(data){
+ $.post( OC.filePath('calendar', 'ajax/settings', 'settimeformat.php'), data, function(data){
if(data == 'error'){
console.log('saving timeformat failed');
}
@@ -19,15 +19,15 @@ $(document).ready(function(){
});
$('#timezonedetection').change( function(){
var post = $('#timezonedetection').serialize();
- $.post( OC.filePath('calendar', 'ajax', 'timezonedetection.php'), post, function(data){
+ $.post( OC.filePath('calendar', 'ajax/settings', 'timezonedetection.php'), post, function(data){
});
});
- $.getJSON(OC.filePath('calendar', 'ajax', 'timeformat.php'), function(jsondata, status) {
+ $.getJSON(OC.filePath('calendar', 'ajax/settings', 'timeformat.php'), function(jsondata, status) {
$('#' + jsondata.timeformat).attr('selected',true);
$('#timeformat').chosen();
});
- $.getJSON(OC.filePath('calendar', 'ajax', 'gettimezonedetection.php'), function(jsondata, status){
+ $.getJSON(OC.filePath('calendar', 'ajax/settings', 'gettimezonedetection.php'), function(jsondata, status){
if(jsondata.detection == 'true'){
$('#timezonedetection').attr('checked', 'checked');
}
From 319e93f7fb78da57769f307fe86b87ab9c208d6b Mon Sep 17 00:00:00 2001
From: Georg Ehrke
Date: Mon, 20 Feb 2012 11:52:19 +0100
Subject: [PATCH 56/70] change pathes in calendar/templates/* files to make
them work with the new folder structure in /calendar/ajax
---
apps/calendar/templates/part.editevent.php | 2 +-
apps/calendar/templates/part.newevent.php | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/apps/calendar/templates/part.editevent.php b/apps/calendar/templates/part.editevent.php
index b3acfc4a07..7631d298be 100644
--- a/apps/calendar/templates/part.editevent.php
+++ b/apps/calendar/templates/part.editevent.php
@@ -5,7 +5,7 @@
inc("part.eventform"); ?>
- " onclick="Calendar.UI.validateEventForm('ajax/editevent.php');">
+ " onclick="Calendar.UI.validateEventForm('ajax/events/edit.php');">
" onclick="Calendar.UI.submitDeleteEventForm('ajax/deleteevent.php');">
" onclick="window.location='export.php?eventid=';">
diff --git a/apps/calendar/templates/part.newevent.php b/apps/calendar/templates/part.newevent.php
index b1e2a5eab8..85cce80287 100644
--- a/apps/calendar/templates/part.newevent.php
+++ b/apps/calendar/templates/part.newevent.php
@@ -3,7 +3,7 @@
inc("part.eventform"); ?>
- " onclick="Calendar.UI.validateEventForm('ajax/newevent.php');">
+ " onclick="Calendar.UI.validateEventForm('ajax/events/new.php');">
From f285790fa1532bce20c122b11657b00d6066970e Mon Sep 17 00:00:00 2001
From: Georg Ehrke
Date: Tue, 21 Feb 2012 19:16:14 +0100
Subject: [PATCH 57/70] change links in the event form for the new ajax folders
---
apps/calendar/templates/part.editevent.php | 4 ++--
apps/calendar/templates/part.newevent.php | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/apps/calendar/templates/part.editevent.php b/apps/calendar/templates/part.editevent.php
index 7631d298be..6e319e1b4e 100644
--- a/apps/calendar/templates/part.editevent.php
+++ b/apps/calendar/templates/part.editevent.php
@@ -5,8 +5,8 @@
inc("part.eventform"); ?>
- " onclick="Calendar.UI.validateEventForm('ajax/events/edit.php');">
- " onclick="Calendar.UI.submitDeleteEventForm('ajax/deleteevent.php');">
+ " onclick="Calendar.UI.validateEventForm('ajax/event/edit.php');">
+ " onclick="Calendar.UI.submitDeleteEventForm('ajax/event/delete.php');">
" onclick="window.location='export.php?eventid=';">
diff --git a/apps/calendar/templates/part.newevent.php b/apps/calendar/templates/part.newevent.php
index 85cce80287..1141626034 100644
--- a/apps/calendar/templates/part.newevent.php
+++ b/apps/calendar/templates/part.newevent.php
@@ -3,7 +3,7 @@
inc("part.eventform"); ?>
- " onclick="Calendar.UI.validateEventForm('ajax/events/new.php');">
+ " onclick="Calendar.UI.validateEventForm('ajax/event/new.php');">
From b1fb325d4815b4f4537f6a0dbe4a1eb4f5b3c360 Mon Sep 17 00:00:00 2001
From: Georg Ehrke
Date: Tue, 21 Feb 2012 19:42:48 +0100
Subject: [PATCH 58/70] rename updatecalendar to update
---
apps/calendar/ajax/calendar/{updatecalendar.php => update.php} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename apps/calendar/ajax/calendar/{updatecalendar.php => update.php} (100%)
diff --git a/apps/calendar/ajax/calendar/updatecalendar.php b/apps/calendar/ajax/calendar/update.php
similarity index 100%
rename from apps/calendar/ajax/calendar/updatecalendar.php
rename to apps/calendar/ajax/calendar/update.php
From 7c738a1384d34c7bf3044b35ed59f990ea5ae44b Mon Sep 17 00:00:00 2001
From: Marvin Thomas Rabe
Date: Thu, 23 Feb 2012 22:20:15 +0100
Subject: [PATCH 59/70] Sharing dropdown width fixed.
---
apps/files_sharing/css/sharing.css | 3 ++-
apps/files_sharing/js/share.js | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/apps/files_sharing/css/sharing.css b/apps/files_sharing/css/sharing.css
index 0759af2c27..db59a3d340 100644
--- a/apps/files_sharing/css/sharing.css
+++ b/apps/files_sharing/css/sharing.css
@@ -5,4 +5,5 @@
#shared_list { padding:0.5em; list-style-type: none; }
#public { border-top:1px solid #ddd; padding-top:0.5em; }
a.unshare { float:right; display:inline; margin:0 .5em; padding:.3em .3em 0 .3em !important; opacity:.5; }
-a.unshare:hover { opacity:1; }
\ No newline at end of file
+a.unshare:hover { opacity:1; }
+#share_with { width: 16em; }
\ No newline at end of file
diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js
index d01a07447a..fc9e17c25c 100644
--- a/apps/files_sharing/js/share.js
+++ b/apps/files_sharing/js/share.js
@@ -174,7 +174,7 @@ $(document).ready(function() {
function createDropdown(filename, files) {
var html = '';
html += '
';
- html += '
+ 1) { ?>
t("Calendar");?>: |
@@ -26,6 +27,12 @@
?>
|
+
+
|
+
+
+ |
+
From ca874a3ad776c9fd22c7bcbad81f493cfc551661 Mon Sep 17 00:00:00 2001
From: Arthur Schiwon
Date: Fri, 24 Feb 2012 14:18:09 +0100
Subject: [PATCH 61/70] remove limit from configvalue for long config values
---
db_structure.xml | 12 ++++++------
lib/util.php | 2 +-
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/db_structure.xml b/db_structure.xml
index 8e59a59c6e..1d459b75fd 100644
--- a/db_structure.xml
+++ b/db_structure.xml
@@ -31,12 +31,12 @@
configvalue
- text
-
+ clob
true
- 255
+
+
@@ -55,7 +55,7 @@
true
4
-
+
path
text
@@ -90,7 +90,7 @@
true
64
-
+
size
integer
@@ -522,7 +522,7 @@
-
+
*dbprefix*properties
diff --git a/lib/util.php b/lib/util.php
index 1b1e29b674..05caeca0e3 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -62,7 +62,7 @@ class OC_Util {
* @return array
*/
public static function getVersion(){
- return array(3,00,1);
+ return array(3,00,2);
}
/**
From e039015ca1d600a227b4cd0665192f3e22f3d1f2 Mon Sep 17 00:00:00 2001
From: Robin Appelman
Date: Fri, 24 Feb 2012 13:02:19 +0100
Subject: [PATCH 62/70] prevent errors when a user backends gives an invalid
result
---
lib/user.php | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/lib/user.php b/lib/user.php
index 34f44f572e..0746fcc6eb 100644
--- a/lib/user.php
+++ b/lib/user.php
@@ -321,7 +321,10 @@ class OC_User {
$users=array();
foreach(self::$_usedBackends as $backend){
if($backend->implementsActions(OC_USER_BACKEND_GET_USERS)){
- $users=array_merge($users,$backend->getUsers());
+ $backendUsers=$backend->getUsers();
+ if(is_array($backendUsers)){
+ $users=array_merge($users,$backendUsers);
+ }
}
}
return $users;
From 9f5bce81b037624099012038f1ebfeb94d3317fd Mon Sep 17 00:00:00 2001
From: Robin Appelman
Date: Fri, 24 Feb 2012 14:10:19 +0100
Subject: [PATCH 63/70] add a default user quota
---
lib/fileproxy/quota.php | 30 ++++++++++++++++++++++++++++--
settings/ajax/setquota.php | 10 ++++++++--
2 files changed, 36 insertions(+), 4 deletions(-)
diff --git a/lib/fileproxy/quota.php b/lib/fileproxy/quota.php
index 94a49176ee..9e4c2d0643 100644
--- a/lib/fileproxy/quota.php
+++ b/lib/fileproxy/quota.php
@@ -26,11 +26,37 @@
*/
class OC_FileProxy_Quota extends OC_FileProxy{
+ private $userQuota=-1;
+
+ /**
+ * get the quota for the current user
+ * @return int
+ */
+ private function getQuota(){
+ if($this->userQuota!=-1){
+ return $this->userQuota;
+ }
+ $userQuota=OC_Preferences::getValue(OC_User::getUser(),'files','quota','default');
+ if($userQuota=='default'){
+ $userQuota=OC_AppConfig::getValue('files','default_quota','none');
+ }
+ if($userQuota=='none'){
+ $this->userQuota=0;
+ }else{
+ $this->userQuota=OC_Helper::computerFileSize($userQuota);
+ }
+ return $this->userQuota;
+
+ }
+
+ /**
+ * get the free space in the users home folder
+ * @return int
+ */
private function getFreeSpace(){
$rootInfo=OC_FileCache::get('');
$usedSpace=$rootInfo['size'];
- $totalSpace=OC_Preferences::getValue(OC_User::getUser(),'files','quota',0);
- $totalSpace=OC_Helper::computerFileSize($totalSpace);
+ $totalSpace=$this->getQuota();
if($totalSpace==0){
return 0;
}
diff --git a/settings/ajax/setquota.php b/settings/ajax/setquota.php
index d4e3c58ac1..7bfc65102c 100644
--- a/settings/ajax/setquota.php
+++ b/settings/ajax/setquota.php
@@ -8,8 +8,14 @@ OC_JSON::checkAdminUser();
$username = $_POST["username"];
//make sure the quota is in the expected format
-$quota= OC_Helper::computerFileSize($_POST["quota"]);
-$quota=OC_Helper::humanFileSize($quota);
+$quota=$_POST["quota"];
+if($quota!='none' and $quota!='default'){
+ $quota= OC_Helper::computerFileSize($quota);
+ $quota=OC_Helper::humanFileSize($quota);
+}
+if($quota==0){
+ $quota='default';
+}
// Return Success story
OC_Preferences::setValue($username,'files','quota',$quota);
From 4230e217af16b400cf6eba26c2333ee4ea1f884c Mon Sep 17 00:00:00 2001
From: Robin Appelman
Date: Fri, 24 Feb 2012 14:38:40 +0100
Subject: [PATCH 64/70] new config widget for user quota
---
settings/ajax/setquota.php | 9 +--
settings/css/settings.css | 3 +
settings/js/users.js | 105 +++++++++++++++++++++++------------
settings/templates/users.php | 14 ++++-
settings/users.php | 8 ++-
5 files changed, 94 insertions(+), 45 deletions(-)
diff --git a/settings/ajax/setquota.php b/settings/ajax/setquota.php
index 7bfc65102c..e66513e54c 100644
--- a/settings/ajax/setquota.php
+++ b/settings/ajax/setquota.php
@@ -11,10 +11,11 @@ $username = $_POST["username"];
$quota=$_POST["quota"];
if($quota!='none' and $quota!='default'){
$quota= OC_Helper::computerFileSize($quota);
- $quota=OC_Helper::humanFileSize($quota);
-}
-if($quota==0){
- $quota='default';
+ if($quota==0){
+ $quota='default';
+ }else{
+ $quota=OC_Helper::humanFileSize($quota);
+ }
}
// Return Success story
diff --git a/settings/css/settings.css b/settings/css/settings.css
index a8af839a1e..b80d7da82c 100644
--- a/settings/css/settings.css
+++ b/settings/css/settings.css
@@ -29,6 +29,9 @@ li.selected { background-color:#ddd; }
#content>table:not(.nostyle) { margin-top:3em; }
table:not(.nostyle) { width:100%; }
#rightcontent { padding-left: 1em; }
+td.quota { position:relative }
+select.quota { position:absolute; left:0px; top:0px; width:10em; }
+input.quota-other { display:none; position:absolute; left:0.1em; top:0.1em; width:7em; border:none; -webkit-box-shadow: none -mox-box-shadow:none ; box-shadow:none; }
/* APPS */
li { color:#888; }
diff --git a/settings/js/users.js b/settings/js/users.js
index c9b1d855db..bfc00138e0 100644
--- a/settings/js/users.js
+++ b/settings/js/users.js
@@ -5,6 +5,18 @@
*/
$(document).ready(function(){
+ function setQuota(uid,quota,ready){
+ $.post(
+ OC.filePath('settings','ajax','setquota.php'),
+ {username:uid,quota:quota},
+ function(result){
+ if(ready){
+ ready(result.data.quota);
+ }
+ }
+ );
+ }
+
function applyMultiplySelect(element){
var checked=[];
var user=element.data('username');
@@ -82,48 +94,63 @@ $(document).ready(function(){
$('td.password').live('click',function(event){
$(this).children('img').click();
});
-
- $('td.quota>img').live('click',function(event){
- event.stopPropagation();
- var img=$(this);
- var uid=img.parent().parent().data('uid');
- var input=$('');
- var quota=img.parent().children('span').text();
- if(quota=='None'){
- quota='';
+
+ $('select.quota').live('change',function(){
+ var select=$(this);
+ var uid=$(this).parent().parent().data('uid');
+ var quota=$(this).val();
+ var other=$(this).next();
+ if(quota!='other'){
+ other.hide();
+ select.data('previous',quota);
+ setQuota(uid,quota);
+ }else{
+ other.show();
+ other.focus();
}
- input.val(quota);
- img.css('display','none');
- img.parent().children('span').replaceWith(input);
- input.focus();
- input.keypress(function(event) {
- if(event.keyCode == 13) {
- $(this).parent().attr('data-quota',$(this).val());
- if($(this).val().length>0){
- $.post(
- OC.filePath('settings','ajax','setquota.php'),
- {username:uid,quota:$(this).val()},
- function(result){
- img.parent().children('span').text(result.data.quota)
- $(this).parent().attr('data-quota',result.data.quota);
- }
- );
- input.blur();
+ });
+ $('select.quota').each(function(i,select){
+ $(select).data('previous',$(select).val());
+ })
+
+ $('input.quota-other').live('change',function(){
+ var uid=$(this).parent().parent().data('uid');
+ var quota=$(this).val();
+ var select=$(this).prev();
+ var other=$(this);
+ if(quota){
+ setQuota(uid,quota,function(quota){
+ select.children().attr('selected',null);
+ var existingOption=select.children().filter(function(i,option){
+ return ($(option).val()==quota);
+ });
+ if(existingOption.length){
+ existingOption.attr('selected','selected');
}else{
- input.blur();
+ var option=$('');
+ option.attr('selected','selected').attr('value',quota).text(quota);
+ select.children().last().before(option);
}
- }
- });
- input.blur(function(){
- var quota=$(this).parent().attr('data-quota');
- $(this).replaceWith($(''+quota+''));
- img.css('display','');
- });
- });
- $('td.quota').live('click',function(event){
- $(this).children('img').click();
+ select.val(quota);
+ other.val(null);
+ other.hide();
+ });
+ }else{
+ var previous=select.data('previous');
+ select.children().attr('selected',null);
+ select.children().each(function(i,option){
+ if($(option).val()==previous){
+ $(option).attr('selected','selected');
+ }
+ });
+ other.hide();
+ }
});
+ $('input.quota-other').live('blur',function(){
+ $(this).change();
+ })
+
$('#newuser').submit(function(event){
event.preventDefault();
var username=$('#newusername').val();
@@ -166,5 +193,9 @@ $(document).ready(function(){
}
applyMultiplySelect(select);
$('#content table tbody').last().after(tr);
+
+ tr.find('select.quota option').attr('selected',null);
+ tr.find('select.quota option').first().attr('selected','selected');
+ tr.find('select.quota').data('previous','default');
});
});
diff --git a/settings/templates/users.php b/settings/templates/users.php
index fde4cfb9ae..4d75b7a06d 100644
--- a/settings/templates/users.php
+++ b/settings/templates/users.php
@@ -48,9 +48,17 @@ foreach($_["groups"] as $group) {
-
- 0)?$user['quota']:'None';?>
-
+ |
+
+
+
+
+
+
+
+
+
+
|
diff --git a/settings/users.php b/settings/users.php
index e5dcc04948..1ae7575211 100644
--- a/settings/users.php
+++ b/settings/users.php
@@ -18,17 +18,23 @@ $users = array();
$groups = array();
foreach( OC_User::getUsers() as $i ){
- $users[] = array( "name" => $i, "groups" => join( ", ", OC_Group::getUserGroups( $i ) ),'quota'=>OC_Preferences::getValue($i,'files','quota',0));
+ $users[] = array( "name" => $i, "groups" => join( ", ", OC_Group::getUserGroups( $i ) ),'quota'=>OC_Preferences::getValue($i,'files','quota','default'));
}
foreach( OC_Group::getGroups() as $i ){
// Do some more work here soon
$groups[] = array( "name" => $i );
}
+$quotaPreset=OC_Appconfig::getValue('files','quota_preset','default,none,1 GB, 5 GB, 10 GB');
+$quotaPreset=explode(',',$quotaPreset);
+foreach($quotaPreset as &$preset){
+ $preset=trim($preset);
+}
$tmpl = new OC_Template( "settings", "users", "user" );
$tmpl->assign( "users", $users );
$tmpl->assign( "groups", $groups );
+$tmpl->assign( 'quota_preset', $quotaPreset);
$tmpl->printPage();
?>
From 0d3181b6d1fc8b2af1b222cae29fff89a0754797 Mon Sep 17 00:00:00 2001
From: Robin Appelman
Date: Fri, 24 Feb 2012 21:19:23 +0100
Subject: [PATCH 65/70] add configure option for default quota
---
settings/ajax/setquota.php | 11 +++++++++--
settings/css/settings.css | 4 +++-
settings/templates/users.php | 15 +++++++++++++++
settings/users.php | 3 +++
4 files changed, 30 insertions(+), 3 deletions(-)
diff --git a/settings/ajax/setquota.php b/settings/ajax/setquota.php
index e66513e54c..dc87625a05 100644
--- a/settings/ajax/setquota.php
+++ b/settings/ajax/setquota.php
@@ -5,7 +5,7 @@ require_once('../../lib/base.php');
OC_JSON::checkAdminUser();
-$username = $_POST["username"];
+$username = isset($_POST["username"])?$_POST["username"]:'';
//make sure the quota is in the expected format
$quota=$_POST["quota"];
@@ -19,7 +19,14 @@ if($quota!='none' and $quota!='default'){
}
// Return Success story
-OC_Preferences::setValue($username,'files','quota',$quota);
+if($username){
+ OC_Preferences::setValue($username,'files','quota',$quota);
+}else{//set the default quota when no username is specified
+ if($quota=='default'){//'default' as default quota makes no sense
+ $quota='none';
+ }
+ OC_Appconfig::setValue('files','default_quota',$quota);
+}
OC_JSON::success(array("data" => array( "username" => $username ,'quota'=>$quota)));
?>
diff --git a/settings/css/settings.css b/settings/css/settings.css
index b80d7da82c..39d811ae10 100644
--- a/settings/css/settings.css
+++ b/settings/css/settings.css
@@ -30,8 +30,10 @@ li.selected { background-color:#ddd; }
table:not(.nostyle) { width:100%; }
#rightcontent { padding-left: 1em; }
td.quota { position:relative }
-select.quota { position:absolute; left:0px; top:0px; width:10em; }
+div.quota { float:right; display:block; position:absolute; right:25em; top:0; }
+select.quota { position:absolute; left:0; top:0; width:10em; }
input.quota-other { display:none; position:absolute; left:0.1em; top:0.1em; width:7em; border:none; -webkit-box-shadow: none -mox-box-shadow:none ; box-shadow:none; }
+div.quota>span { position:absolute; right:0em; white-space:nowrap; top: 0.7em }
/* APPS */
li { color:#888; }
diff --git a/settings/templates/users.php b/settings/templates/users.php
index 4d75b7a06d..a23a5bafe6 100644
--- a/settings/templates/users.php
+++ b/settings/templates/users.php
@@ -21,6 +21,21 @@ foreach($_["groups"] as $group) {
+
+ t('Default Quota');?>:
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/settings/users.php b/settings/users.php
index 1ae7575211..96515a90ce 100644
--- a/settings/users.php
+++ b/settings/users.php
@@ -31,10 +31,13 @@ foreach($quotaPreset as &$preset){
$preset=trim($preset);
}
+$defaultQuota=OC_Appconfig::getValue('files','default_quota','none');
+
$tmpl = new OC_Template( "settings", "users", "user" );
$tmpl->assign( "users", $users );
$tmpl->assign( "groups", $groups );
$tmpl->assign( 'quota_preset', $quotaPreset);
+$tmpl->assign( 'default_quota', $defaultQuota);
$tmpl->printPage();
?>
From 9dcf29ff514222b652e642d358b10d375c30dbb5 Mon Sep 17 00:00:00 2001
From: Robin Appelman
Date: Fri, 24 Feb 2012 21:30:27 +0100
Subject: [PATCH 66/70] fix bug in group mangement
---
lib/group/database.php | 2 +-
settings/js/users.js | 8 +++++++-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/lib/group/database.php b/lib/group/database.php
index f35f61434f..1afd4b5fe4 100644
--- a/lib/group/database.php
+++ b/lib/group/database.php
@@ -130,7 +130,7 @@ class OC_Group_Database extends OC_Group_Backend {
* removes the user from a group.
*/
public static function removeFromGroup( $uid, $gid ){
- $query = OC_DB::prepare( "DELETE FROM `*PREFIX*group_user` WHERE `uid` = ? AND `gid` = ?" );
+ $query = OC_DB::prepare( "DELETE FROM *PREFIX*group_user WHERE uid = ? AND gid = ?" );
$result = $query->execute( array( $uid, $gid ));
return true;
diff --git a/settings/js/users.js b/settings/js/users.js
index bfc00138e0..26e7ff2445 100644
--- a/settings/js/users.js
+++ b/settings/js/users.js
@@ -184,7 +184,13 @@ $(document).ready(function(){
select.data('username',username);
select.data('userGroups',groups.join(', '));
tr.find('td.groups').empty();
- $.each($('#content table').data('groups').split(', '),function(i,group){
+ var allGroups=$('#content table').data('groups').split(', ');
+ for(var i=0;i'+group+''));
});
tr.find('td.groups').append(select);
From 11cb45bd432b6b7521f43f53e91dbec1537193cd Mon Sep 17 00:00:00 2001
From: Robin Appelman
Date: Fri, 24 Feb 2012 22:56:13 +0100
Subject: [PATCH 67/70] slight change to select style
---
core/css/styles.css | 4 ++--
settings/css/settings.css | 1 +
settings/js/users.js | 3 +++
3 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/core/css/styles.css b/core/css/styles.css
index 335b008ffd..b14c8fb9ca 100644
--- a/core/css/styles.css
+++ b/core/css/styles.css
@@ -40,8 +40,8 @@ input[type="text"]:hover, input[type="text"]:focus, input[type="text"]:active,
input[type="password"]:hover, input[type="password"]:focus, input[type="password"]:active,
.searchbox input[type="search"]:hover, .searchbox input[type="search"]:focus, .searchbox input[type="search"]:active { background-color:#fff; color:#333; opacity:1; }
-input[type="submit"], input[type="button"], button, .button, #quota, div.jp-progress, .pager li a { width:auto; padding:.4em; border:1px solid #ddd; font-weight:bold; cursor:pointer; background:#f8f8f8; color:#555; text-shadow:#fff 0 1px 0; -moz-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; }
-input[type="submit"]:hover, input[type="submit"]:focus, input[type="button"]:hover, input[type="button"]:focus, .button:hover { background:#fff; color:#333; }
+input[type="submit"], input[type="button"], button, .button, #quota, div.jp-progress, select, .pager li a { width:auto; padding:.4em; border:1px solid #ddd; font-weight:bold; cursor:pointer; background:#f8f8f8; color:#555; text-shadow:#fff 0 1px 0; -moz-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; }
+input[type="submit"]:hover, input[type="submit"]:focus, input[type="button"]:hover, select:hover, select:focus, select:active, input[type="button"]:focus, .button:hover { background:#fff; color:#333; }
input[type="checkbox"] { width:auto; }
#quota { cursor:default; }
diff --git a/settings/css/settings.css b/settings/css/settings.css
index 39d811ae10..7a5873bb4d 100644
--- a/settings/css/settings.css
+++ b/settings/css/settings.css
@@ -34,6 +34,7 @@ div.quota { float:right; display:block; position:absolute; right:25em; top:0; }
select.quota { position:absolute; left:0; top:0; width:10em; }
input.quota-other { display:none; position:absolute; left:0.1em; top:0.1em; width:7em; border:none; -webkit-box-shadow: none -mox-box-shadow:none ; box-shadow:none; }
div.quota>span { position:absolute; right:0em; white-space:nowrap; top: 0.7em }
+select.quota.active { background: #fff; }
/* APPS */
li { color:#888; }
diff --git a/settings/js/users.js b/settings/js/users.js
index 26e7ff2445..eed93d3b30 100644
--- a/settings/js/users.js
+++ b/settings/js/users.js
@@ -106,6 +106,7 @@ $(document).ready(function(){
setQuota(uid,quota);
}else{
other.show();
+ select.addClass('active');
other.focus();
}
});
@@ -132,6 +133,7 @@ $(document).ready(function(){
select.children().last().before(option);
}
select.val(quota);
+ select.removeClass('active');
other.val(null);
other.hide();
});
@@ -143,6 +145,7 @@ $(document).ready(function(){
$(option).attr('selected','selected');
}
});
+ select.removeClass('active');
other.hide();
}
});
From 66f4f06dd99906283e963cd7afa720f6ffe40220 Mon Sep 17 00:00:00 2001
From: Robin Appelman
Date: Fri, 24 Feb 2012 23:12:14 +0100
Subject: [PATCH 68/70] if a deleted file is uploaded, finish the delete first
otherwise the upload will fail because the file still exists on the server, the old file will be deleted and neither the old or new file will be left
---
files/js/files.js | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/files/js/files.js b/files/js/files.js
index bebcf4e97a..9f1f5368df 100644
--- a/files/js/files.js
+++ b/files/js/files.js
@@ -166,6 +166,7 @@ $(document).ready(function() {
$('.file_upload_start').live('change',function(){
var form=$(this).closest('form');
+ var that=this;
var uploadId=form.attr('data-upload-id');
var files=this.files;
var target=form.children('iframe');
@@ -173,6 +174,12 @@ $(document).ready(function() {
if(files){
for(var i=0;i$('#max_upload').val()){
From 7988541476f00b7569aea0790af5d2d773f93ae8 Mon Sep 17 00:00:00 2001
From: Robin Appelman
Date: Fri, 24 Feb 2012 23:16:56 +0100
Subject: [PATCH 69/70] cleanup pdfviewer app name
---
apps/files_pdfviewer/appinfo/info.xml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/apps/files_pdfviewer/appinfo/info.xml b/apps/files_pdfviewer/appinfo/info.xml
index 86a6c3f22f..f133f1900d 100755
--- a/apps/files_pdfviewer/appinfo/info.xml
+++ b/apps/files_pdfviewer/appinfo/info.xml
@@ -1,7 +1,8 @@
files_pdfviewer
- PDF viewer (pdfjs-based)
+ PDF Viewer
+ Inline PDF viewer (pdfjs-based)
0.1
GPL
Joan Creus
From 3cf81cadd5535b0516d73fe3de8ee91f330b4a6f Mon Sep 17 00:00:00 2001
From: Bartek Przybylski
Date: Sat, 25 Feb 2012 10:03:17 +0100
Subject: [PATCH 70/70] gallery thumbnail creation fix
---
apps/gallery/lib/photo.php | 1 -
1 file changed, 1 deletion(-)
diff --git a/apps/gallery/lib/photo.php b/apps/gallery/lib/photo.php
index 4eb313bfc3..872ecc9488 100644
--- a/apps/gallery/lib/photo.php
+++ b/apps/gallery/lib/photo.php
@@ -69,7 +69,6 @@ class OC_Gallery_Photo {
public static function getThumbnail($image_name) {
$save_dir = OC_Config::getValue("datadirectory").'/'. OC_User::getUser() .'/gallery/';
$save_dir .= dirname($image_name). '/';
- $image_name = basename($image_name);
$thumb_file = $save_dir . $image_name;
if (file_exists($thumb_file)) {
$image = new OC_Image($thumb_file);
|