diff options
Diffstat (limited to 'core')
36 files changed, 523 insertions, 193 deletions
diff --git a/core/ajax/share.php b/core/ajax/share.php index 648f0a71bd4..1166ea3198a 100644 --- a/core/ajax/share.php +++ b/core/ajax/share.php @@ -23,6 +23,8 @@ OC_JSON::checkLoggedIn(); OCP\JSON::callCheck(); OC_App::loadApps(); +$defaults = new \OCP\Defaults(); + if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSource'])) { switch ($_POST['action']) { case 'share': @@ -33,7 +35,7 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo if ($shareType === OCP\Share::SHARE_TYPE_LINK && $shareWith == '') { $shareWith = null; } - + $token = OCP\Share::shareItem( $_POST['itemType'], $_POST['itemSource'], @@ -41,7 +43,7 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo $shareWith, $_POST['permissions'] ); - + if (is_string($token)) { OC_JSON::success(array('data' => array('token' => $token))); } else { @@ -81,6 +83,104 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo ($return) ? OC_JSON::success() : OC_JSON::error(); } break; + case 'informRecipients': + + $l = OC_L10N::get('core'); + + $shareType = (int) $_POST['shareType']; + $itemType = $_POST['itemType']; + $itemSource = $_POST['itemSource']; + $recipient = $_POST['recipient']; + $ownerDisplayName = \OCP\User::getDisplayName(); + $from = \OCP\Util::getDefaultEmailAddress('sharing-noreply'); + + $noMail = array(); + $recipientList = array(); + + if($shareType === \OCP\Share::SHARE_TYPE_USER) { + $recipientList[] = $recipient; + } elseif ($shareType === \OCP\Share::SHARE_TYPE_GROUP) { + $recipientList = \OC_Group::usersInGroup($recipient); + } + + // don't send a mail to the user who shared the file + $recipientList = array_diff($recipientList, array(\OCP\User::getUser())); + + // send mail to all recipients with an email address + foreach ($recipientList as $recipient) { + //get correct target folder name + $email = OC_Preferences::getValue($recipient, 'settings', 'email', ''); + + if ($email !== '') { + $displayName = \OCP\User::getDisplayName($recipient); + $items = \OCP\Share::getItemSharedWithUser($itemType, $itemSource, $recipient); + $filename = trim($items[0]['file_target'], '/'); + $subject = (string)$l->t('%s shared »%s« with you', array($ownerDisplayName, $filename)); + $expiration = null; + if (isset($items[0]['expiration'])) { + $date = new DateTime($items[0]['expiration']); + $expiration = $date->format('Y-m-d'); + } + + if ($itemType === 'folder') { + $foldername = "/Shared/" . $filename; + } else { + // if it is a file we can just link to the Shared folder, + // that's the place where the user will find the file + $foldername = "/Shared"; + } + + $link = \OCP\Util::linkToAbsolute('files', 'index.php', array("dir" => $foldername)); + + $content = new OC_Template("core", "mail", ""); + $content->assign('link', $link); + $content->assign('user_displayname', $ownerDisplayName); + $content->assign('filename', $filename); + $content->assign('expiration', $expiration); + $text = $content->fetchPage(); + + $content = new OC_Template("core", "altmail", ""); + $content->assign('link', $link); + $content->assign('user_displayname', $ownerDisplayName); + $content->assign('filename', $filename); + $content->assign('expiration', $expiration); + $alttext = $content->fetchPage(); + + $default_from = OCP\Util::getDefaultEmailAddress('sharing-noreply'); + $from = OCP\Config::getUserValue(\OCP\User::getUser(), 'settings', 'email', $default_from); + + // send it out now + try { + OCP\Util::sendMail($email, $displayName, $subject, $text, $from, $ownerDisplayName, 1, $alttext); + } catch (Exception $exception) { + $noMail[] = \OCP\User::getDisplayName($recipient); + } + } + } + + \OCP\Share::setSendMailStatus($itemType, $itemSource, $shareType, true); + + if (empty($noMail)) { + OCP\JSON::success(); + } else { + OCP\JSON::error(array( + 'data' => array( + 'message' => $l->t("Couldn't send mail to following users: %s ", + implode(', ', $noMail) + ) + ) + )); + } + break; + case 'informRecipientsDisabled': + $itemSource = $_POST['itemSource']; + $shareType = $_POST['shareType']; + $itemType = $_POST['itemType']; + $recipient = $_POST['recipient']; + \OCP\Share::setSendMailStatus($itemType, $itemSource, $shareType, false); + OCP\JSON::success(); + break; + case 'email': // read post variables $user = OCP\USER::getUser(); @@ -213,10 +313,10 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo } } $count = 0; - + // enable l10n support $l = OC_L10N::get('core'); - + foreach ($groups as $group) { if ($count < 15) { if (!isset($_GET['itemShares']) diff --git a/core/avatar/controller.php b/core/avatar/controller.php index 9f7c0517c4a..22693824461 100644 --- a/core/avatar/controller.php +++ b/core/avatar/controller.php @@ -33,7 +33,7 @@ class Controller { $image->show(); } else { // Signalizes $.avatar() to display a defaultavatar - \OC_JSON::success(); + \OC_JSON::success(array("data"=> array("displayname"=> \OC_User::getDisplayName($user)) )); } } diff --git a/core/css/apps.css b/core/css/apps.css index de63495e50e..49fb189f384 100644 --- a/core/css/apps.css +++ b/core/css/apps.css @@ -16,6 +16,7 @@ -moz-box-sizing: border-box; box-sizing: border-box; background-color: #f8f8f8; border-right: 1px solid #ccc; + padding-bottom: 44px; } #app-navigation > ul { height: 100%; @@ -26,13 +27,11 @@ position: relative; width: 100%; -moz-box-sizing: border-box; box-sizing: border-box; - text-shadow: 0 1px 0 rgba(255,255,255,.9); } #app-navigation .active, #app-navigation .active a, #app-navigation li:hover > a { background-color: #ddd; - text-shadow: 0 1px 0 rgba(255,255,255,.7); } /* special rules for first-level entries and folders */ @@ -118,7 +117,7 @@ } #app-navigation > ul .open:hover { - -moz-box-shadow: inset 0 0 3px #ccc; -webkit-box-shadow: inset 0 0 3px #ccc; box-shadow: inset 0 0 3px #ccc; + box-shadow: inset 0 0 3px #ccc; } #app-navigation > ul .open ul { @@ -192,7 +191,7 @@ .settings-button { display: block; - height: 32px; + height: 44px; width: 100%; padding: 0; margin: 0; @@ -202,9 +201,14 @@ border: 0; border-radius: 0; } -.settings-button:hover { +.settings-button:hover, +.settings-button:focus { background-color: #ddd; } +.settings-button.opened:hover, +.settings-button.opened:focus { + background-color: transparent; +} /* icons */ .folder-icon, .delete-icon, .edit-icon, .progress-icon { diff --git a/core/css/share.css b/core/css/share.css index 2d6849b4bb1..2a21dc6edf6 100644 --- a/core/css/share.css +++ b/core/css/share.css @@ -2,95 +2,97 @@ This file is licensed under the Affero General Public License version 3 or later. See the COPYING-README file. */ - #dropdown { - background:#eee; - border-bottom-left-radius:1em; - border-bottom-right-radius:1em; - box-shadow:0 1px 1px #777; - display:block; - margin-right:7em; - position:absolute; - right:0; - width:19em; - z-index:500; - padding:1em; - } - - #shareWithList { - list-style-type:none; - padding:.5em; - } - - #shareWithList li { - padding-top:.1em; - } - - #shareWithList li:first-child { - white-space:normal; - } - - #shareWithList .cruds { - margin-left:-10px; - } +#dropdown { + background:#eee; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + box-shadow:0 1px 1px #777; + display:block; + margin-right:7em; + position:absolute; + right:0; + width:25em; + z-index:500; + padding:1em; +} + +#shareWithList { + list-style-type:none; + padding:.5em; +} + +#shareWithList li { + padding-top:.1em; +} + +#shareWithList li:first-child { + white-space:normal; +} + +#shareWithList .cruds { + margin-left:-10px; +} #shareWithList .unshare img, #shareWithList .showCruds img { vertical-align:text-bottom; /* properly align icons */ } - #dropdown label { - font-weight:400; - } +#dropdown label { + font-weight:400; +} - #dropdown input[type="checkbox"] { - margin:0 .2em 0 .5em; - } +#dropdown input[type="checkbox"] { + margin:0 .2em 0 .5em; +} - a.showCruds { - display:inline; - opacity:.5; - } +a.showCruds { + display:inline; + opacity:.5; +} - a.unshare { - display:inline; - float:right; - opacity:.5; - padding:.3em 0 0 .3em !important; +a.unshare { + display:inline; + float:right; + opacity:.5; + padding:.3em 0 0 .3em !important; margin-top:-5px; - } +} - #link { - border-top:1px solid #ddd; - padding-top:.5em; - } +#link { + border-top:1px solid #ddd; + padding-top:.5em; +} #dropdown input[type="text"],#dropdown input[type="password"] { - width:90%; + width:90%; } #dropdown form { - font-size: 100%; - margin-left: 0; - margin-right: 0; + font-size: 100%; + margin-left: 0; + margin-right: 0; } #linkText,#linkPass,#expiration { - display:none; - } + display:none; +} - #link #showPassword img { - padding-left:.3em; - width:12px; - } +#link #showPassword img { + padding-left:.3em; + width:12px; +} - .reshare,#link label,#expiration label { - padding-left:.5em; - } +.reshare,#link label,#expiration label { + padding-left:.5em; +} - a.showCruds:hover,a.unshare:hover { - opacity:1; - } +a.showCruds:hover,a.unshare:hover { + opacity:1; +} -.reshare { white-space:normal; } /* fix shared by text going out of box */ +.reshare { /* fix shared by text going out of box */ + white-space:normal; +} .ui-autocomplete { /* limit dropdown height to 4 1/2 entries */ max-height:103px; diff --git a/core/css/styles.css b/core/css/styles.css index dcdeda8a9c9..6406bcd7e63 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -19,9 +19,6 @@ body { background:#fefefe; font:normal .8em/1.6em "Helvetica Neue",Helvetica,Ari #body-user #header, #body-settings #header { position:fixed; top:0; left:0; right:0; z-index:100; height:45px; line-height:2.5em; background:#1d2d44 url('../img/noise.png') repeat; - -moz-box-shadow:0 0 10px rgba(0, 0, 0, .5); - -webkit-box-shadow:0 0 10px rgba(0, 0, 0, .5); - box-shadow:0 0 10px rgba(0, 0, 0, .5); } #body-login { @@ -41,11 +38,14 @@ body { background:#fefefe; font:normal .8em/1.6em "Helvetica Neue",Helvetica,Ari .header-right > * { vertical-align:middle; } #header .avatardiv { - text-shadow: none; float: left; display: inline-block; } +#header .avatardiv img { + opacity: 1; +} + /* INPUTS */ input[type="text"], input[type="password"], input[type="search"], input[type="number"], input[type="email"], input[type="url"], textarea, select, @@ -54,8 +54,7 @@ button, .button, width:10em; margin:.3em; padding:.6em .5em .4em; font-size:1em; background:#fff; color:#333; border:1px solid #ddd; outline:none; - -moz-box-shadow:0 1px 1px #fff, 0 2px 0 #bbb inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; - -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; + border-radius: 3px; } input[type="hidden"] { height:0; width:0; } input[type="text"], input[type="password"], input[type="search"], input[type="number"], input[type="email"], input[type="url"], textarea { @@ -78,7 +77,10 @@ textarea:hover, textarea:focus, textarea:active { } input[type="checkbox"] { margin:0; padding:0; height:auto; width:auto; } input[type="checkbox"]:hover+label, input[type="checkbox"]:focus+label { color:#111 !important; } -#quota { cursor:default; } +#quota { + cursor: default; + margin: 30px; +} /* SCROLLING */ @@ -91,10 +93,14 @@ input[type="checkbox"]:hover+label, input[type="checkbox"]:focus+label { color:# input[type="submit"], input[type="button"], button, .button, #quota, select, .pager li a { - width:auto; padding:.4em; - background-color:rgba(240,240,240,.9); font-weight:bold; color:#555; text-shadow:rgba(255,255,255,.9) 0 1px 0; border:1px solid rgba(190,190,190,.9); cursor:pointer; - -moz-box-shadow:0 1px 1px rgba(255,255,255,.9), 0 1px 1px rgba(255,255,255,.9) inset; -webkit-box-shadow:0 1px 1px rgba(255,255,255,.9), 0 1px 1px rgba(255,255,255,.9) inset; box-shadow:0 1px 1px rgba(255,255,255,.9), 0 1px 1px rgba(255,255,255,.9) inset; - -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; + width: auto; + padding: .4em; + background-color: rgba(240,240,240,.9); + font-weight: bold; + color: #555; + border: 1px solid rgba(190,190,190,.9); + cursor: pointer; + border-radius: 3px; } input[type="submit"]:hover, input[type="submit"]:focus, input[type="button"]:hover, input[type="button"]:focus, @@ -105,14 +111,17 @@ select:hover, select:focus, select:active { color:#333; } input[type="submit"] img, input[type="button"] img, button img, .button img { cursor:pointer; } -#header .button { border:none; -moz-box-shadow:none; -webkit-box-shadow:none; box-shadow:none; } +#header .button { + border: none; + box-shadow: none; +} /* disabled input fields and buttons */ input:disabled, input:disabled:hover, input:disabled:focus, button:disabled, button:disabled:hover, button:disabled:focus, .button:disabled, .button:disabled:hover, .button:disabled:focus, a.disabled, a.disabled:hover, a.disabled:focus { - background: rgba(230,230,230,.9); + background-color: rgba(230,230,230,.9); color: #999; cursor: default; } @@ -122,56 +131,70 @@ a.disabled, a.disabled:hover, a.disabled:focus { border: 1px solid #1d2d44; background: #35537a; color: #ddd; - text-shadow: #000 0 -1px 0; - -moz-box-shadow: 0 0 1px #000, 0 1px 0 #6d7d94 inset; - -webkit-box-shadow: 0 0 1px #000, 0 1px 0 #6d7d94 inset; - box-shadow: 0 0 1px #000, 0 1px 0 #6d7d94 inset; } .primary:hover, input[type="submit"].primary:hover, input[type="button"].primary:hover, button.primary:hover, .button.primary:hover, .primary:focus, input[type="submit"].primary:focus, input[type="button"].primary:focus, button.primary:focus, .button.primary:focus { border: 1px solid #1d2d44; background: #304d76; color: #fff; - text-shadow: #000 0 -1px 0; - -moz-box-shadow: 0 0 1px #000, 0 1px 0 #4d5d74 inset; - -webkit-box-shadow: 0 0 1px #000, 0 1px 0 #4d5d74 inset; - box-shadow: 0 0 1px #000, 0 1px 0 #4d5d74 inset; } .primary:active, input[type="submit"].primary:active, input[type="button"].primary:active, button.primary:active, .button.primary:active { border: 1px solid #1d2d44; background: #1d2d44; color: #bbb; - text-shadow: #000 0 -1px 0; - -moz-box-shadow: 0 1px 1px #3d4d64, 0 1px 1px 0 rgba(0,0,0,.2) inset; - -webkit-box-shadow: 0 1px 1px #3d4d64, 0 1px 1px 0 rgba(0,0,0,.2) inset; - box-shadow: 0 1px 1px #3d4d64, 0 1px 1px 0 rgba(0,0,0,.2) inset; } -.searchbox input[type="search"] { font-size:1.2em; padding:.2em .5em .2em 1.5em; background:#fff url('../img/actions/search.svg') no-repeat .5em center; border:0; -moz-border-radius:1em; -webkit-border-radius:1em; border-radius:1em; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; filter:alpha(opacity=70);opacity:.7; -webkit-transition:opacity 300ms; -moz-transition:opacity 300ms; -o-transition:opacity 300ms; transition:opacity 300ms; margin-top:10px; float:right; } -input[type="submit"].enabled { background:#66f866; border:1px solid #5e5; -moz-box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #cfc inset; -webkit-box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #cfc inset; box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #cfc inset; } +.searchbox input[type="search"] { + font-size: 1.2em; + padding: .2em .5em .2em 1.5em; + background: #fff url('../img/actions/search.svg') no-repeat .5em center; + border: 0; + border-radius: 1em; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; filter:alpha(opacity=70); opacity: .7; + margin-top: 10px; + float: right; +} +input[type="submit"].enabled { + background: #66f866; + border: 1px solid #5e5; +} /* CONTENT ------------------------------------------------------------------ */ #controls { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; position: fixed; - height: 36px; + height: 44px; width: 100%; - padding: 0 75px 0 6px; + padding-right: 75px; margin: 0; background: #eee; border-bottom: 1px solid #e7e7e7; z-index: 50; - -moz-box-sizing: border-box; box-sizing: border-box; - -moz-box-shadow: 0 -3px 7px #000; -webkit-box-shadow: 0 -3px 7px #000; box-shadow: 0 -3px 7px #000; } -#controls .button { +#controls .button, +#controls button, +#controls input[type='submit'], +#controls input[type='text'], +#controls input[type='password'], +#controls select { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; display: inline-block; + height: 36px; + padding: 7px 10px } #content { position:relative; height:100%; width:100%; } -#content .hascontrols { position: relative; top: 2.9em; } +#content .hascontrols { + position: relative; + top: 45px; +} #content-wrapper { position:absolute; height:100%; width:100%; padding-top:3.5em; padding-left:80px; -moz-box-sizing:border-box; box-sizing:border-box; @@ -189,8 +212,9 @@ input[type="submit"].enabled { background:#66f866; border:1px solid #5e5; -moz-b #rightcontent, .rightcontent { position:fixed; top:6.4em; left:24.5em; overflow:auto } #emptycontent { - font-size:1.5em; font-weight:bold; - color:#888; text-shadow:#fff 0 1px 0; + font-size: 1.5em; + font-weight: bold; + color: #888; position: absolute; text-align: center; top: 50%; @@ -216,11 +240,9 @@ input[type="submit"].enabled { background:#66f866; border:1px solid #5e5; -moz-b #body-login form input[type="checkbox"]+label { text-align: center; color: #ccc; - text-shadow: 0 1px 0 rgba(255,255,255,.1); -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; filter: alpha(opacity=60); opacity: .6; - text-shadow: 0 -1px 0 rgba(0,0,0,.5); } #body-login div.buttons { text-align:center; } @@ -274,9 +296,10 @@ input[name="adminpass-clone"] { padding-left:1.8em; width:11.7em !important; } #body-login input[type="password"], #body-login input[type="email"] { border: 1px solid #323233; - -moz-box-shadow: 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.25) inset; - -webkit-box-shadow: 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.25) inset; - box-shadow: 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.25) inset; + border-radius: 5px; +} +#body-login input[type='submit'] { + border-radius: 5px; } /* Nicely grouping input field sets */ @@ -292,18 +315,14 @@ input[name="adminpass-clone"] { padding-left:1.8em; width:11.7em !important; } border-top: 0; border-bottom: 0; border-radius: 0; - -moz-box-shadow: 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(0,0,0,.1) inset !important; - -webkit-box-shadow: 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(0,0,0,.1) inset !important; - box-shadow: 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(0,0,0,.1) inset !important; + box-shadow: 0 1px 0 rgba(0,0,0,.1) inset !important; } #body-login .groupbottom input { margin-top: 0; border-top: 0; border-top-right-radius: 0; border-top-left-radius: 0; - -moz-box-shadow: 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(0,0,0,.1) inset !important; - -webkit-box-shadow: 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(0,0,0,.1) inset !important; - box-shadow: 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(0,0,0,.1) inset !important; + box-shadow: 0 1px 0 rgba(0,0,0,.1) inset !important; } /* In field labels. No, HTML placeholder does not work as well. */ @@ -401,8 +420,7 @@ label.infield { cursor:text !important; top:1.05em; left:.85em; } #body-login form #selectDbType label { position:static; margin:0 -3px 5px; padding:.4em; font-size:12px; font-weight:bold; background:#f8f8f8; color:#888; cursor:pointer; - border:1px solid #ddd; text-shadow:#eee 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; + border: 1px solid #ddd; } #body-login form #selectDbType label.ui-state-hover, #body-login form #selectDbType label.ui-state-active { color:#000; background-color:#e8e8e8; } @@ -411,29 +429,24 @@ label.infield { cursor:text !important; top:1.05em; left:.85em; } #body-login .warning, #body-login .update, #body-login .error { display: block; padding: 10px; - color: #dd3b3b; - text-shadow: 0 -1px 0 rgba(0,0,0,.3); + color: #d2322d; background-color: rgba(0,0,0,.3); text-align: center; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; + border-radius: 3px; cursor: default; } #body-user .warning, #body-settings .warning { - margin-top: 8px; - padding: 5px; - background: #fdd; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; + margin-top: 8px; + padding: 5px; + background: #fdd; + border-radius: 3px; } .warning legend, .warning a, .error a { - color: #dd3b3b !important; + color: #d2322d !important; font-weight: bold; } .error pre { @@ -456,7 +469,6 @@ label.infield { cursor:text !important; top:1.05em; left:.85em; } font-weight: bold; } #body-login .warning legend { - text-shadow: none; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter: alpha(opacity=100); opacity: 1; @@ -512,7 +524,6 @@ label.infield { cursor:text !important; top:1.05em; left:.85em; } z-index: 75; height: 100%; background:#383c43 url('../img/noise.png') repeat; - -moz-box-shadow:0 0 7px #000; -webkit-box-shadow:0 0 7px #000; box-shadow:0 0 7px #000; overflow:hidden; box-sizing:border-box; -moz-box-sizing:border-box; /* prevent ugly selection effect on accidental selection */ -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; @@ -529,7 +540,6 @@ label.infield { cursor:text !important; top:1.05em; left:.85em; } font-size: 11px; text-align: center; color: #fff; - text-shadow: #000 0 -1px 0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; /* ellipsize long app names */ padding-bottom: 10px; } @@ -593,7 +603,6 @@ label.infield { cursor:text !important; top:1.05em; left:.85em; } margin-top: 7px; margin-left: 10px; color: #bbb; - text-shadow: 0 -1px 0 #000; } #expand { padding: 15px 15px 15px 5px; @@ -607,7 +616,7 @@ label.infield { cursor:text !important; top:1.05em; left:.85em; } position:absolute; right:0; top:45px; z-index:76; display:none; background:#383c43 url('../img/noise.png') repeat; border-bottom-left-radius:7px; border-bottom:1px #333 solid; border-left:1px #333 solid; - -moz-box-shadow:0 0 7px rgb(29,45,68); -webkit-box-shadow:0 0 7px rgb(29,45,68); box-shadow:0 0 7px rgb(29,45,68); + box-shadow:0 0 7px rgb(29,45,68); -moz-box-sizing: border-box; box-sizing: border-box; /* prevent ugly selection effect on accidental selection */ -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; @@ -616,7 +625,6 @@ label.infield { cursor:text !important; top:1.05em; left:.85em; } display: block; height: 40px; color: #fff; - text-shadow: 0 -1px 0 #000; padding: 4px 12px 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; filter: alpha(opacity=70); @@ -642,7 +650,17 @@ label.infield { cursor:text !important; top:1.05em; left:.85em; } .inlineblock { display: inline-block; } #notification-container { position: fixed; top: 0px; width: 100%; text-align: center; z-index: 101; line-height: 1.2;} -#notification, #update-notification { z-index:101; background-color:#fc4; border:0; padding:0 .7em .3em; display:none; position: relative; top:0; -moz-border-radius-bottomleft:1em; -webkit-border-bottom-left-radius:1em; border-bottom-left-radius:1em; -moz-border-radius-bottomright:1em; -webkit-border-bottom-right-radius:1em; border-bottom-right-radius:1em; } +#notification, #update-notification { + z-index: 101; + background-color: #fc4; + border: 0; + padding: 0 .7em .3em; + display: none; + position: relative; + top: 0; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} #notification span, #update-notification span { cursor:pointer; font-weight:bold; margin-left:1em; } tr .action:not(.permanent), .selectedActions a { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter:alpha(opacity=0); opacity:0; } @@ -652,13 +670,15 @@ tr .action { width:16px; height:16px; } tr:hover .action:hover, .selectedActions a:hover, .header-action:hover { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1; } tbody tr:hover, tr:active { background-color:#f8f8f8; } +#body-settings h2 { + font-size: 20px; + font-weight: normal; + margin-bottom: 7px; +} #body-settings .personalblock, #body-settings .helpblock { - padding: .5em 1em; - margin: 1em; - background-color: rgb(240,240,240); + padding: 30px; color: #555; - text-shadow: #fff 0 1px 0; - -moz-border-radius: .5em; -webkit-border-radius: .5em; border-radius: .5em; + border-top: 1px solid #ddd; } #body-settings .personalblock#quota { position:relative; padding:0; } #body-settings #controls+.helpblock { position:relative; margin-top:3em; } @@ -671,8 +691,8 @@ code { font-family:"Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono background-color: rgb(220,220,220); 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; } + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; } #quotatext {padding:.6em 1em;} .pager { list-style:none; float:right; display:inline; margin:.7em 13em 0 0; } @@ -751,15 +771,38 @@ span.ui-icon {float: left; margin: 3px 7px 30px 0;} .arrow.left { left:-13px; bottom:1.2em; -webkit-transform:rotate(270deg); -moz-transform:rotate(270deg); -o-transform:rotate(270deg); -ms-transform:rotate(270deg); transform:rotate(270deg); } .arrow.up { top:-8px; right:2em; } .arrow.down { -webkit-transform:rotate(180deg); -moz-transform:rotate(180deg); -o-transform:rotate(180deg); -ms-transform:rotate(180deg); transform:rotate(180deg); } -.help-includes {overflow: hidden; width: 100%; height: 100%; -moz-box-sizing: border-box; box-sizing: border-box; padding-top: 2.8em; } +.help-includes { + overflow: hidden; + width: 100%; + height: 100%; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding-top: 44px; +} .help-iframe {width: 100%; height: 100%; margin: 0;padding: 0; border: 0; overflow: auto;} /* ---- BREADCRUMB ---- */ -div.crumb { float:left; display:block; background:url('../img/breadcrumb.svg') no-repeat right 0; padding:.75em 1.5em 0 1em; height:2.9em; -moz-box-sizing:border-box; box-sizing:border-box; } -div.crumb:first-child { padding:10px 20px 10px 5px; } -div.crumb.last { font-weight:bold; background:none; padding-right:10px; } -div.crumb a{ padding: 0.9em 0 0.7em 0; } +div.crumb { + float: left; + display: block; + background: url('../img/breadcrumb.svg') no-repeat right center; + height: 44px; +} +div.crumb a { + position: relative; + top: 12px; + padding: 14px 24px 14px 17px; + color: #555; +} +div.crumb:first-child a { + position: relative; + top: 13px; +} +div.crumb.last { + font-weight: bold; + margin-right: 10px; +} /* some feedback for hover/tap on breadcrumbs */ div.crumb:hover, diff --git a/core/img/actions/checkmark.png b/core/img/actions/checkmark.png Binary files differnew file mode 100644 index 00000000000..99a4019c69e --- /dev/null +++ b/core/img/actions/checkmark.png diff --git a/core/img/actions/checkmark.svg b/core/img/actions/checkmark.svg new file mode 100644 index 00000000000..f70a407c2ed --- /dev/null +++ b/core/img/actions/checkmark.svg @@ -0,0 +1,4 @@ +<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" version="1.1" xml:space="preserve" height="16px" viewBox="-0.5 -0.5 16 16" width="16px" enable-background="new -0.5 -0.5 16 16" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" overflow="visible"><metadata><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><defs> +</defs> +<path fill="#000" d="M12.438,3.6875c-0.363,0-0.726,0.1314-1,0.4063l-4.5005,4.5-1.9687-2c-0.5498-0.5484-1.4489-0.5498-2,0l-0.5,0.5c-0.5512,0.5496-0.5512,1.4502,0,2l2.9687,2.9682c0.0063,0.007-0.0065,0.025,0,0.032l0.5,0.5c0.5497,0.55,1.4503,0.55,2,0l0.5-0.5,0.1875-0.219,5.313-5.2812c0.549-0.5498,0.549-1.4503,0-2l-0.5-0.5c-0.275-0.2749-0.638-0.4063-1-0.4063z" transform="translate(-0.5,-0.5)"/> +</svg> diff --git a/core/img/actions/star.png b/core/img/actions/star.png Binary files differnew file mode 100644 index 00000000000..124ce495af6 --- /dev/null +++ b/core/img/actions/star.png diff --git a/core/img/actions/star.svg b/core/img/actions/star.svg new file mode 100644 index 00000000000..7bcd8dc0598 --- /dev/null +++ b/core/img/actions/star.svg @@ -0,0 +1,14 @@ +<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="22" width="22" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> + <metadata> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:title/> + </cc:Work> + </rdf:RDF> + </metadata> + <g transform="matrix(0.06832234,0,0,0.06832234,-10.114234,-50.901693)"> + <path fill="#CCC" transform="translate(-21.071,-112.5)" d="m330.36,858.43,43.111,108.06,117.64,9.2572-89.445,74.392,27.55,114.75-98.391-62.079-100.62,61.66,28.637-112.76-89.734-76.638,116.09-7.6094z"/> + </g> +</svg> diff --git a/core/img/actions/starred.png b/core/img/actions/starred.png Binary files differnew file mode 100644 index 00000000000..5185d0f5381 --- /dev/null +++ b/core/img/actions/starred.png diff --git a/core/img/actions/starred.svg b/core/img/actions/starred.svg new file mode 100644 index 00000000000..c7a5a7dac12 --- /dev/null +++ b/core/img/actions/starred.svg @@ -0,0 +1,14 @@ +<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="22" width="22" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> + <metadata> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:title/> + </cc:Work> + </rdf:RDF> + </metadata> + <g transform="matrix(0.06832234,0,0,0.06832234,-10.114235,-50.901693)"> + <path fill="#FC0" transform="translate(-21.071,-112.5)" d="m330.36,858.43,43.111,108.06,117.64,9.2572-89.445,74.392,27.55,114.75-98.391-62.079-100.62,61.66,28.637-112.76-89.734-76.638,116.09-7.6094z"/> + </g> +</svg> diff --git a/core/img/breadcrumb-start.png b/core/img/breadcrumb-start.png Binary files differdeleted file mode 100644 index b0df5f44037..00000000000 --- a/core/img/breadcrumb-start.png +++ /dev/null diff --git a/core/img/breadcrumb-start.svg b/core/img/breadcrumb-start.svg deleted file mode 100644 index 7f36231cdf8..00000000000 --- a/core/img/breadcrumb-start.svg +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="36" width="11" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> - <g transform="translate(0 -1016.4)"> - <path d="m0 0 11 18-11 18z" transform="translate(0 1016.4)" fill="#ddd"/> - </g> -</svg> diff --git a/core/img/breadcrumb.png b/core/img/breadcrumb.png Binary files differindex 84992be0d93..7e9593a36bf 100644 --- a/core/img/breadcrumb.png +++ b/core/img/breadcrumb.png diff --git a/core/img/breadcrumb.svg b/core/img/breadcrumb.svg index 05a216e50a9..f0b5c9218d5 100644 --- a/core/img/breadcrumb.svg +++ b/core/img/breadcrumb.svg @@ -1,6 +1,12 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="36" width="11" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> - <g transform="translate(0 -1016.4)"> - <path d="m0.5 0 10 18-10 18 10-18z" transform="translate(0 1016.4)" stroke="#ddd" stroke-linecap="round" stroke-miterlimit="31.2" stroke-width="0.9" fill="#ddd"/> - </g> +<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="44" width="14" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> + <metadata> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:title/> + </cc:Work> + </rdf:RDF> + </metadata> + <path d="M0.54879,0.047777,12.744,22,0.54879,43.951,12.744,22z" stroke="#d7d7d7" stroke-linecap="round" stroke-miterlimit="31.20000076000000178" stroke-width="1.09758711000000009" fill="#F00"/> </svg> diff --git a/core/img/places/link.png b/core/img/places/link.png Binary files differnew file mode 100644 index 00000000000..44b7e199a72 --- /dev/null +++ b/core/img/places/link.png diff --git a/core/img/places/link.svg b/core/img/places/link.svg new file mode 100644 index 00000000000..8784ebc1456 --- /dev/null +++ b/core/img/places/link.svg @@ -0,0 +1,12 @@ +<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="32" width="32" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> + <metadata> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:title/> + </cc:Work> + </rdf:RDF> + </metadata> + <path fill="#333" d="M16,4c-6.6274,0-12,5.3726-12,12,0,6.627,5.3726,12,12,12,6.627,0,12-5.373,12-12,0-6.6274-5.373-12-12-12zm1.375,1.5313c2.059,0.0457,3.879,1.2826,5.719,2.0938l2.9691,4.1093-0.46971,1.7657,0.90686,0.56246-0.01543,2.0937c-0.02074,0.59892,0.0086,1.1986-0.0156,1.7969-0.28517,1.1355-0.94394,2.1713-1.5,3.2031-0.37695,0.18585,0.03437-1.2317-0.20313-1.6719,0.05486-1.0173-0.80743-0.97029-1.3903-0.40526-0.72172,0.42068-2.3074,0.54754-2.3589-0.59383-0.40972-1.3716-0.06-2.833,0.49886-4.1093l-0.921-1.125,0.327-2.891-1.469-1.4839,0.345-1.6252-1.719-0.9687c-0.339-0.2661-0.984-0.3713-1.125-0.7344,0.13954-0.00789,0.28457-0.018686,0.42189-0.0156zm-4.2187,0.015634c0.0539,0.00789,0.11999,0.045309,0.21874,0.125,0.57943,0.31834-0.14143,0.67954-0.31251,1.0157-0.92537,0.62589,0.28457,1.1385,0.68743,1.6406,0.64577-0.18549,1.2917-1.1086,2.2344-0.828,1.2058-0.37629,1.0137,1.0099,1.7031,1.625,0.08948,0.28954,1.5086,1.2317,0.65623,0.92177-0.702-0.54411-1.4827-0.50314-1.9845,0.28131-1.355,0.735-0.552-1.4144-1.202-1.9373-0.982-1.0957-0.57,0.8186-0.687,1.3907-0.639-0.0139-1.831-0.4913-2.485,0.2816l0.64046,1.0467,0.76577-1.1719c0.186-0.42411,0.41949,0.32966,0.62486,0.46886,0.24531,0.47297,1.4109,1.2744,0.53126,1.5-1.3039,0.72326-2.3295,1.8202-3.4375,2.7969-0.37371,0.78857-1.1366,0.6984-1.6094,0.0468-1.1438-0.70372-1.0589,1.1256-0.99994,1.8125l1.0013-0.626v1.0312c-0.028286,0.19509-0.00411,0.39806-0.0156,0.59383-0.70063,0.732-1.4069-1.0277-2.0157-1.422l-0.0468-2.5781c0.022114-0.72429-0.1308-1.4659,0.0156-2.1718,1.3779-1.4789,2.7775-3.0107,3.5935-4.891h1.3437c0.93909,0.45497,0.40406-1.0082,0.7812-0.95314zm-1.984,13.406c0.16303-0.01739,0.34848,0.01984,0.54688,0.12501,1.265,0.18106,2.2109,1.0987,3.2187,1.7969,0.80352,0.79632,2.5419,0.54134,2.7345,1.8907-0.29248,1.4636-1.7323,2.2495-3,2.7657-0.31646,0.17657-0.65657,0.31714-1.0157,0.37543-1.1753,0.29314-1.6834-0.912-1.9219-1.8137-0.53212-1.1143-1.8621-1.9577-1.6718-3.3274,0.0312-0.68057,0.40286-1.7373,1.1093-1.8125z"/> +</svg> diff --git a/core/js/avatar.js b/core/js/avatar.js index 57e6daa0930..c54c4068768 100644 --- a/core/js/avatar.js +++ b/core/js/avatar.js @@ -1,6 +1,6 @@ $(document).ready(function(){ if (OC.currentUser) { - $('#header .avatardiv').avatar(OC.currentUser, 32); + $('#header .avatardiv').avatar(OC.currentUser, 32, undefined, true); // Personal settings $('#avatar .avatardiv').avatar(OC.currentUser, 128); } diff --git a/core/js/jquery.avatar.js b/core/js/jquery.avatar.js index f1382fd7d2d..00068101726 100644 --- a/core/js/jquery.avatar.js +++ b/core/js/jquery.avatar.js @@ -15,7 +15,7 @@ * You may use this on any <div></div> * Here I'm using <div class="avatardiv"></div> as an example. * - * There are 4 ways to call this: + * There are 5 ways to call this: * * 1. $('.avatardiv').avatar('jdoe', 128); * This will make the div to jdoe's fitting avatar, with a size of 128px. @@ -34,10 +34,15 @@ * 4. $('.avatardiv').avatar('jdoe', 128, true); * This will behave like the first example, except it will also append random * hashes to the custom avatar images, to force image reloading in IE8. + * + * 5. $('.avatardiv').avatar('jdoe', 128, undefined, true); + * This will behave like the first example, but it will hide the avatardiv, if + * it will display the default placeholder. undefined is the ie8fix from + * example 4 and can be either true, or false/undefined, to be ignored. */ (function ($) { - $.fn.avatar = function(user, size, ie8fix) { + $.fn.avatar = function(user, size, ie8fix, hidedefault) { if (typeof(size) === 'undefined') { if (this.height() > 0) { size = this.height(); @@ -69,8 +74,17 @@ var url = OC.Router.generate('core_avatar_get', {user: user, size: size})+'?requesttoken='+oc_requesttoken; $.get(url, function(result) { if (typeof(result) === 'object') { - $div.placeholder(user); + if (!hidedefault) { + if (result.data && result.data.displayname) { + $div.placeholder(user, result.data.displayname); + } else { + $div.placeholder(user); + } + } else { + $div.hide(); + } } else { + $div.show(); if (ie8fix === true) { $div.html('<img src="'+url+'#'+Math.floor(Math.random()*1000)+'">'); } else { diff --git a/core/js/placeholder.js b/core/js/placeholder.js index d63730547d7..ee2a8ce84c4 100644 --- a/core/js/placeholder.js +++ b/core/js/placeholder.js @@ -36,10 +36,21 @@ * * <div id="albumart" style="background-color: hsl(123, 90%, 65%); ... ">T</div> * + * You may also call it like this, to have a different background, than the seed: + * + * $('#albumart').placeholder('The Album Title', 'Album Title'); + * + * Resulting in: + * + * <div id="albumart" style="background-color: hsl(123, 90%, 65%); ... ">A</div> + * */ (function ($) { - $.fn.placeholder = function(seed) { + $.fn.placeholder = function(seed, text) { + // set optional argument "text" to value of "seed" if undefined + text = text || seed; + var hash = md5(seed), maxRange = parseInt('ffffffffffffffffffffffffffffffff', 16), hue = parseInt(hash, 16) / maxRange * 256, @@ -56,7 +67,7 @@ this.css('font-size', (height * 0.55) + 'px'); if(seed !== null && seed.length) { - this.html(seed[0].toUpperCase()); + this.html(text[0].toUpperCase()); } }; }(jQuery)); diff --git a/core/js/setup.js b/core/js/setup.js index c0df1ed96b0..62f313fc501 100644 --- a/core/js/setup.js +++ b/core/js/setup.js @@ -54,7 +54,7 @@ $(document).ready(function() { var post = $(this).serializeArray(); // Disable inputs - $(':submit', this).attr('disabled','disabled').val('Finishing …'); + $(':submit', this).attr('disabled','disabled').val($(':submit', this).data('finishing')); $('input', this).addClass('ui-state-disabled').attr('disabled','disabled'); $('#selectDbType').buttonset('disable'); diff --git a/core/js/share.js b/core/js/share.js index f54f13c95e3..8d14520cd74 100644 --- a/core/js/share.js +++ b/core/js/share.js @@ -114,6 +114,7 @@ OC.Share={ data = false; } }}); + return data; }, share:function(itemType, itemSource, shareType, shareWith, permissions, callback) { @@ -174,10 +175,10 @@ OC.Share={ var allowPublicUploadStatus = false; $.each(data.shares, function(key, value) { - if (allowPublicUploadStatus) { + if (value.share_type === OC.Share.SHARE_TYPE_LINK) { + allowPublicUploadStatus = (value.permissions & OC.PERMISSION_CREATE) ? true : false; return true; } - allowPublicUploadStatus = (value.permissions & OC.PERMISSION_CREATE) ? true : false; }); html += '<input id="shareWith" type="text" placeholder="'+t('core', 'Share with')+'" />'; @@ -217,9 +218,9 @@ OC.Share={ OC.Share.showLink(share.token, share.share_with, itemSource); } else { if (share.collection) { - OC.Share.addShareWith(share.share_type, share.share_with, share.share_with_displayname, share.permissions, possiblePermissions, share.collection); + OC.Share.addShareWith(share.share_type, share.share_with, share.share_with_displayname, share.permissions, possiblePermissions, share.mail_send, share.collection); } else { - OC.Share.addShareWith(share.share_type, share.share_with, share.share_with_displayname, share.permissions, possiblePermissions, false); + OC.Share.addShareWith(share.share_type, share.share_with, share.share_with_displayname, share.permissions, possiblePermissions, share.mail_send, false); } } if (share.expiration != null) { @@ -301,7 +302,7 @@ OC.Share={ } }); }, - addShareWith:function(shareType, shareWith, shareWithDisplayName, permissions, possiblePermissions, collection) { + addShareWith:function(shareType, shareWith, shareWithDisplayName, permissions, possiblePermissions, mailSend, collection) { if (!OC.Share.itemShares[shareType]) { OC.Share.itemShares[shareType] = []; } @@ -343,6 +344,14 @@ OC.Share={ }else{ html += escapeHTML(shareWithDisplayName); } + var mailNotificationEnabled = $('input:hidden[name=mailNotificationEnabled]').val(); + if (mailNotificationEnabled === 'yes') { + var checked = ''; + if (mailSend === '1') { + checked = 'checked'; + } + html += '<input type="checkbox" name="mailNotification" class="mailNotification" ' + checked + ' />'+t('core', 'notify user by email')+'</label>'; + } if (possiblePermissions & OC.PERMISSION_CREATE || possiblePermissions & OC.PERMISSION_UPDATE || possiblePermissions & OC.PERMISSION_DELETE) { if (editChecked == '') { html += '<label style="display:none;">'; @@ -699,5 +708,27 @@ $(document).ready(function() { } }); + $(document).on('click', '#dropdown input[name=mailNotification]', function() { + var li = $(this).parent(); + var itemType = $('#dropdown').data('item-type'); + var itemSource = $('#dropdown').data('item-source'); + var action = ''; + if (this.checked) { + action = 'informRecipients'; + } else { + action = 'informRecipientsDisabled'; + } + + var shareType = $(li).data('share-type'); + var shareWith = $(li).data('share-with'); + + $.post(OC.filePath('core', 'ajax', 'share.php'), {action: action, recipient: shareWith, shareType: shareType, itemSource: itemSource, itemType: itemType}, function(result) { + if (result.status !== 'success') { + OC.dialogs.alert(t('core', result.data.message), t('core', 'Warning')); + } + }); + +}); + }); diff --git a/core/l10n/cs_CZ.php b/core/l10n/cs_CZ.php index 449a49f5686..8b63079c87a 100644 --- a/core/l10n/cs_CZ.php +++ b/core/l10n/cs_CZ.php @@ -59,7 +59,10 @@ $TRANSLATIONS = array( "Ok" => "Ok", "Error loading message template: {error}" => "Chyba při nahrávání šablony zprávy: {error}", "_{count} file conflict_::_{count} file conflicts_" => array("","",""), +"One file conflict" => "Jeden konflikt souboru", +"Which files do you want to keep?" => "Které soubory chcete ponechat?", "Cancel" => "Zrušit", +"Continue" => "Pokračovat", "The object type is not specified." => "Není určen typ objektu.", "Error" => "Chyba", "The app name is not specified." => "Není určen název aplikace.", diff --git a/core/l10n/da.php b/core/l10n/da.php index e2399fdc5cc..8938f2107fa 100644 --- a/core/l10n/da.php +++ b/core/l10n/da.php @@ -16,6 +16,8 @@ $TRANSLATIONS = array( "Error adding %s to favorites." => "Fejl ved tilføjelse af %s til favoritter.", "No categories selected for deletion." => "Ingen kategorier valgt", "Error removing %s from favorites." => "Fejl ved fjernelse af %s fra favoritter.", +"Unknown filetype" => "Ukendt filtype", +"Invalid image" => "Ugyldigt billede", "Sunday" => "Søndag", "Monday" => "Mandag", "Tuesday" => "Tirsdag", diff --git a/core/l10n/fr.php b/core/l10n/fr.php index 29489e86b7f..e7cb75e53f0 100644 --- a/core/l10n/fr.php +++ b/core/l10n/fr.php @@ -19,6 +19,8 @@ $TRANSLATIONS = array( "No image or file provided" => "Aucune image ou fichier fourni", "Unknown filetype" => "Type de fichier inconnu", "Invalid image" => "Image invalide", +"No temporary profile picture available, try again" => "Aucune image temporaire disponible pour le profil. Essayez à nouveau.", +"No crop data provided" => "Aucune donnée de culture fournie", "Sunday" => "Dimanche", "Monday" => "Lundi", "Tuesday" => "Mardi", @@ -61,7 +63,10 @@ $TRANSLATIONS = array( "Which files do you want to keep?" => "Quels fichiers désirez-vous garder ?", "If you select both versions, the copied file will have a number added to its name." => "Si vous sélectionnez les deux versions, un nombre sera ajouté au nom du fichier copié.", "Cancel" => "Annuler", +"Continue" => "Poursuivre", +"(all selected)" => "(tous sélectionnés)", "({count} selected)" => "({count} sélectionnés)", +"Error loading file exists template" => "Erreur de chargement du modèle de fichier existant", "The object type is not specified." => "Le type d'objet n'est pas spécifié.", "Error" => "Erreur", "The app name is not specified." => "Le nom de l'application n'est pas spécifié.", diff --git a/core/l10n/hu_HU.php b/core/l10n/hu_HU.php index d893269ee81..107a5f04c05 100644 --- a/core/l10n/hu_HU.php +++ b/core/l10n/hu_HU.php @@ -2,6 +2,12 @@ $TRANSLATIONS = array( "%s shared »%s« with you" => "%s megosztotta Önnel ezt: »%s«", "group" => "csoport", +"Turned on maintenance mode" => "A karbantartási mód bekapcsolva", +"Turned off maintenance mode" => "A karbantartási mód kikapcsolva", +"Updated database" => "Frissítet adatbázis", +"Updating filecache, this may take really long..." => "A filecache frissítése folyamatban, ez a folyamat hosszabb ideig is eltarthat...", +"Updated filecache" => "Filecache frissítve", +"... %d%% done ..." => "... %d%% kész ...", "Category type not provided." => "Nincs megadva a kategória típusa.", "No category to add?" => "Nincs hozzáadandó kategória?", "This category already exists: %s" => "Ez a kategória már létezik: %s", @@ -10,6 +16,11 @@ $TRANSLATIONS = array( "Error adding %s to favorites." => "Nem sikerült a kedvencekhez adni ezt: %s", "No categories selected for deletion." => "Nincs törlésre jelölt kategória", "Error removing %s from favorites." => "Nem sikerült a kedvencekből törölni ezt: %s", +"No image or file provided" => "Nincs kép vagy file megadva", +"Unknown filetype" => "Ismeretlen file tipús", +"Invalid image" => "Hibás kép", +"No temporary profile picture available, try again" => "Az átmeneti profil kép nem elérhető, próbáld újra", +"No crop data provided" => "Vágáshoz nincs adat megadva", "Sunday" => "vasárnap", "Monday" => "hétfő", "Tuesday" => "kedd", @@ -42,11 +53,20 @@ $TRANSLATIONS = array( "last year" => "tavaly", "years ago" => "több éve", "Choose" => "Válasszon", +"Error loading file picker template: {error}" => "Nem sikerült betölteni a fájlkiválasztó sablont: {error}", "Yes" => "Igen", "No" => "Nem", "Ok" => "Ok", +"Error loading message template: {error}" => "Nem sikerült betölteni az üzenet sablont: {error}", "_{count} file conflict_::_{count} file conflicts_" => array("",""), +"One file conflict" => "Egy file ütközik", +"Which files do you want to keep?" => "Melyik file-okat akarod megtartani?", +"If you select both versions, the copied file will have a number added to its name." => "Ha kiválasztod mindazokaz a verziókat, a másolt fileok neve sorszámozva lesz.", "Cancel" => "Mégsem", +"Continue" => "Folytatás", +"(all selected)" => "(all selected)", +"({count} selected)" => "({count} kiválasztva)", +"Error loading file exists template" => "Hiba a létező sablon betöltésekor", "The object type is not specified." => "Az objektum típusa nincs megadva.", "Error" => "Hiba", "The app name is not specified." => "Az alkalmazás neve nincs megadva.", @@ -85,6 +105,7 @@ $TRANSLATIONS = array( "Email sent" => "Az emailt elküldtük", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "A frissítés nem sikerült. Kérem értesítse erről a problémáról az <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud közösséget</a>.", "The update was successful. Redirecting you to ownCloud now." => "A frissítés sikeres volt. Visszairányítjuk az ownCloud szolgáltatáshoz.", +"%s password reset" => "%s jelszó visszaállítás", "Use the following link to reset your password: {link}" => "Használja ezt a linket a jelszó ismételt beállításához: {link}", "The link to reset your password has been sent to your email.<br>If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator ." => "Emailben fog kapni egy linket, amivel új jelszót tud majd beállítani magának. <br>Ha a levél nem jött meg, holott úgy érzi, hogy már meg kellett volna érkeznie, akkor ellenőrizze a spam/levélszemét mappáját. <br>Ha ott sincsen, akkor érdeklődjön a rendszergazdánál.", "Request failed!<br>Did you make sure your email/username was right?" => "A kérést nem sikerült teljesíteni! <br>Biztos, hogy jó emailcímet/felhasználónevet adott meg?", diff --git a/core/l10n/it.php b/core/l10n/it.php index 94395b02261..bd2fad79c87 100644 --- a/core/l10n/it.php +++ b/core/l10n/it.php @@ -53,18 +53,18 @@ $TRANSLATIONS = array( "last year" => "anno scorso", "years ago" => "anni fa", "Choose" => "Scegli", -"Error loading file picker template: {error}" => "Errore nel caricamento del modello del selettore file: {error}", +"Error loading file picker template: {error}" => "Errore durante il caricamento del modello del selettore file: {error}", "Yes" => "Sì", "No" => "No", "Ok" => "Ok", -"Error loading message template: {error}" => "Errore nel caricamento del modello di messaggio: {error}", +"Error loading message template: {error}" => "Errore durante il caricamento del modello di messaggio: {error}", "_{count} file conflict_::_{count} file conflicts_" => array("{count} file in conflitto","{count} file in conflitto"), -"One file conflict" => "Un conflitto tra file", +"One file conflict" => "Un file in conflitto", "Which files do you want to keep?" => "Quali file vuoi mantenere?", -"If you select both versions, the copied file will have a number added to its name." => "Se selezioni entrambe le versioni, verrà aggiunto un numero al nome del file copiato.", +"If you select both versions, the copied file will have a number added to its name." => "Se selezioni entrambe le versioni, sarà aggiunto un numero al nome del file copiato.", "Cancel" => "Annulla", "Continue" => "Continua", -"(all selected)" => "(tutti selezionati)", +"(all selected)" => "(tutti i selezionati)", "({count} selected)" => "({count} selezionati)", "Error loading file exists template" => "Errore durante il caricamento del modello del file esistente", "The object type is not specified." => "Il tipo di oggetto non è specificato.", diff --git a/core/l10n/ja_JP.php b/core/l10n/ja_JP.php index 0baab441f95..110e5b21201 100644 --- a/core/l10n/ja_JP.php +++ b/core/l10n/ja_JP.php @@ -20,6 +20,7 @@ $TRANSLATIONS = array( "Unknown filetype" => "不明なファイルタイプ", "Invalid image" => "無効な画像", "No temporary profile picture available, try again" => "一時的なプロファイル用画像が利用できません。もう一度試して下さい", +"No crop data provided" => "クロップデータは提供されません", "Sunday" => "日", "Monday" => "月", "Tuesday" => "火", @@ -57,8 +58,15 @@ $TRANSLATIONS = array( "No" => "いいえ", "Ok" => "OK", "Error loading message template: {error}" => "メッセージテンプレートの読み込みエラー: {error}", -"_{count} file conflict_::_{count} file conflicts_" => array(""), +"_{count} file conflict_::_{count} file conflicts_" => array("{count} ファイルが競合"), +"One file conflict" => "1ファイルが競合", +"Which files do you want to keep?" => "どちらのファイルを保持したいですか?", +"If you select both versions, the copied file will have a number added to its name." => "両方のバージョンを選択した場合は、ファイル名の後ろに数字を追加したファイルのコピーを作成します。", "Cancel" => "キャンセル", +"Continue" => "続ける", +"(all selected)" => "(全て選択)", +"({count} selected)" => "({count} 選択)", +"Error loading file exists template" => "既存ファイルのテンプレートの読み込みエラー", "The object type is not specified." => "オブジェクタイプが指定されていません。", "Error" => "エラー", "The app name is not specified." => "アプリ名がしていされていません。", diff --git a/core/l10n/lt_LT.php b/core/l10n/lt_LT.php index 492aee12c1d..610e7aeadeb 100644 --- a/core/l10n/lt_LT.php +++ b/core/l10n/lt_LT.php @@ -58,8 +58,15 @@ $TRANSLATIONS = array( "No" => "Ne", "Ok" => "Gerai", "Error loading message template: {error}" => "Klaida įkeliant žinutės ruošinį: {error}", -"_{count} file conflict_::_{count} file conflicts_" => array("","",""), +"_{count} file conflict_::_{count} file conflicts_" => array("{count} failas konfliktuoja","{count} failai konfliktuoja","{count} failų konfliktų"), +"One file conflict" => "Vienas failo konfliktas", +"Which files do you want to keep?" => "Kuriuos failus norite laikyti?", +"If you select both versions, the copied file will have a number added to its name." => "Jei pasirenkate abi versijas, nukopijuotas failas turės pridėtą numerį pavadinime.", "Cancel" => "Atšaukti", +"Continue" => "Tęsti", +"(all selected)" => "(visi pažymėti)", +"({count} selected)" => "({count} pažymėtų)", +"Error loading file exists template" => "Klaida įkeliant esančių failų ruošinį", "The object type is not specified." => "Objekto tipas nenurodytas.", "Error" => "Klaida", "The app name is not specified." => "Nenurodytas programos pavadinimas.", diff --git a/core/l10n/pl.php b/core/l10n/pl.php index 621038f79f7..ad467fe100e 100644 --- a/core/l10n/pl.php +++ b/core/l10n/pl.php @@ -16,6 +16,8 @@ $TRANSLATIONS = array( "Error adding %s to favorites." => "Błąd podczas dodawania %s do ulubionych.", "No categories selected for deletion." => "Nie zaznaczono kategorii do usunięcia.", "Error removing %s from favorites." => "Błąd podczas usuwania %s z ulubionych.", +"Unknown filetype" => "Nieznany typ pliku", +"Invalid image" => "Nieprawidłowe zdjęcie", "Sunday" => "Niedziela", "Monday" => "Poniedziałek", "Tuesday" => "Wtorek", @@ -51,8 +53,12 @@ $TRANSLATIONS = array( "Yes" => "Tak", "No" => "Nie", "Ok" => "OK", -"_{count} file conflict_::_{count} file conflicts_" => array("","",""), +"_{count} file conflict_::_{count} file conflicts_" => array("{count} konfliktów plików","{count} konfliktów plików","{count} konfliktów plików"), +"One file conflict" => "Konflikt pliku", "Cancel" => "Anuluj", +"Continue" => "Kontynuuj ", +"(all selected)" => "(wszystkie zaznaczone)", +"({count} selected)" => "({count} zaznaczonych)", "The object type is not specified." => "Nie określono typu obiektu.", "Error" => "Błąd", "The app name is not specified." => "Nie określono nazwy aplikacji.", diff --git a/core/l10n/sv.php b/core/l10n/sv.php index 660cab0a620..0ea3259df68 100644 --- a/core/l10n/sv.php +++ b/core/l10n/sv.php @@ -16,6 +16,11 @@ $TRANSLATIONS = array( "Error adding %s to favorites." => "Fel vid tillägg av %s till favoriter.", "No categories selected for deletion." => "Inga kategorier valda för radering.", "Error removing %s from favorites." => "Fel vid borttagning av %s från favoriter.", +"No image or file provided" => "Ingen bild eller fil har tillhandahållits", +"Unknown filetype" => "Okänd filtyp", +"Invalid image" => "Ogiltig bild", +"No temporary profile picture available, try again" => "Ingen temporär profilbild finns tillgänglig, försök igen", +"No crop data provided" => "Ingen beskärdata har angivits", "Sunday" => "Söndag", "Monday" => "Måndag", "Tuesday" => "Tisdag", @@ -48,11 +53,20 @@ $TRANSLATIONS = array( "last year" => "förra året", "years ago" => "år sedan", "Choose" => "Välj", +"Error loading file picker template: {error}" => "Fel uppstod för filväljarmall: {error}", "Yes" => "Ja", "No" => "Nej", "Ok" => "Ok", -"_{count} file conflict_::_{count} file conflicts_" => array("",""), +"Error loading message template: {error}" => "Fel uppstod under inläsningen av meddelandemallen: {error}", +"_{count} file conflict_::_{count} file conflicts_" => array("{count} filkonflikt","{count} filkonflikter"), +"One file conflict" => "En filkonflikt", +"Which files do you want to keep?" => "Vilken fil vill du behålla?", +"If you select both versions, the copied file will have a number added to its name." => "Om du väljer båda versionerna kommer de kopierade filerna ha nummer tillagda i filnamnet.", "Cancel" => "Avbryt", +"Continue" => "Fortsätt", +"(all selected)" => "(Alla valda)", +"({count} selected)" => "({count} valda)", +"Error loading file exists template" => "Fel uppstod filmall existerar", "The object type is not specified." => "Objekttypen är inte specificerad.", "Error" => "Fel", "The app name is not specified." => " Namnet på appen är inte specificerad.", diff --git a/core/skeleton/welcome.txt b/core/skeleton/welcome.txt new file mode 100644 index 00000000000..c86eaf91bbe --- /dev/null +++ b/core/skeleton/welcome.txt @@ -0,0 +1,5 @@ +Welcome to your ownCloud account! + +This is just an example file for developers and git users. +The packaged and released versions will come with better examples. + diff --git a/core/templates/altmail.php b/core/templates/altmail.php index 2551473c6f0..00b67bee456 100644 --- a/core/templates/altmail.php +++ b/core/templates/altmail.php @@ -1,5 +1,9 @@ <?php -print_unescaped($l->t("Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!", array($_['user_displayname'], $_['filename'], $_['link']))); +print_unescaped($l->t("Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n", array($_['user_displayname'], $_['filename'], $_['link']))); +if ( isset($_['expiration']) ) { + print_unescaped($l->t("The share will expire on %s.\n\n", array($_['expiration']))); +} +p($l->t("Cheers!")); ?> -- diff --git a/core/templates/installation.php b/core/templates/installation.php index ef20d8672e9..5a103762269 100644 --- a/core/templates/installation.php +++ b/core/templates/installation.php @@ -181,5 +181,5 @@ </fieldset> <?php endif; ?> - <div class="buttons"><input type="submit" class="primary" value="<?php p($l->t( 'Finish setup' )); ?>" /></div> + <div class="buttons"><input type="submit" class="primary" value="<?php p($l->t( 'Finish setup' )); ?>" data-finishing="<?php p($l->t( 'Finishing …' )); ?>" /></div> </form> diff --git a/core/templates/login.php b/core/templates/login.php index ee761f0aa52..06f64d41e39 100644 --- a/core/templates/login.php +++ b/core/templates/login.php @@ -32,9 +32,10 @@ <?php p($l->t('Lost your password?')); ?> </a> <?php endif; ?> - + <?php if ($_['rememberLoginAllowed'] === true) : ?> <input type="checkbox" name="remember_login" value="1" id="remember_login" checked /> <label for="remember_login"><?php p($l->t('remember')); ?></label> + <?php endif; ?> <input type="hidden" name="timezone-offset" id="timezone-offset"/> <input type="submit" id="submit" class="login primary" value="<?php p($l->t('Log in')); ?>"/> </fieldset> diff --git a/core/templates/mail.php b/core/templates/mail.php index de72b136b13..40092f5491f 100644 --- a/core/templates/mail.php +++ b/core/templates/mail.php @@ -12,7 +12,11 @@ <td bgcolor="#f8f8f8" width="20px"> </td> <td bgcolor="#f8f8f8" style="font-weight:normal; font-size:0.8em; line-height:1.2em; font-family:verdana,'arial',sans;"> <?php -print_unescaped($l->t('Hey there,<br><br>just letting you know that %s shared »%s« with you.<br><a href="%s">View it!</a><br><br>Cheers!', array($_['user_displayname'], $_['filename'], $_['link']))); +print_unescaped($l->t('Hey there,<br><br>just letting you know that %s shared »%s« with you.<br><a href="%s">View it!</a><br><br>', array($_['user_displayname'], $_['filename'], $_['link']))); +if ( isset($_['expiration']) ) { + print_unescaped($l->t("The share will expire on %s.<br><br>", array($_['expiration']))); +} +p($l->t('Cheers!')); ?> </td> </tr> @@ -22,7 +26,8 @@ print_unescaped($l->t('Hey there,<br><br>just letting you know that %s shared » <td bgcolor="#f8f8f8" style="font-weight:normal; font-size:0.8em; line-height:1.2em; font-family:verdana,'arial',sans;">--<br> <?php p($theme->getName()); ?> - <?php p($theme->getSlogan()); ?> -<br><a href="<?php print_unescaped($theme->getBaseUrl()); ?>"><?php print_unescaped($theme->getBaseUrl());?></a></td> +<br><a href="<?php print_unescaped($theme->getBaseUrl()); ?>"><?php print_unescaped($theme->getBaseUrl());?></a> +</td> </tr> <tr> <td bgcolor="#f8f8f8" colspan="2"> </td> |