diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/exe/ajax.php | 26 | ||||
-rw-r--r-- | lib/exe/fetch.php | 10 | ||||
-rw-r--r-- | lib/exe/mediamanager.php | 24 | ||||
-rw-r--r-- | lib/images/icon-file.png | bin | 0 -> 3363 bytes | |||
-rw-r--r-- | lib/images/icon-list.png | bin | 0 -> 3342 bytes | |||
-rw-r--r-- | lib/images/icon-sort.png | bin | 0 -> 316 bytes | |||
-rw-r--r-- | lib/images/icon-thumb.png | bin | 0 -> 969 bytes | |||
-rw-r--r-- | lib/plugins/popularity/lang/uk/submitted.txt | 2 | ||||
-rw-r--r-- | lib/scripts/media.js | 132 | ||||
-rw-r--r-- | lib/tpl/default/design.css | 12 | ||||
-rw-r--r-- | lib/tpl/default/detail.php | 41 | ||||
-rw-r--r-- | lib/tpl/default/main.php | 1 | ||||
-rw-r--r-- | lib/tpl/default/mediamanager.css | 247 | ||||
-rw-r--r-- | lib/tpl/default/style.ini | 1 |
14 files changed, 456 insertions, 40 deletions
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php index 1056a05f8..59953ddc3 100644 --- a/lib/exe/ajax.php +++ b/lib/exe/ajax.php @@ -210,7 +210,31 @@ function ajax_medialist(){ global $NS; $NS = $_POST['ns']; - tpl_mediaContent(true); + if ($_POST['do'] == 'media') { + tpl_fileList(); + } else { + tpl_mediaContent(true); + } +} + +/** + * Return the content of the right column + * (image details) for the Mediamanager + * + * @author Kate Arzamastseva <pshns@ukr.net> + */ +function ajax_mediadetails(){ + global $DEL, $NS, $IMG, $AUTH, $JUMPTO, $REV, $lang, $fullscreen; + $fullscreen = true; + require_once(DOKU_INC.'lib/exe/mediamanager.php'); + + if ($_REQUEST['image']) $image = cleanID($_REQUEST['image']); + if (isset($IMG)) $image = $IMG; + if (isset($JUMPTO)) $image = $JUMPTO; + if (isset($REV) && !$JUMPTO) $rev = $REV; + + html_msgarea(); + tpl_fileDetails($image, $rev); } /** diff --git a/lib/exe/fetch.php b/lib/exe/fetch.php index 3ad4f1937..143d40f22 100644 --- a/lib/exe/fetch.php +++ b/lib/exe/fetch.php @@ -20,6 +20,10 @@ $CACHE = calc_cache($_REQUEST['cache']); $WIDTH = (int) $_REQUEST['w']; $HEIGHT = (int) $_REQUEST['h']; + $REV = (int) @$_REQUEST['rev']; + //sanitize revision + $REV = preg_replace('/[^0-9]/','',$REV); + list($EXT,$MIME,$DL) = mimetype($MEDIA,false); if($EXT === false){ $EXT = 'unknown'; @@ -28,7 +32,7 @@ } // check for permissions, preconditions and cache external files - list($STATUS, $STATUSMESSAGE) = checkFileStatus($MEDIA, $FILE); + list($STATUS, $STATUSMESSAGE) = checkFileStatus($MEDIA, $FILE, $REV); // prepare data for plugin events $data = array('media' => $MEDIA, @@ -147,7 +151,7 @@ function sendFile($file,$mime,$dl,$cache){ * @param $file reference to the file variable * @returns array(STATUS, STATUSMESSAGE) */ -function checkFileStatus(&$media, &$file) { +function checkFileStatus(&$media, &$file, $rev='') { global $MIME, $EXT, $CACHE; //media to local file @@ -172,7 +176,7 @@ function checkFileStatus(&$media, &$file) { if(auth_quickaclcheck(getNS($media).':X') < AUTH_READ){ return array( 403, 'Forbidden' ); } - $file = mediaFN($media); + $file = mediaFN($media, $rev); } //check file existance diff --git a/lib/exe/mediamanager.php b/lib/exe/mediamanager.php index 02fde5a8d..939b5a053 100644 --- a/lib/exe/mediamanager.php +++ b/lib/exe/mediamanager.php @@ -35,7 +35,7 @@ $AUTH = auth_quickaclcheck("$NS:*"); // do not display the manager if user does not have read access - if($AUTH < AUTH_READ) { + if($AUTH < AUTH_READ && !$fullscreen) { header('HTTP/1.0 403 Forbidden'); die($lang['accessdenied']); } @@ -76,10 +76,20 @@ } // handle meta saving - if($IMG && $_REQUEST['do']['save']){ + if($IMG && @array_key_exists('save', $_REQUEST['do'])){ $JUMPTO = media_metasave($IMG,$AUTH,$_REQUEST['meta']); } + if($IMG && ($_REQUEST['mediado'] == 'save' || @array_key_exists('save', $_REQUEST['mediado']))) { + $JUMPTO = media_metasave($IMG,$AUTH,$_REQUEST['meta']); + } + + if ($_REQUEST['rev']) $REV = (int) $_REQUEST['rev']; + + if($_REQUEST['mediado'] == 'restore'){ + $JUMPTO = media_restore($_REQUEST['image'], $REV, $AUTH); + } + // handle deletion if($DEL) { $res = 0; @@ -88,7 +98,7 @@ } if ($res & DOKU_MEDIA_DELETED) { $msg = sprintf($lang['deletesucc'], noNS($DEL)); - if ($res & DOKU_MEDIA_EMPTY_NS) { + if ($res & DOKU_MEDIA_EMPTY_NS && !$fullscreen) { // current namespace was removed. redirecting to root ns passing msg along send_redirect(DOKU_URL.'lib/exe/mediamanager.php?msg1='. rawurlencode($msg).'&edid='.$_REQUEST['edid']); @@ -102,9 +112,11 @@ msg(sprintf($lang['deletefail'],noNS($DEL)),-1); } } - // finished - start output - header('Content-Type: text/html; charset=utf-8'); - include(template('mediamanager.php')); + + if (!$fullscreen) { + header('Content-Type: text/html; charset=utf-8'); + include(template('mediamanager.php')); + } /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ diff --git a/lib/images/icon-file.png b/lib/images/icon-file.png Binary files differnew file mode 100644 index 000000000..d350c8c31 --- /dev/null +++ b/lib/images/icon-file.png diff --git a/lib/images/icon-list.png b/lib/images/icon-list.png Binary files differnew file mode 100644 index 000000000..ecfeed92d --- /dev/null +++ b/lib/images/icon-list.png diff --git a/lib/images/icon-sort.png b/lib/images/icon-sort.png Binary files differnew file mode 100644 index 000000000..c6403dd3c --- /dev/null +++ b/lib/images/icon-sort.png diff --git a/lib/images/icon-thumb.png b/lib/images/icon-thumb.png Binary files differnew file mode 100644 index 000000000..ccc7a101d --- /dev/null +++ b/lib/images/icon-thumb.png diff --git a/lib/plugins/popularity/lang/uk/submitted.txt b/lib/plugins/popularity/lang/uk/submitted.txt new file mode 100644 index 000000000..90213858d --- /dev/null +++ b/lib/plugins/popularity/lang/uk/submitted.txt @@ -0,0 +1,2 @@ +====== Відгук популярності ====== +Дані були успішно відправлені.
\ No newline at end of file diff --git a/lib/scripts/media.js b/lib/scripts/media.js index f7e78c747..3f263f42a 100644 --- a/lib/scripts/media.js +++ b/lib/scripts/media.js @@ -60,6 +60,20 @@ var dw_mediamanager = { DOKU_BASE + 'lib/images/plus.gif'); }}); $tree.delegate('a', 'click', dw_mediamanager.list); + + jQuery('#mediamanager__layout_list').delegate('#mediamanager__tabs_files a', 'click', dw_mediamanager.list) + .delegate('#mediamanager__tabs_list a', 'click', dw_mediamanager.list_view) + .delegate('#mediamanager__file_list a', 'click', dw_mediamanager.details) + .delegate('#dw__mediasearch', 'submit', dw_mediamanager.list); + + jQuery('#mediamanager__layout_detail').delegate('#mediamanager__tabs_details a', 'click', dw_mediamanager.details) + .delegate('#mediamanager__btn_update', 'submit', dw_mediamanager.list) + .delegate('#page__revisions', 'submit', dw_mediamanager.details) + .delegate('#page__revisions a', 'click', dw_mediamanager.details) + .delegate('#mediamanager__save_meta', 'submit', dw_mediamanager.details) + .delegate('#mediamanager__btn_delete', 'submit', dw_mediamanager.details) + .delegate('#mediamanager__btn_restore', 'submit', dw_mediamanager.details); + }, /** @@ -219,22 +233,128 @@ var dw_mediamanager = { * @author Pierre Spring <pierre.spring@caillou.ch> */ list: function (event) { - var $link, $content; + var $link, $content, params; + $link = jQuery(this); event.preventDefault(); jQuery('div.success, div.info, div.error, div.notify').remove(); - $link = jQuery(this); - $content = jQuery('#media__content'); - $content.html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />'); + if (document.getElementById('media__content')) { + //popup + $content = jQuery('#media__content'); + $content.html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />'); + + } else { + //fullscreen media manager + $content = jQuery('#mediamanager__layout_list'); + + if ($link.hasClass('idx_dir')) { + //changing namespace + jQuery('#mediamanager__layout_detail').empty(); + jQuery('#media__tree .selected').each(function(){ + $(this).removeClass('selected'); + }); + $link.addClass('selected'); + } + + jQuery('.scroll-container', $content).html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />'); + } + + params = ''; + + if ($link[0].search) { + params = $link[0].search.substr(1)+'&call=medialist'; + } else if ($link[0].action) { + params = dw_mediamanager.form_params($link)+'&call=medialist'; + } // fetch the subtree + dw_mediamanager.update_content($content, params); + + }; + + /** + * Returns form parameters + * + * @author Kate Arzamastseva <pshns@ukr.net> + */ + form_params: function ($form) { + var elements = $form.serialize(); + var action = ''; + var i = $form[0].action.indexOf('?'); + if (i >= 0) action = $form[0].action.substr(i+1); + return elements+'&'+action; + }, + + /** + * Changes view of media files list + * + * @author Kate Arzamastseva <pshns@ukr.net> + */ + list_view: function (event) { + var $link, $content; + $link = jQuery(this); + + event.preventDefault(); + + $content = jQuery('#mediamanager__file_list'); + if ($link.hasClass('mediamanager-link-thumbnails')) { + $content.removeClass('mediamanager-list'); + $content.addClass('mediamanager-thumbs'); + } else if ($link.hasClass('mediamanager-link-list')) { + $content.removeClass('mediamanager-thumbs'); + $content.addClass('mediamanager-list'); + } + }, + + /** + * Lists the content of the right column (image details) using AJAX + * + * @author Kate Arzamastseva <pshns@ukr.net> + */ + details: function (event) { + var $link, $content, params, update_list; + $link = jQuery(this); + + event.preventDefault(); + + jQuery('div.success, div.info, div.error, div.notify').remove(); + + if ($link[0].id == 'mediamanager__btn_delete' && !confirm(LANG['del_confirm'])) return false; + if ($link[0].id == 'mediamanager__btn_restore' && !confirm(LANG['restore_confirm'])) return false; + + $content = $('#mediamanager__layout_detail'); + jQuery('.scroll-container', $content).html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />'); + + params = ''; + + if ($link[0].search) { + params = $link[0].search.substr(1)+'&call=mediadetails'; + } else { + params = dw_mediamanager.form_params($link)+'&call=mediadetails'; + } + + dw_mediamanager.update_content($content, params); + + update_list = ($link[0].id == 'mediamanager__btn_delete' || $link[0].id == 'mediamanager__btn_restore'); + if (update_list) { + var $link1, $content1, params1; + $link1 = jQuery('a.files'); + params1 = $link1[0].search.substr(1)+'&call=medialist'; + $content1 = jQuery('#mediamanager__layout_list'); + jQuery('.scroll-container', $content1).html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />'); + + dw_mediamanager.update_content($content1, params1); + } + }, + + update_content: function ($content, params) { jQuery.post( DOKU_BASE + 'lib/exe/ajax.php', - $link[0].search.substr(1)+'&call=medialist', + params, function (data) { - $content.html(data); + content.html(data); dw_mediamanager.prepare_content($content); dw_mediamanager.updatehide(); }, diff --git a/lib/tpl/default/design.css b/lib/tpl/default/design.css index 1fdf2bfac..1dee4dc69 100644 --- a/lib/tpl/default/design.css +++ b/lib/tpl/default/design.css @@ -246,6 +246,18 @@ div.dokuwiki div.pagenav-next { width: 49% } +/* ----------- type of recent changes ------------- */ + +div.dokuwiki div.changestypenav { + border-bottom: 1px solid __border__; + padding-bottom: 10px; + margin-bottom: 10px; +} + +div.dokuwiki div.changestypenav label { + padding-right: 10px; +} + /* --------------- Links ------------------ */ div.dokuwiki a:link, diff --git a/lib/tpl/default/detail.php b/lib/tpl/default/detail.php index 4f42b116e..f7bb37a25 100644 --- a/lib/tpl/default/detail.php +++ b/lib/tpl/default/detail.php @@ -52,30 +52,23 @@ if (!defined('DOKU_INC')) die(); <dl class="img_tags"> <?php - $t = tpl_img_getTag('Date.EarliestTime'); - if($t) print '<dt>'.$lang['img_date'].':</dt><dd>'.dformat($t).'</dd>'; - - $t = tpl_img_getTag('File.Name'); - if($t) print '<dt>'.$lang['img_fname'].':</dt><dd>'.hsc($t).'</dd>'; - - $t = tpl_img_getTag(array('Iptc.Byline','Exif.TIFFArtist','Exif.Artist','Iptc.Credit')); - if($t) print '<dt>'.$lang['img_artist'].':</dt><dd>'.hsc($t).'</dd>'; - - $t = tpl_img_getTag(array('Iptc.CopyrightNotice','Exif.TIFFCopyright','Exif.Copyright')); - if($t) print '<dt>'.$lang['img_copyr'].':</dt><dd>'.hsc($t).'</dd>'; - - $t = tpl_img_getTag('File.Format'); - if($t) print '<dt>'.$lang['img_format'].':</dt><dd>'.hsc($t).'</dd>'; - - $t = tpl_img_getTag('File.NiceSize'); - if($t) print '<dt>'.$lang['img_fsize'].':</dt><dd>'.hsc($t).'</dd>'; - - $t = tpl_img_getTag('Simple.Camera'); - if($t) print '<dt>'.$lang['img_camera'].':</dt><dd>'.hsc($t).'</dd>'; - - $t = tpl_img_getTag(array('IPTC.Keywords','IPTC.Category','xmp.dc:subject')); - if($t) print '<dt>'.$lang['img_keywords'].':</dt><dd>'.hsc($t).'</dd>'; - + $config_files = getConfigFiles('mediameta'); + foreach ($config_files as $config_file) { + if(@file_exists($config_file)) include($config_file); + } + + foreach($fields as $key => $tag){ + $t = array(); + if (!empty($tag[0])) $t = array($tag[0]); + if(is_array($tag[3])) $t = array_merge($t,$tag[3]); + $value = tpl_img_getTag($t); + if ($value) { + echo '<dt>'.$lang[$tag[1]].':</dt><dd>'; + if ($tag[2] == 'date') echo dformat($value); + else echo hsc($value); + echo '</dd>'; + } + } ?> </dl> <?php //Comment in for Debug// dbg(tpl_img_getTag('Simple.Raw'));?> diff --git a/lib/tpl/default/main.php b/lib/tpl/default/main.php index 94c2322aa..698793ecd 100644 --- a/lib/tpl/default/main.php +++ b/lib/tpl/default/main.php @@ -117,6 +117,7 @@ if (!defined('DOKU_INC')) die(); </div> <div class="bar-right" id="bar__bottomright"> <?php tpl_button('subscribe')?> + <?php tpl_button('media')?> <?php tpl_button('admin')?> <?php tpl_button('profile')?> <?php tpl_button('login')?> diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css new file mode 100644 index 000000000..eea62ea46 --- /dev/null +++ b/lib/tpl/default/mediamanager.css @@ -0,0 +1,247 @@ +.mediamanager { + width: 100%; + overflow-y: auto; +} + +.mediamanager .mediamanager-slider { + width: auto; +} + +.mediamanager .mediamanager-slider .layout { + float: left; + margin-left: 5px; + margin-right: 5px; +} + +.mediamanager .scroll-container { + /*height: 0px;*/ + overflow-y: auto; + overflow-x: hidden; + padding: 0; + margin: 0; + text-align: left; +} + +.background-container { + background-color: __background_alt__; + margin-bottom: 10px; + padding: 10px; + text-align: left; +} + +.mediamanager-link-thumbnails { + background: url('../../images/icon-thumb.png') 0 -4px no-repeat; + padding-left: 30px; + display: block; + float: left; + width: 0; + overflow: hidden; +} + +.mediamanager-link-list { + background: url('../../images/icon-list.png') 0 -4px no-repeat; + padding-left: 30px; + display: block; + float: left; + width: 0; + overflow: hidden; +} + +.mediamanager-block-sort { + background: url('../../images/icon-sort.png') 0 -4px no-repeat; + padding-left: 30px; + display: block; + float: right; +} + +.mediamanager-link-thumbnails:hover, +.mediamanager-link-list:hover { + width: auto; + margin-right: 10px; +} + +.mediamanager-tabs a { + font-weight: bold; + display: block; + float: left; + padding: 10px; + padding-bottom: 5px; + padding-top: 5px; + + margin-right: 2px; + + -moz-border-radius-topright: 10px; + -webkit-border-top-right-radius: 10px; + -moz-border-radius-topleft: 10px; + -webkit-border-top-left-radius: 10px; + border-top-right-radius: 10px; + border-top-left-radius: 10px; +} + +.mediamanager-tabs .selected { + background-color: __background_alt__; +} + +.mediamanager-tabs a:hover { + background-color: __background_alt__; + opacity: 0.5; +} + +.mediamanager-table td { + padding: 5px; +} + +.mediamanager-table tr:nth-child(2n+1){ + background-color: __background_neu__; +} + +.mediamanager-table { + background: expression(this.rowIndex % 2 == 0 ? "#ffffff" : "#f5f5f5"); +} + +.mediamanager-table tr:hover { + background-color: __background_alt__; +} + +form.meta textarea.edit { + height: 8em; + width: 95%; + min-width: 95%; + max-width: 95%; +} + +.mediamanager-file-list { + padding: 0; + margin: 0 !important; +} + +.mediamanager-thumbs li { + width: 100px; + min-height: 130px; + display: inline-block; + margin: 0; + margin-right: 10px; + margin-bottom: 10px; + background-color: __background_alt__; + padding: 10px; + vertical-align: top; + display: -moz-inline-stack; + text-align: center; + zoom: 1; + position: relative; +} +* html .mediamanager-thumbs li { + display: inline; +} +*+html .mediamanager-thumbs li { + display: inline; + _height: 130px; +} + +.mediamanager-thumbs li .image { + width: 100%; + height: 90px; + display: block; + overflow: hidden; +} + +.mediamanager-thumbs li .name, +.mediamanager-thumbs li .size, +.mediamanager-thumbs li .filesize, +.mediamanager-thumbs li .date { + display: block; + overflow: hidden; +} + +.mediamanager-thumbs li input[type=checkbox] { + display: none; + float: left; + margin: 3px; +} + +.mediamanager-thumbs li:hover input[type=checkbox], +.mediamanager-thumbs li input[type=checkbox]:checked { + display: block; +} + +.mediamanager-list li { + list-style: none; + display: block; + position: relative; + max-height: 50px; + margin: 0; + margin-bottom: 3px; +} + +.mediamanager-list li:nth-child(2n+1) { + background-color: __background_neu__; +} + +.mediamanager-list li .image { + width: 10%; + display: block; + overflow: hidden; + float: left; + height: 40px; +} + +.mediamanager-list li .image img { + width: 100%; +} + +.mediamanager-list li .name, +.mediamanager-list li .size, +.mediamanager-list li .filesize, +.mediamanager-list li .date { + overflow: hidden; + float: left; + width: 19%; + margin-left: 1%; +} + +.mediamanager-list li .date, +.mediamanager-thumbs li .date { + font-style: italic; +} + +.mediamanager-list li input[type=checkbox] { + display: none; + float: left; + margin: 3px; +} + +.mediamanager-list li:hover input[type=checkbox], +.mediamanager-list li input[type=checkbox]:checked { + display: block; +} + +.mediamanager-file-list li:hover { + background-color: #dadada; +} + +.mediamanager-table-50 { + padding: 0; + margin: 0 !important; +} + +.mediamanager-table-50 li { + width: 48%; + display: inline-block; + margin: 0; + margin-bottom: 10px; + padding: 2px; + vertical-align: top; + zoom: 1; + color: black !important; +} +* html .mediamanager-table-50 li { + display: inline; +} + +.mediamanager-preview { + margin-bottom: 5px; +} + +.idx .selected { + color: red !important; +}
\ No newline at end of file diff --git a/lib/tpl/default/style.ini b/lib/tpl/default/style.ini index c5b2c31a5..bc28d1bbc 100644 --- a/lib/tpl/default/style.ini +++ b/lib/tpl/default/style.ini @@ -15,6 +15,7 @@ _mediaoptions.css = screen _admin.css = screen _linkwiz.css = screen _subscription.css = screen +mediamanager.css = screen rtl.css = rtl print.css = print |