diff options
-rw-r--r-- | inc/media.php | 38 | ||||
-rw-r--r-- | lib/scripts/media.js | 26 | ||||
-rw-r--r-- | lib/tpl/default/mediamanager.css | 13 |
3 files changed, 55 insertions, 22 deletions
diff --git a/inc/media.php b/inc/media.php index c991104da..bc80f64d6 100644 --- a/inc/media.php +++ b/inc/media.php @@ -1021,7 +1021,7 @@ function media_details($image, $auth, $rev=false, $meta=false) { * * @author Kate Arzamastseva <pshns@ukr.net> */ -function media_diff($image, $ns, $auth) { +function media_diff($image, $ns, $auth, $fromajax = false) { global $lang; global $conf; @@ -1072,6 +1072,7 @@ function media_diff($image, $ns, $auth) { $data[2] = $r_rev; $data[3] = $ns; $data[4] = $auth; + $data[5] = $fromajax; // trigger event return trigger_event('MEDIA_DIFF', $data, '_media_file_diff', true); @@ -1079,8 +1080,8 @@ function media_diff($image, $ns, $auth) { } function _media_file_diff($data) { - if(is_array($data) && count($data)===5) { - return media_file_diff($data[0], $data[1], $data[2], $data[3], $data[4]); + if(is_array($data) && count($data)===6) { + return media_file_diff($data[0], $data[1], $data[2], $data[3], $data[4], $data[5]); } else { return false; } @@ -1091,24 +1092,34 @@ function _media_file_diff($data) { * * @author Kate Arzamastseva <pshns@ukr.net> */ -function media_file_diff($image, $l_rev, $r_rev, $ns, $auth){ +function media_file_diff($image, $l_rev, $r_rev, $ns, $auth, $fromajax){ global $lang, $config_cascade; $is_img = preg_match("/\.(jpe?g|gif|png)$/", $image); if ($is_img) { $difftype = $_REQUEST['difftype']; - $form = new Doku_Form(array('action'=>media_managerURL(array(), '&'), - 'id' => 'mediamanager__form_diffview')); - $form->addElement('<input type=hidden name=rev2[] value='.$l_rev.' ></input>'); - $form->addElement('<input type=hidden name=rev2[] value='.$r_rev.' ></input>'); - $form->addHidden('mediado', 'diff'); - $form->printForm(); + if (!$fromajax) { + $form = new Doku_Form(array('action'=>media_managerURL(array(), '&'), + 'id' => 'mediamanager__form_diffview')); + $form->addElement('<input type=hidden name=rev2[] value='.$l_rev.' ></input>'); + $form->addElement('<input type=hidden name=rev2[] value='.$r_rev.' ></input>'); + $form->addHidden('mediado', 'diff'); + $form->printForm(); + + echo '<div id="mediamanager__diff" >'; + } + + $l_meta = new JpegMeta(mediaFN($image, $l_rev)); + $r_meta = new JpegMeta(mediaFN($image, $r_rev)); - echo '<div id="mediamanager__diff" >'; + if ($difftype == 'opacity' || $difftype == 'portions') { + media_image_diff($image, $l_rev, $r_rev, $l_meta, $difftype); + if (!$fromajax) echo '</div>'; + return ''; + } - if ($difftype == 'opacity') return media_image_diff($image, $l_rev, $r_rev, $l_meta, 'opacity'); - if ($difftype == 'portions') return media_image_diff($image, $l_rev, $r_rev, $l_meta, 'portions'); + echo '<div class="mediamanager-preview">'; } @@ -1165,6 +1176,7 @@ function media_file_diff($image, $l_rev, $r_rev, $ns, $auth){ echo '</ul>'; + if ($is_img && !$fromajax) echo '</div>'; if ($is_img) echo '</div>'; } diff --git a/lib/scripts/media.js b/lib/scripts/media.js index 6c5c2611e..26eb43fc3 100644 --- a/lib/scripts/media.js +++ b/lib/scripts/media.js @@ -439,11 +439,6 @@ var dw_mediamanager = { } dw_mediamanager.layout_width = jQuery('#mediamanager__layout').width(); - - // rebuild sliders if exists - dw_mediamanager.opacity_slider(); - dw_mediamanager.portions_slider(); - $r = jQuery("#mediamanager__layout .layout-resizable, #mediamanager__layout .layout"); var w = 0, wSum = 0, mCount = 0, mArray = []; @@ -476,6 +471,9 @@ var dw_mediamanager = { w += "%"; jQuery(this).width(w); }); + + dw_mediamanager.opacity_slider(); + dw_mediamanager.portions_slider(); }, /** @@ -512,6 +510,9 @@ var dw_mediamanager = { w += "%"; jQuery(this).width(w); }); + + dw_mediamanager.opacity_slider(); + dw_mediamanager.portions_slider(); } }); @@ -579,6 +580,11 @@ var dw_mediamanager = { opacity_slider: function () { var $slider = jQuery( "#mediamanager__opacity_slider" ); if (!$slider.length) return; + + var $image = jQuery('#mediamanager__diff_opacity_image1 img'); + if (!$image.length) return; + $slider.width($image.width()-20); + $slider.slider(); $slider.slider("option", "min", 0); $slider.slider("option", "max", 0.999); @@ -602,18 +608,26 @@ var dw_mediamanager = { var $div = jQuery("#mediamanager__diff_layout"); if (!$div.length) return; + $div.width('100%'); + $image2.parent().width('97%'); + $image1.width('100%'); + $image2.width('100%'); + if ($image1.width() < $div.width()) { $div.width($image1.width()); } $image2.parent().width('50%'); $image2.width($image1.width()); + $image1.width($image1.width()); var $slider = jQuery("#mediamanager__portions_slider"); if (!$slider.length) return; + $slider.width($image1.width()-20); + $slider.slider(); $slider.slider("option", "min", 0); - $slider.slider("option", "max", 100); + $slider.slider("option", "max", 97); $slider.slider("option", "step", 1); $slider.slider("option", "value", 50); $slider.bind("slide", function(event, ui) { diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css index 49f2901e2..8a42a9e35 100644 --- a/lib/tpl/default/mediamanager.css +++ b/lib/tpl/default/mediamanager.css @@ -324,6 +324,10 @@ form.meta textarea.edit { /* File diff */ +#mediamanager__diff { + margin-top: 10px; +} + #mediamanager__diff_table { padding: 0; margin: 0; @@ -365,21 +369,24 @@ form.meta textarea.edit { left: 0; } -#mediamanager__diff_layout div img, #mediamanager__diff_opacity_image1, #mediamanager__diff_portions_image1 { + width: 97%; +} + +#mediamanager__diff_layout div img { width: 100%; } #mediamanager__diff_opacity_image2 { - width: 100%; + width: 97%; -moz-opacity: 0.5; -khtml-opacity: 0.5; opacity: 0.5; } #mediamanager__diff_portions_image2 { - width: 100%; + width: 97%; border-right: 1px solid red; overflow: hidden; } |