From 325c7e9562ac271857d7490f978e3ce3c23952d1 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Wed, 18 May 2011 14:28:13 +0300
Subject: Ukrainian language update
---
lib/plugins/popularity/lang/uk/submitted.txt | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 lib/plugins/popularity/lang/uk/submitted.txt
(limited to 'lib')
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
--
cgit v1.2.3
From fc4aefb978d8bb0aba588ef2ae2734619ff75ee5 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Sat, 4 Jun 2011 19:16:24 +0300
Subject: fetch.php with rev parameter
---
lib/exe/fetch.php | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
(limited to 'lib')
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
--
cgit v1.2.3
From 8d40b4b6e74029367996c169aa3e67507a4cdfe1 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Sun, 5 Jun 2011 21:05:23 +0300
Subject: type of recent changes selection
---
lib/tpl/default/design.css | 12 ++++++++++++
1 file changed, 12 insertions(+)
(limited to 'lib')
diff --git a/lib/tpl/default/design.css b/lib/tpl/default/design.css
index 1fdf2bfac..029a5525c 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 #8CACBB;
+ padding-bottom: 10px;
+ margin-bottom: 10px;
+}
+
+div.dokuwiki div.changestypenav label {
+ padding-right: 10px;
+}
+
/* --------------- Links ------------------ */
div.dokuwiki a:link,
--
cgit v1.2.3
From d9162c6cd87643d7e7af8e37cd93aa48b8aecb96 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Thu, 9 Jun 2011 14:04:50 +0300
Subject: fullscreen media manager
---
lib/exe/mediamanager.php | 14 ++++++++++----
lib/tpl/default/style.ini | 1 +
2 files changed, 11 insertions(+), 4 deletions(-)
(limited to 'lib')
diff --git a/lib/exe/mediamanager.php b/lib/exe/mediamanager.php
index 02fde5a8d..d4ebc2d38 100644
--- a/lib/exe/mediamanager.php
+++ b/lib/exe/mediamanager.php
@@ -76,7 +76,11 @@
}
// 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 && @array_key_exists('save', $_REQUEST['mediado'])){
$JUMPTO = media_metasave($IMG,$AUTH,$_REQUEST['meta']);
}
@@ -102,9 +106,11 @@
msg(sprintf($lang['deletefail'],noNS($DEL)),-1);
}
}
-
// finished - start output
- header('Content-Type: text/html; charset=utf-8');
- include(template('mediamanager.php'));
+
+ if (!($_REQUEST['do'] == 'media')) {
+ 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/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
--
cgit v1.2.3
From 8e69fd30702f1101a9c70dbe6eac6f45f9af3970 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Mon, 13 Jun 2011 20:23:18 +0300
Subject: media manager
---
lib/tpl/default/mediamanager.css | 155 +++++++++++++++++++++++++++++++++++++++
1 file changed, 155 insertions(+)
create mode 100644 lib/tpl/default/mediamanager.css
(limited to 'lib')
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
new file mode 100644
index 000000000..2001bc5f9
--- /dev/null
+++ b/lib/tpl/default/mediamanager.css
@@ -0,0 +1,155 @@
+.float-image {
+ float: left;
+ margin-right: 10px;
+ margin-bottom: 10px;
+ width: 100px;
+ height: 180px;
+ background-color: #DEE7EC;
+ padding: 10px;
+ text-align: center;
+}
+
+.float-image:hover {
+ background-color: #dadada;
+}
+
+/* --- Tree formatting --- */
+
+#media-menu img {
+ float: left;
+ padding: 0.5em 0.3em 0 0;
+}
+
+#media-menu ul {
+ list-style-type: none;
+ list-style-image: none;
+ margin-left: 1.5em;
+}
+
+#media-menu li {
+ clear: left;
+ list-style-type: none;
+ list-style-image: none;
+}
+
+/* -------------- */
+
+.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;
+}
+
+.background-container {
+ background-color: #DEE7EC;
+ margin-bottom: 10px;
+ padding: 10px;
+ text-align: left;
+}
+
+.mediamanager-link-thumbnails {
+ background: url('icon-thumb.png') 0 -4px no-repeat;
+ padding-left: 30px;
+ display: block;
+ float: left;
+ /*width: 0;*/
+ /*overflow: hidden;*/
+}
+
+.mediamanager-link-list {
+ background: url('icon-list.png') 0 -4px no-repeat;
+ padding-left: 30px;
+ display: block;
+ float: left;
+ /*width: 0;*/
+ /*overflow: hidden;*/
+}
+
+.mediamanager-block-sort {
+ background: url('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-clear {
+ clear: both;
+ line-height: 0;
+ font-size: 0;
+}
+
+.mediamanager-link-upload {
+ background: url('icon-upload.png') 0 -4px no-repeat;
+ padding-left: 30px;
+}
+
+.mediamanager-link-search {
+ background: url('icon-search.png') 0 -4px no-repeat;
+ padding-left: 30px;
+}
+
+.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: #DEE7EC;
+}
+
+.mediamanager-tabs a:hover {
+ background-color: #DEE7EC;
+ opacity: 0.5;
+}
+
+.mediamanager-table td {
+ padding: 5px;
+}
+
+.mediamanager-table tr:nth-child(2n+1){
+ background-color: #f5f5f5;
+}
+
+.mediamanager-table {
+ background: expression(this.rowIndex % 2 == 0 ? "#ffffff" : "#f5f5f5");
+}
+
+.mediamanager-table tr:hover {
+ background-color: #DEE7EC;
+}
\ No newline at end of file
--
cgit v1.2.3
From 1eeeced2339756132a78e5f1893cb3677c0f6529 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Wed, 15 Jun 2011 18:09:26 +0300
Subject: media manager fixes
---
lib/tpl/default/mediamanager.css | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
(limited to 'lib')
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index 2001bc5f9..bf4513f0c 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -152,4 +152,11 @@
.mediamanager-table tr:hover {
background-color: #DEE7EC;
-}
\ No newline at end of file
+}
+
+form.meta textarea.edit {
+ height: 8em;
+ width: 95%;
+ min-width: 95%;
+ max-width: 95%;
+}
--
cgit v1.2.3
From b9eb2e61ea959c1f8b3a5c58ad50a0f9c8c855ad Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Mon, 20 Jun 2011 10:51:48 +0300
Subject: media manager button
---
lib/tpl/default/main.php | 1 +
1 file changed, 1 insertion(+)
(limited to 'lib')
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();
+
--
cgit v1.2.3
From 030dd1d963bb7a0ab824b823d777a58fc105b1e5 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Mon, 20 Jun 2011 19:16:09 +0300
Subject: thumbnails and list view
---
lib/images/icon-list.png | Bin 0 -> 3342 bytes
lib/images/icon-sort.png | Bin 0 -> 316 bytes
lib/images/icon-thumb.png | Bin 0 -> 969 bytes
lib/tpl/default/design.css | 2 +-
lib/tpl/default/mediamanager.css | 110 ++++++++++++++++++++++++---------------
5 files changed, 68 insertions(+), 44 deletions(-)
create mode 100644 lib/images/icon-list.png
create mode 100644 lib/images/icon-sort.png
create mode 100644 lib/images/icon-thumb.png
(limited to 'lib')
diff --git a/lib/images/icon-list.png b/lib/images/icon-list.png
new file mode 100644
index 000000000..ecfeed92d
Binary files /dev/null and b/lib/images/icon-list.png differ
diff --git a/lib/images/icon-sort.png b/lib/images/icon-sort.png
new file mode 100644
index 000000000..c6403dd3c
Binary files /dev/null and b/lib/images/icon-sort.png differ
diff --git a/lib/images/icon-thumb.png b/lib/images/icon-thumb.png
new file mode 100644
index 000000000..ccc7a101d
Binary files /dev/null and b/lib/images/icon-thumb.png differ
diff --git a/lib/tpl/default/design.css b/lib/tpl/default/design.css
index 029a5525c..1dee4dc69 100644
--- a/lib/tpl/default/design.css
+++ b/lib/tpl/default/design.css
@@ -249,7 +249,7 @@ div.dokuwiki div.pagenav-next {
/* ----------- type of recent changes ------------- */
div.dokuwiki div.changestypenav {
- border-bottom: 1px solid #8CACBB;
+ border-bottom: 1px solid __border__;
padding-bottom: 10px;
margin-bottom: 10px;
}
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index bf4513f0c..25816e273 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -1,18 +1,3 @@
-.float-image {
- float: left;
- margin-right: 10px;
- margin-bottom: 10px;
- width: 100px;
- height: 180px;
- background-color: #DEE7EC;
- padding: 10px;
- text-align: center;
-}
-
-.float-image:hover {
- background-color: #dadada;
-}
-
/* --- Tree formatting --- */
#media-menu img {
@@ -55,35 +40,36 @@
overflow-x: hidden;
padding: 0;
margin: 0;
+ text-align: left;
}
.background-container {
- background-color: #DEE7EC;
+ background-color: __background_alt__;
margin-bottom: 10px;
padding: 10px;
text-align: left;
}
.mediamanager-link-thumbnails {
- background: url('icon-thumb.png') 0 -4px no-repeat;
+ background: url('/lib/images/icon-thumb.png') 0 -4px no-repeat;
padding-left: 30px;
display: block;
float: left;
- /*width: 0;*/
- /*overflow: hidden;*/
+ width: 0;
+ overflow: hidden;
}
.mediamanager-link-list {
- background: url('icon-list.png') 0 -4px no-repeat;
+ background: url('/lib/images/icon-list.png') 0 -4px no-repeat;
padding-left: 30px;
display: block;
float: left;
- /*width: 0;*/
- /*overflow: hidden;*/
+ width: 0;
+ overflow: hidden;
}
.mediamanager-block-sort {
- background: url('icon-sort.png') 0 -4px no-repeat;
+ background: url('/lib/images/icon-sort.png') 0 -4px no-repeat;
padding-left: 30px;
display: block;
float: right;
@@ -95,22 +81,6 @@
margin-right: 10px;
}
-.mediamanager-clear {
- clear: both;
- line-height: 0;
- font-size: 0;
-}
-
-.mediamanager-link-upload {
- background: url('icon-upload.png') 0 -4px no-repeat;
- padding-left: 30px;
-}
-
-.mediamanager-link-search {
- background: url('icon-search.png') 0 -4px no-repeat;
- padding-left: 30px;
-}
-
.mediamanager-tabs a {
font-weight: bold;
display: block;
@@ -130,11 +100,11 @@
}
.mediamanager-tabs .selected {
- background-color: #DEE7EC;
+ background-color: __background_alt__;
}
.mediamanager-tabs a:hover {
- background-color: #DEE7EC;
+ background-color: __background_alt__;
opacity: 0.5;
}
@@ -143,7 +113,7 @@
}
.mediamanager-table tr:nth-child(2n+1){
- background-color: #f5f5f5;
+ background-color: __background_neu__;
}
.mediamanager-table {
@@ -151,7 +121,7 @@
}
.mediamanager-table tr:hover {
- background-color: #DEE7EC;
+ background-color: __background_alt__;
}
form.meta textarea.edit {
@@ -160,3 +130,57 @@ form.meta textarea.edit {
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;
+}
+
+.mediamanager-thumbs li .info {
+ display: block;
+}
+
+.mediamanager-list li {
+ display: block;
+ margin-bottom: 3px;
+}
+
+.mediamanager-list li:nth-child(2n+1) {
+ background-color: __background_neu__;
+}
+
+.mediamanager-list li .image {
+ width: 50px;
+ height: 50px;
+ overflow: hidden;
+ float: left;
+}
+
+.mediamanager-list li .image img {
+ width: 100%;
+}
+
+.mediamanager-list li .info {
+ overflow: hidden;
+ float: left;
+ margin-left: 5px;
+ width: 20%;
+}
+
+.mediamanager-file-list li:hover {
+ background-color: #dadada;
+}
--
cgit v1.2.3
From 6b467722ce67ad489326798250cc5312efa70dcd Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Wed, 22 Jun 2011 23:16:31 +0300
Subject: mediamanager fixes
---
lib/images/icon-file.png | Bin 0 -> 3363 bytes
lib/tpl/default/mediamanager.css | 79 +++++++++++++++++++++++++++++++++++----
2 files changed, 72 insertions(+), 7 deletions(-)
create mode 100644 lib/images/icon-file.png
(limited to 'lib')
diff --git a/lib/images/icon-file.png b/lib/images/icon-file.png
new file mode 100644
index 000000000..d350c8c31
Binary files /dev/null and b/lib/images/icon-file.png differ
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index 25816e273..e7c78dbcf 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -24,6 +24,11 @@
overflow-y: auto;
}
+.mediamanager .clearer {
+ font-size: 0;
+ line-height: 0;
+}
+
.mediamanager .mediamanager-slider {
width: auto;
}
@@ -51,7 +56,7 @@
}
.mediamanager-link-thumbnails {
- background: url('/lib/images/icon-thumb.png') 0 -4px no-repeat;
+ background: url('../../images/icon-thumb.png') 0 -4px no-repeat;
padding-left: 30px;
display: block;
float: left;
@@ -60,7 +65,7 @@
}
.mediamanager-link-list {
- background: url('/lib/images/icon-list.png') 0 -4px no-repeat;
+ background: url('../../images/icon-list.png') 0 -4px no-repeat;
padding-left: 30px;
display: block;
float: left;
@@ -69,7 +74,7 @@
}
.mediamanager-block-sort {
- background: url('/lib/images/icon-sort.png') 0 -4px no-repeat;
+ background: url('../../images/icon-sort.png') 0 -4px no-repeat;
padding-left: 30px;
display: block;
float: right;
@@ -148,14 +153,44 @@ form.meta textarea.edit {
vertical-align: top;
display: -moz-inline-stack;
text-align: center;
+ zoom: 1;
+ *display: inline;
+ _height: 130px;
+ position: relative;
+}
+
+.mediamanager-thumbs li .image {
+ width: 100%;
+ height: 90px;
+ display: block;
+ overflow: hidden;
}
.mediamanager-thumbs li .info {
display: block;
+ overflow: hidden;
+}
+
+.mediamanager-thumbs li input[type=checkbox] {
+ /*position: absolute;
+ left: 100%;
+ top: 100%;
+ margin-left: -20px;
+ margin-top: -20px;*/
+ display: none;
+}
+
+.mediamanager-thumbs li:hover input[type=checkbox],
+.mediamanager-thumbs li input[type=checkbox]:checked {
+ display: inline;
}
.mediamanager-list li {
+ list-style: none;
display: block;
+ position: relative;
+ max-height: 50px;
+ margin: 0;
margin-bottom: 3px;
}
@@ -164,10 +199,11 @@ form.meta textarea.edit {
}
.mediamanager-list li .image {
- width: 50px;
- height: 50px;
+ width: 10%;
+ display: block;
overflow: hidden;
float: left;
+ height: 40px;
}
.mediamanager-list li .image img {
@@ -177,10 +213,39 @@ form.meta textarea.edit {
.mediamanager-list li .info {
overflow: hidden;
float: left;
- margin-left: 5px;
- width: 20%;
+ width: 19%;
+ margin-left: 1%;
+}
+
+.mediamanager-list li input[type=checkbox] {
+ position: absolute;
+ left: 100%;
+ margin-left: -20px;
+ margin-top: 3px;
+ display: none;
+}
+
+.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;
+ *display: inline;
+}
\ No newline at end of file
--
cgit v1.2.3
From 532850ed047e0f35268eb1a5d4cf85c80f228dc5 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Thu, 23 Jun 2011 13:13:34 +0300
Subject: media getting metadata fix
---
lib/tpl/default/detail.php | 46 ++++++++++++++++++++++------------------------
1 file changed, 22 insertions(+), 24 deletions(-)
(limited to 'lib')
diff --git a/lib/tpl/default/detail.php b/lib/tpl/default/detail.php
index 4f42b116e..f61ede043 100644
--- a/lib/tpl/default/detail.php
+++ b/lib/tpl/default/detail.php
@@ -52,30 +52,28 @@ if (!defined('DOKU_INC')) die();
'.$lang['img_date'].':- '.dformat($t).'
';
-
- $t = tpl_img_getTag('File.Name');
- if($t) print '- '.$lang['img_fname'].':
- '.hsc($t).'
';
-
- $t = tpl_img_getTag(array('Iptc.Byline','Exif.TIFFArtist','Exif.Artist','Iptc.Credit'));
- if($t) print '- '.$lang['img_artist'].':
- '.hsc($t).'
';
-
- $t = tpl_img_getTag(array('Iptc.CopyrightNotice','Exif.TIFFCopyright','Exif.Copyright'));
- if($t) print '- '.$lang['img_copyr'].':
- '.hsc($t).'
';
-
- $t = tpl_img_getTag('File.Format');
- if($t) print '- '.$lang['img_format'].':
- '.hsc($t).'
';
-
- $t = tpl_img_getTag('File.NiceSize');
- if($t) print '- '.$lang['img_fsize'].':
- '.hsc($t).'
';
-
- $t = tpl_img_getTag('Simple.Camera');
- if($t) print '- '.$lang['img_camera'].':
- '.hsc($t).'
';
-
- $t = tpl_img_getTag(array('IPTC.Keywords','IPTC.Category','xmp.dc:subject'));
- if($t) print '- '.$lang['img_keywords'].':
- '.hsc($t).'
';
-
+ static $tags = null;
+ if(is_null($tags)){
+ foreach (array('default','local') as $config_group) {
+ if (empty($config_cascade['mediameta'][$config_group])) continue;
+ foreach ($config_cascade['mediameta'][$config_group] as $config_file) {
+ if(@file_exists($config_file)){
+ include($config_file);
+ }
+ }
+ }
+ }
+ foreach($tags as $key => $tag){
+ $t = $tag[0];
+ if (!is_array($t)) $t = array($tag[0]);
+ $value = tpl_img_getTag($t);
+ if ($value) {
+ echo '- '.$lang[$tag[1]].':
- ';
+ if ($tag[2] == 'text') echo hsc($value);
+ if ($tag[2] == 'date') echo dformat($value);
+ echo '
';
+ }
+ }
?>
--
cgit v1.2.3
From 88a71175e3de9e3ad8b20ca9eb710aaf773cb788 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Thu, 23 Jun 2011 14:16:15 +0300
Subject: media manager auth fix
---
lib/exe/mediamanager.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
(limited to 'lib')
diff --git a/lib/exe/mediamanager.php b/lib/exe/mediamanager.php
index d4ebc2d38..24dd5f911 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']);
}
@@ -108,7 +108,7 @@
}
// finished - start output
- if (!($_REQUEST['do'] == 'media')) {
+ if (!$fullscreen) {
header('Content-Type: text/html; charset=utf-8');
include(template('mediamanager.php'));
}
--
cgit v1.2.3
From 70c3cc9a17d47d8986cba0805d943c1a68af1740 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Fri, 24 Jun 2011 00:41:47 +0300
Subject: media action buttons
---
lib/tpl/default/mediamanager.css | 4 ++++
1 file changed, 4 insertions(+)
(limited to 'lib')
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index e7c78dbcf..7a85f3c8b 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -248,4 +248,8 @@ form.meta textarea.edit {
vertical-align: top;
zoom: 1;
*display: inline;
+}
+
+.mediamanager-preview {
+ margin-bottom: 5px;
}
\ No newline at end of file
--
cgit v1.2.3
From 322111f0870d88a59b71258ce8410ae378441533 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Tue, 28 Jun 2011 15:52:02 +0300
Subject: css fix
---
lib/tpl/default/mediamanager.css | 48 +++++++++++++++++++++++-----------------
1 file changed, 28 insertions(+), 20 deletions(-)
(limited to 'lib')
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index 7a85f3c8b..cceecf7fe 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -24,11 +24,6 @@
overflow-y: auto;
}
-.mediamanager .clearer {
- font-size: 0;
- line-height: 0;
-}
-
.mediamanager .mediamanager-slider {
width: auto;
}
@@ -154,10 +149,15 @@ form.meta textarea.edit {
display: -moz-inline-stack;
text-align: center;
zoom: 1;
- *display: inline;
- _height: 130px;
position: relative;
}
+* html .mediamanager-thumbs li {
+ display: inline;
+}
+*+html .mediamanager-thumbs li {
+ display: inline;
+ _height: 130px;
+}
.mediamanager-thumbs li .image {
width: 100%;
@@ -166,23 +166,23 @@ form.meta textarea.edit {
overflow: hidden;
}
-.mediamanager-thumbs li .info {
+.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] {
- /*position: absolute;
- left: 100%;
- top: 100%;
- margin-left: -20px;
- margin-top: -20px;*/
display: none;
+ float: left;
+ margin: 3px;
}
.mediamanager-thumbs li:hover input[type=checkbox],
.mediamanager-thumbs li input[type=checkbox]:checked {
- display: inline;
+ display: block;
}
.mediamanager-list li {
@@ -210,19 +210,25 @@ form.meta textarea.edit {
width: 100%;
}
-.mediamanager-list li .info {
+.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] {
- position: absolute;
- left: 100%;
- margin-left: -20px;
- margin-top: 3px;
display: none;
+ float: left;
+ margin: 3px;
}
.mediamanager-list li:hover input[type=checkbox],
@@ -247,7 +253,9 @@ form.meta textarea.edit {
padding: 2px;
vertical-align: top;
zoom: 1;
- *display: inline;
+}
+* html .mediamanager-table-50 li {
+ display: inline;
}
.mediamanager-preview {
--
cgit v1.2.3
From 3e98e6857f2c48127d4169d02e341d1013c00bac Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Wed, 29 Jun 2011 16:59:18 +0300
Subject: media getting metadata fix
---
lib/tpl/default/detail.php | 23 +++++++++--------------
1 file changed, 9 insertions(+), 14 deletions(-)
(limited to 'lib')
diff --git a/lib/tpl/default/detail.php b/lib/tpl/default/detail.php
index f61ede043..f7bb37a25 100644
--- a/lib/tpl/default/detail.php
+++ b/lib/tpl/default/detail.php
@@ -52,25 +52,20 @@ if (!defined('DOKU_INC')) die();
$tag){
- $t = $tag[0];
- if (!is_array($t)) $t = array($tag[0]);
+
+ 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 '- '.$lang[$tag[1]].':
- ';
- if ($tag[2] == 'text') echo hsc($value);
if ($tag[2] == 'date') echo dformat($value);
+ else echo hsc($value);
echo '
';
}
}
--
cgit v1.2.3
From 9c1bd4bc9aa4b9ac3b9981543a14508091cd639a Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Thu, 30 Jun 2011 19:44:31 +0300
Subject: restoring old media revisions
---
lib/exe/mediamanager.php | 6 ++++++
1 file changed, 6 insertions(+)
(limited to 'lib')
diff --git a/lib/exe/mediamanager.php b/lib/exe/mediamanager.php
index 24dd5f911..46257a9a7 100644
--- a/lib/exe/mediamanager.php
+++ b/lib/exe/mediamanager.php
@@ -84,6 +84,12 @@
$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;
--
cgit v1.2.3
From 23846a98488bec2aaade6d983b4c0b0db13af80c Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Sun, 3 Jul 2011 19:00:54 +0300
Subject: ajax mediamanager
---
lib/exe/ajax.php | 25 ++++++++++-
lib/scripts/media.js | 90 +++++++++++++++++++++++++++++++++++++++-
lib/tpl/default/mediamanager.css | 23 +---------
3 files changed, 114 insertions(+), 24 deletions(-)
(limited to 'lib')
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index 1056a05f8..16efd9ac7 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -210,7 +210,30 @@ function ajax_medialist(){
global $NS;
$NS = $_POST['ns'];
- tpl_mediaContent(true);
+ if ($_POST['do'] == 'media') {
+ tpl_fileList(true);
+ } else {
+ tpl_mediaContent(true);
+ }
+}
+
+/**
+ * Return the content of the right column
+ * (image details) for the Mediamanager
+ *
+ * @author Kate Arzamastseva
+ */
+function ajax_mediadetails(){
+ global $conf;
+ global $NS;
+
+ $NS = $_POST['ns'];
+ $image = $_POST['image'];
+ if (isset($_POST['full'])) {
+ tpl_fileDetails($image, false);
+ } else {
+ tpl_fileDetails($image, false, true);
+ }
}
/**
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index ebbee5a78..e03d1cf7b 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -328,7 +328,17 @@
jQuery('div.success, div.info, div.error, div.notify').remove();
- content = $('#media__content');
+ if (document.getElementById('media__content')) {
+ content = $('#media__content');
+ } else {
+ content = $('#mediamanager__files');
+ if (link.hasClass('idx_dir')) {
+ change_tab($('.files'), '#mediamanager__tabs_files');
+ $('#mediamanager__layout_detail').empty();
+ } else {
+ change_tab(link, '#mediamanager__tabs_files');
+ }
+ }
content.html('
');
// fetch the subtree
@@ -345,6 +355,77 @@
};
+ /**
+ * Changes selected tab
+ *
+ * @author Kate Arzamastseva
+ */
+ change_tab = function (tab, tab_menu_id) {
+ $(tab_menu_id + ' a').each(function (i) {
+ $(this).removeClass('selected');
+ });
+ tab.addClass('selected');
+ };
+
+ /**
+ * Changes view of media files list
+ *
+ * @author Kate Arzamastseva
+ */
+ list_view = function (event) {
+ var link, content;
+ link = $(this);
+
+ event.preventDefault();
+
+ content = $('#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
+ */
+ details = function (event) {
+ var link, content, call, full;
+ link = $(this);
+
+ event.preventDefault();
+
+ jQuery('div.success, div.info, div.error, div.notify').remove();
+
+ full='';
+ if (document.getElementById('mediamanager__details')) {
+ content = $('#mediamanager__details');
+ } else {
+ content = $('#mediamanager__layout_detail');
+ full = '&full=true';
+ }
+
+ if (link.hasClass('name')) {
+ change_tab($('.view'), '#mediamanager__tabs_details');
+ } else {
+ change_tab(link, '#mediamanager__tabs_details');
+ }
+ content.html('
');
+
+ $.post(
+ DOKU_BASE + 'lib/exe/ajax.php',
+ link[0].search.substr(1)+'&call=mediadetails'+full,
+ function (data) {
+ content.html(data);
+ },
+ 'html'
+ );
+ };
+
prepare_content = function (content) {
// hide syntax example
content.find('div.example:visible').hide();
@@ -748,5 +829,12 @@
$('#media__tree').delegate('img', 'click', toggle)
.delegate('a', 'click', list);
+
+ $('#mediamanager__tabs_files').delegate('a', 'click', list);
+
+ $('#mediamanager__files').delegate('#mediamanager__tabs_list a', 'click', list_view)
+ .delegate('#mediamanager__file_list a', 'click', details);
+
+ $('#mediamanager__layout_detail').delegate('#mediamanager__tabs_details a', 'click', details);
});
}(jQuery));
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index cceecf7fe..88e00d8fc 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -1,24 +1,3 @@
-/* --- Tree formatting --- */
-
-#media-menu img {
- float: left;
- padding: 0.5em 0.3em 0 0;
-}
-
-#media-menu ul {
- list-style-type: none;
- list-style-image: none;
- margin-left: 1.5em;
-}
-
-#media-menu li {
- clear: left;
- list-style-type: none;
- list-style-image: none;
-}
-
-/* -------------- */
-
.mediamanager {
width: 100%;
overflow-y: auto;
@@ -212,7 +191,7 @@ form.meta textarea.edit {
.mediamanager-list li .name,
.mediamanager-list li .size,
-.mediamanager-list li .filesize
+.mediamanager-list li .filesize,
.mediamanager-list li .date {
overflow: hidden;
float: left;
--
cgit v1.2.3
From ed69a2ae06c0707fdd5634e18d569c25f0cda6d5 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Sun, 3 Jul 2011 23:56:26 +0300
Subject: ajax mediamanager fix
---
lib/exe/ajax.php | 8 ++-----
lib/scripts/media.js | 68 ++++++++++++++++++++++++++--------------------------
2 files changed, 36 insertions(+), 40 deletions(-)
(limited to 'lib')
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index 16efd9ac7..8ff0f8eda 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -211,7 +211,7 @@ function ajax_medialist(){
$NS = $_POST['ns'];
if ($_POST['do'] == 'media') {
- tpl_fileList(true);
+ tpl_fileList();
} else {
tpl_mediaContent(true);
}
@@ -229,11 +229,7 @@ function ajax_mediadetails(){
$NS = $_POST['ns'];
$image = $_POST['image'];
- if (isset($_POST['full'])) {
- tpl_fileDetails($image, false);
- } else {
- tpl_fileDetails($image, false, true);
- }
+ tpl_fileDetails($image, false);
}
/**
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index e03d1cf7b..a7574b804 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -11,7 +11,7 @@
* @author Pierre Spring
*/
(function ($) {
- var toggle, list, prepare_content, insert, confirmattach, attachoptions, initpopup, updatehide, setalign, setsize, inSet, outSet, media_manager, hasFlash;
+ var toggle, list, prepare_content, insert, confirmattach, attachoptions, initpopup, updatehide, setalign, setsize, inSet, outSet, media_manager, hasFlash, form_params, list_view, details;
var media_manager = {
keepopen: false,
@@ -321,7 +321,7 @@
* @author Pierre Spring
*/
list = function (event) {
- var link, content;
+ var link, content, params;
link = $(this);
event.preventDefault();
@@ -329,22 +329,33 @@
jQuery('div.success, div.info, div.error, div.notify').remove();
if (document.getElementById('media__content')) {
+ //popup
content = $('#media__content');
+
} else {
- content = $('#mediamanager__files');
+ //fullscreen media manager
+ content = $('#mediamanager__layout_list');
+
if (link.hasClass('idx_dir')) {
- change_tab($('.files'), '#mediamanager__tabs_files');
+ //changing namespace
$('#mediamanager__layout_detail').empty();
- } else {
- change_tab(link, '#mediamanager__tabs_files');
}
}
- content.html('
');
+
+ params = '';
+
+ if (link[0].search) {
+ params = link[0].search.substr(1)+'&call=medialist';
+ } else if (link[0].action) {
+ params = form_params(link)+'&call=medialist';
+ }
+
+ $('.scroll-container', content).html('
');
// fetch the subtree
$.post(
DOKU_BASE + 'lib/exe/ajax.php',
- link[0].search.substr(1)+'&call=medialist',
+ params,
function (data) {
content.html(data);
prepare_content(content);
@@ -356,15 +367,16 @@
};
/**
- * Changes selected tab
+ * Returns form parameters
*
* @author Kate Arzamastseva
*/
- change_tab = function (tab, tab_menu_id) {
- $(tab_menu_id + ' a').each(function (i) {
- $(this).removeClass('selected');
- });
- tab.addClass('selected');
+ 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;
};
/**
@@ -394,31 +406,19 @@
* @author Kate Arzamastseva
*/
details = function (event) {
- var link, content, call, full;
+ var link, content;
link = $(this);
event.preventDefault();
jQuery('div.success, div.info, div.error, div.notify').remove();
- full='';
- if (document.getElementById('mediamanager__details')) {
- content = $('#mediamanager__details');
- } else {
- content = $('#mediamanager__layout_detail');
- full = '&full=true';
- }
-
- if (link.hasClass('name')) {
- change_tab($('.view'), '#mediamanager__tabs_details');
- } else {
- change_tab(link, '#mediamanager__tabs_details');
- }
- content.html('
');
+ content = $('#mediamanager__layout_detail');
+ $('.scroll-container', content).html('
');
$.post(
DOKU_BASE + 'lib/exe/ajax.php',
- link[0].search.substr(1)+'&call=mediadetails'+full,
+ link[0].search.substr(1)+'&call=mediadetails',
function (data) {
content.html(data);
},
@@ -830,11 +830,11 @@
$('#media__tree').delegate('img', 'click', toggle)
.delegate('a', 'click', list);
- $('#mediamanager__tabs_files').delegate('a', 'click', list);
-
- $('#mediamanager__files').delegate('#mediamanager__tabs_list a', 'click', list_view)
+ $('#mediamanager__layout_list').delegate('#mediamanager__tabs_files a', 'click', list)
+ .delegate('#mediamanager__tabs_list a', 'click', list_view)
.delegate('#mediamanager__file_list a', 'click', details);
- $('#mediamanager__layout_detail').delegate('#mediamanager__tabs_details a', 'click', details);
+ $('#mediamanager__layout_detail').delegate('#mediamanager__tabs_details a', 'click', details)
+ .delegate('#mediamanager__btn_update', 'submit', list);
});
}(jQuery));
--
cgit v1.2.3
From 7d7ab775ac0252d50835987b276a95b790cd1434 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Mon, 4 Jul 2011 22:35:44 +0300
Subject: mediamanager ajax forms
---
lib/exe/ajax.php | 15 ++++++++-----
lib/exe/mediamanager.php | 4 ++--
lib/scripts/media.js | 55 +++++++++++++++++++++++++++++++++---------------
3 files changed, 50 insertions(+), 24 deletions(-)
(limited to 'lib')
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index 8ff0f8eda..59953ddc3 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -224,12 +224,17 @@ function ajax_medialist(){
* @author Kate Arzamastseva
*/
function ajax_mediadetails(){
- global $conf;
- global $NS;
+ global $DEL, $NS, $IMG, $AUTH, $JUMPTO, $REV, $lang, $fullscreen;
+ $fullscreen = true;
+ require_once(DOKU_INC.'lib/exe/mediamanager.php');
- $NS = $_POST['ns'];
- $image = $_POST['image'];
- tpl_fileDetails($image, false);
+ 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/mediamanager.php b/lib/exe/mediamanager.php
index 46257a9a7..77eb2facb 100644
--- a/lib/exe/mediamanager.php
+++ b/lib/exe/mediamanager.php
@@ -80,7 +80,7 @@
$JUMPTO = media_metasave($IMG,$AUTH,$_REQUEST['meta']);
}
- if($IMG && @array_key_exists('save', $_REQUEST['mediado'])){
+ if($IMG && $_REQUEST['mediado'] == 'save') {
$JUMPTO = media_metasave($IMG,$AUTH,$_REQUEST['meta']);
}
@@ -98,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']);
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index a7574b804..245519cbc 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -11,7 +11,7 @@
* @author Pierre Spring
*/
(function ($) {
- var toggle, list, prepare_content, insert, confirmattach, attachoptions, initpopup, updatehide, setalign, setsize, inSet, outSet, media_manager, hasFlash, form_params, list_view, details;
+ var toggle, list, prepare_content, insert, confirmattach, attachoptions, initpopup, updatehide, setalign, setsize, inSet, outSet, media_manager, hasFlash, form_params, list_view, details, update_content;
var media_manager = {
keepopen: false,
@@ -331,6 +331,7 @@
if (document.getElementById('media__content')) {
//popup
content = $('#media__content');
+ content.html('
');
} else {
//fullscreen media manager
@@ -340,6 +341,8 @@
//changing namespace
$('#mediamanager__layout_detail').empty();
}
+
+ $('.scroll-container', content).html('
');
}
params = '';
@@ -350,19 +353,8 @@
params = form_params(link)+'&call=medialist';
}
- $('.scroll-container', content).html('
');
-
// fetch the subtree
- $.post(
- DOKU_BASE + 'lib/exe/ajax.php',
- params,
- function (data) {
- content.html(data);
- prepare_content(content);
- updatehide();
- },
- 'html'
- );
+ update_content(content, params);
};
@@ -406,7 +398,7 @@
* @author Kate Arzamastseva
*/
details = function (event) {
- var link, content;
+ var link, content, params, update_list;
link = $(this);
event.preventDefault();
@@ -416,9 +408,32 @@
content = $('#mediamanager__layout_detail');
$('.scroll-container', content).html('
');
+ params = '';
+
+ if (link[0].search) {
+ params = link[0].search.substr(1)+'&call=mediadetails';
+ } else {
+ params = form_params(link)+'&call=mediadetails';
+ }
+
+ 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 = $('a.files');
+ params1 = link1[0].search.substr(1)+'&call=medialist';
+ content1 = $('#mediamanager__layout_list');
+ $('.scroll-container', content1).html('
');
+
+ update_content(content1, params1);
+ }
+ };
+
+ update_content = function (content, params) {
$.post(
DOKU_BASE + 'lib/exe/ajax.php',
- link[0].search.substr(1)+'&call=mediadetails',
+ params,
function (data) {
content.html(data);
},
@@ -832,9 +847,15 @@
$('#mediamanager__layout_list').delegate('#mediamanager__tabs_files a', 'click', list)
.delegate('#mediamanager__tabs_list a', 'click', list_view)
- .delegate('#mediamanager__file_list a', 'click', details);
+ .delegate('#mediamanager__file_list a', 'click', details)
+ .delegate('#dw__mediasearch', 'submit', list);
$('#mediamanager__layout_detail').delegate('#mediamanager__tabs_details a', 'click', details)
- .delegate('#mediamanager__btn_update', 'submit', list);
+ .delegate('#mediamanager__btn_update', 'submit', list)
+ .delegate('#page__revisions', 'submit', details)
+ .delegate('#page__revisions a', 'click', details)
+ .delegate('#mediamanager__save_meta', 'submit', details)
+ .delegate('#mediamanager__btn_delete', 'submit', details)
+ .delegate('#mediamanager__btn_restore', 'submit', details);
});
}(jQuery));
--
cgit v1.2.3
From 6183fb05112cd318d9a6885d9405cff9917ee82f Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Fri, 8 Jul 2011 13:54:15 +0300
Subject: mediamanager fix
---
lib/exe/mediamanager.php | 2 +-
lib/scripts/media.js | 3 +++
2 files changed, 4 insertions(+), 1 deletion(-)
(limited to 'lib')
diff --git a/lib/exe/mediamanager.php b/lib/exe/mediamanager.php
index 77eb2facb..939b5a053 100644
--- a/lib/exe/mediamanager.php
+++ b/lib/exe/mediamanager.php
@@ -80,7 +80,7 @@
$JUMPTO = media_metasave($IMG,$AUTH,$_REQUEST['meta']);
}
- if($IMG && $_REQUEST['mediado'] == 'save') {
+ if($IMG && ($_REQUEST['mediado'] == 'save' || @array_key_exists('save', $_REQUEST['mediado']))) {
$JUMPTO = media_metasave($IMG,$AUTH,$_REQUEST['meta']);
}
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 245519cbc..4eb1e7b63 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -405,6 +405,9 @@
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');
$('.scroll-container', content).html('
');
--
cgit v1.2.3
From f6f771ca288974ca7d259cf35f0d416fef44ef6e Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Sat, 9 Jul 2011 21:04:18 +0300
Subject: media.js fix
---
lib/scripts/media.js | 102 +++++++++++++++++++++++++--------------------------
1 file changed, 51 insertions(+), 51 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 4eb1e7b63..8c68fa569 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -321,8 +321,8 @@
* @author Pierre Spring
*/
list = function (event) {
- var link, content, params;
- link = $(this);
+ var $link, $content, params;
+ $link = jQuery(this);
event.preventDefault();
@@ -330,31 +330,31 @@
if (document.getElementById('media__content')) {
//popup
- content = $('#media__content');
- content.html('
');
+ $content = jQuery('#media__content');
+ $content.html('
');
} else {
//fullscreen media manager
- content = $('#mediamanager__layout_list');
+ $content = jQuery('#mediamanager__layout_list');
- if (link.hasClass('idx_dir')) {
+ if ($link.hasClass('idx_dir')) {
//changing namespace
- $('#mediamanager__layout_detail').empty();
+ jQuery('#mediamanager__layout_detail').empty();
}
- $('.scroll-container', content).html('
');
+ jQuery('.scroll-container', $content).html('
');
}
params = '';
- if (link[0].search) {
- params = link[0].search.substr(1)+'&call=medialist';
- } else if (link[0].action) {
- params = form_params(link)+'&call=medialist';
+ if ($link[0].search) {
+ params = $link[0].search.substr(1)+'&call=medialist';
+ } else if ($link[0].action) {
+ params = form_params($link)+'&call=medialist';
}
// fetch the subtree
- update_content(content, params);
+ update_content($content, params);
};
@@ -363,11 +363,11 @@
*
* @author Kate Arzamastseva
*/
- form_params = function (form) {
- var elements = form.serialize();
+ 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);
+ var i = $form[0].action.indexOf('?');
+ if (i >= 0) action = $form[0].action.substr(i+1);
return elements+'&'+action;
};
@@ -377,18 +377,18 @@
* @author Kate Arzamastseva
*/
list_view = function (event) {
- var link, content;
- link = $(this);
+ var $link, $content;
+ $link = jQuery(this);
event.preventDefault();
- content = $('#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');
+ $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');
}
};
@@ -398,43 +398,43 @@
* @author Kate Arzamastseva
*/
details = function (event) {
- var link, content, params, update_list;
- link = $(this);
+ 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;
+ 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');
- $('.scroll-container', content).html('
');
+ $content = $('#mediamanager__layout_detail');
+ jQuery('.scroll-container', $content).html('
');
params = '';
- if (link[0].search) {
- params = link[0].search.substr(1)+'&call=mediadetails';
+ if ($link[0].search) {
+ params = $link[0].search.substr(1)+'&call=mediadetails';
} else {
- params = form_params(link)+'&call=mediadetails';
+ params = form_params($link)+'&call=mediadetails';
}
- update_content(content, params);
+ update_content($content, params);
- update_list = (link[0].id == 'mediamanager__btn_delete' || link[0].id == 'mediamanager__btn_restore');
+ update_list = ($link[0].id == 'mediamanager__btn_delete' || $link[0].id == 'mediamanager__btn_restore');
if (update_list) {
- var link1, content1, params1;
- link1 = $('a.files');
- params1 = link1[0].search.substr(1)+'&call=medialist';
- content1 = $('#mediamanager__layout_list');
- $('.scroll-container', content1).html('
');
+ 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('
');
- update_content(content1, params1);
+ update_content($content1, params1);
}
};
- update_content = function (content, params) {
- $.post(
+ update_content = function ($content, params) {
+ jQuery.post(
DOKU_BASE + 'lib/exe/ajax.php',
params,
function (data) {
@@ -831,29 +831,29 @@
};
$(function () {
- var content = $('#media__content');
- prepare_content(content);
+ var $content = jQuery('#media__content');
+ prepare_content($content);
attachoptions();
initpopup();
// add the action to autofill the "upload as" field
- content.delegate('#upload__file', 'change', suggest)
+ $content.delegate('#upload__file', 'change', suggest)
// Attach the image selector action to all links
.delegate('a.select', 'click', select)
// Attach deletion confirmation dialog to the delete buttons
.delegate('#media__content a.btn_media_delete', 'click', confirmattach);
- $('#media__tree').delegate('img', 'click', toggle)
+ jQuery('#media__tree').delegate('img', 'click', toggle)
.delegate('a', 'click', list);
- $('#mediamanager__layout_list').delegate('#mediamanager__tabs_files a', 'click', list)
+ jQuery('#mediamanager__layout_list').delegate('#mediamanager__tabs_files a', 'click', list)
.delegate('#mediamanager__tabs_list a', 'click', list_view)
.delegate('#mediamanager__file_list a', 'click', details)
.delegate('#dw__mediasearch', 'submit', list);
- $('#mediamanager__layout_detail').delegate('#mediamanager__tabs_details a', 'click', details)
+ jQuery('#mediamanager__layout_detail').delegate('#mediamanager__tabs_details a', 'click', details)
.delegate('#mediamanager__btn_update', 'submit', list)
.delegate('#page__revisions', 'submit', details)
.delegate('#page__revisions a', 'click', details)
--
cgit v1.2.3
From de11c42f80968ac41dc4164829845c1e5dae25c2 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Sat, 9 Jul 2011 23:21:50 +0300
Subject: media-manager fixes
---
lib/scripts/media.js | 4 ++++
lib/tpl/default/mediamanager.css | 5 +++++
2 files changed, 9 insertions(+)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 8c68fa569..f261bd2d5 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -340,6 +340,10 @@
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('
');
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index 88e00d8fc..eea62ea46 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -232,6 +232,7 @@ form.meta textarea.edit {
padding: 2px;
vertical-align: top;
zoom: 1;
+ color: black !important;
}
* html .mediamanager-table-50 li {
display: inline;
@@ -239,4 +240,8 @@ form.meta textarea.edit {
.mediamanager-preview {
margin-bottom: 5px;
+}
+
+.idx .selected {
+ color: red !important;
}
\ No newline at end of file
--
cgit v1.2.3
From e1dc10a4aab705171d34c7bde642ed77032c95c7 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Sun, 10 Jul 2011 15:36:01 +0300
Subject: media.js fixes
---
lib/scripts/media.js | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 3f263f42a..36c06a3aa 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -253,7 +253,7 @@ var dw_mediamanager = {
//changing namespace
jQuery('#mediamanager__layout_detail').empty();
jQuery('#media__tree .selected').each(function(){
- $(this).removeClass('selected');
+ jQuery(this).removeClass('selected');
});
$link.addClass('selected');
}
@@ -272,7 +272,7 @@ var dw_mediamanager = {
// fetch the subtree
dw_mediamanager.update_content($content, params);
- };
+ },
/**
* Returns form parameters
@@ -324,7 +324,7 @@ var dw_mediamanager = {
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');
+ $content = jQuery('#mediamanager__layout_detail');
jQuery('.scroll-container', $content).html('
');
params = '';
@@ -354,7 +354,7 @@ var dw_mediamanager = {
DOKU_BASE + 'lib/exe/ajax.php',
params,
function (data) {
- content.html(data);
+ $content.html(data);
dw_mediamanager.prepare_content($content);
dw_mediamanager.updatehide();
},
@@ -604,7 +604,7 @@ var dw_mediamanager = {
var allowed = bind(dw_mediamanager.allowedOpt, opt);
// Current value
- if (dw_mediamanager[opt] !== false && allowed(dw_mediamanager[opt]) {
+ if (dw_mediamanager[opt] !== false && allowed(dw_mediamanager[opt])) {
return dw_mediamanager[opt];
}
--
cgit v1.2.3
From 4928b6eb7137cb1e8727ca7a7fc99db614b0df88 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Sun, 10 Jul 2011 16:38:04 +0300
Subject: mediamanager resizable
---
lib/scripts/media.js | 33 +++++++++++++++++++++++++++++++++
lib/tpl/default/mediamanager.css | 19 +++++++++++--------
2 files changed, 44 insertions(+), 8 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 36c06a3aa..af5346cbe 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -354,14 +354,43 @@ var dw_mediamanager = {
DOKU_BASE + 'lib/exe/ajax.php',
params,
function (data) {
+ jQuery('.ui-resizable').each(function(){
+ jQuery(this).resizable('destroy');
+ });
+
$content.html(data);
dw_mediamanager.prepare_content($content);
dw_mediamanager.updatehide();
+ dw_mediamanager.update_resizable(0);
},
'html'
);
},
+ update_resizable: function (count_width) {
+ jQuery(".layout").resizable({ handles: 'e' });
+ jQuery(".layout").bind("resize", function(event, ui) {
+ var w = 0;
+ jQuery(".layout").each(function() {
+ w += jQuery(this).width();
+ });
+ jQuery('#id-mediamanager-layout').width(w+30);
+ });
+
+ var w = 0;
+ jQuery(".layout").each(function() {
+ if (count_width) jQuery(this).width(jQuery(this).width());
+ w += jQuery(this).width();
+ });
+ jQuery('#id-mediamanager-layout').width(w+30);
+
+ var windowHeight = jQuery(window).height();
+ var height = windowHeight - 300;
+ jQuery('.scroll-container').each(function (i) {
+ jQuery(this).height(height);
+ });
+ },
+
prepare_content: function ($content) {
// hide syntax example
$content.find('div.example:visible').hide();
@@ -642,4 +671,8 @@ function hasFlash(version){
return ver >= version;
}
+jQuery(document).ready(function() {
+ dw_mediamanager.update_resizable(1);
+});
+
jQuery(dw_mediamanager.init);
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index eea62ea46..55ac39fd2 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -1,20 +1,19 @@
.mediamanager {
width: 100%;
- overflow-y: auto;
+ overflow-x: auto;
}
.mediamanager .mediamanager-slider {
- width: auto;
+
}
.mediamanager .mediamanager-slider .layout {
- float: left;
margin-left: 5px;
margin-right: 5px;
+ float: left;
}
.mediamanager .scroll-container {
- /*height: 0px;*/
overflow-y: auto;
overflow-x: hidden;
padding: 0;
@@ -32,17 +31,17 @@
.mediamanager-link-thumbnails {
background: url('../../images/icon-thumb.png') 0 -4px no-repeat;
padding-left: 30px;
- display: block;
- float: left;
+ display: inline-block;
width: 0;
overflow: hidden;
+
+ margin-left: 10px;
}
.mediamanager-link-list {
background: url('../../images/icon-list.png') 0 -4px no-repeat;
padding-left: 30px;
- display: block;
- float: left;
+ display: inline-block;
width: 0;
overflow: hidden;
}
@@ -242,6 +241,10 @@ form.meta textarea.edit {
margin-bottom: 5px;
}
+.ui-resizable-e:hover {
+ background-color: #dadada;
+}
+
.idx .selected {
color: red !important;
}
\ No newline at end of file
--
cgit v1.2.3
From dd9ba38e965cfc3c06fbb80fed65556dbfbfda1c Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Thu, 14 Jul 2011 11:36:48 +0300
Subject: mediamanager tabs, upload form fix
---
lib/scripts/media.js | 6 +++++-
lib/tpl/default/mediamanager.css | 7 ++++++-
2 files changed, 11 insertions(+), 2 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index af5346cbe..de3d03dfe 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -64,7 +64,8 @@ var dw_mediamanager = {
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);
+ .delegate('#dw__mediasearch', 'submit', dw_mediamanager.list)
+ .delegate('#upload__file', 'change', dw_mediamanager.suggest);
jQuery('#mediamanager__layout_detail').delegate('#mediamanager__tabs_details a', 'click', dw_mediamanager.details)
.delegate('#mediamanager__btn_update', 'submit', dw_mediamanager.list)
@@ -216,6 +217,9 @@ var dw_mediamanager = {
$file = jQuery(this);
$name = jQuery('#upload__name');
+
+ if ($name.val() != '') return;
+
if(!$file.length || !$name.length) {
return;
}
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index 55ac39fd2..e87473687 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -246,5 +246,10 @@ form.meta textarea.edit {
}
.idx .selected {
- color: red !important;
+ background-color: __highlight__;
+ font-weight: bold;
+}
+
+.mediamanager div.upload {
+ padding-bottom: 0.5em;
}
\ No newline at end of file
--
cgit v1.2.3
From 23786fd7ff0ff9c41ba627bc43ba6a45d3b779cc Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Thu, 14 Jul 2011 23:37:38 +0300
Subject: mediamanager icons
---
lib/scripts/media.js | 6 +++++-
lib/tpl/default/mediamanager.css | 35 ++++++++++++++++++++++++++++++++---
2 files changed, 37 insertions(+), 4 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index de3d03dfe..62cc1e7bb 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -329,7 +329,11 @@ var dw_mediamanager = {
if ($link[0].id == 'mediamanager__btn_restore' && !confirm(LANG['restore_confirm'])) return false;
$content = jQuery('#mediamanager__layout_detail');
- jQuery('.scroll-container', $content).html('
');
+ if (jQuery('.scroll-container', $content).length) {
+ jQuery('.scroll-container', $content).html('
');
+ } else {
+ jQuery($content).html('
');
+ }
params = '';
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index e87473687..df2b961b6 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -134,7 +134,7 @@ form.meta textarea.edit {
}
*+html .mediamanager-thumbs li {
display: inline;
- _height: 130px;
+ height: 130px;
}
.mediamanager-thumbs li .image {
@@ -144,12 +144,20 @@ form.meta textarea.edit {
overflow: hidden;
}
+.mediamanager-thumbs li .image div {
+ vertical-align: middle;
+ display: table-cell;
+ width: 100px;
+ height: 90px;
+}
+
.mediamanager-thumbs li .name,
.mediamanager-thumbs li .size,
.mediamanager-thumbs li .filesize,
.mediamanager-thumbs li .date {
display: block;
overflow: hidden;
+ white-space: nowrap;
}
.mediamanager-thumbs li input[type=checkbox] {
@@ -186,6 +194,7 @@ form.meta textarea.edit {
.mediamanager-list li .image img {
width: 100%;
+ vertical-align: middle;
}
.mediamanager-list li .name,
@@ -196,11 +205,26 @@ form.meta textarea.edit {
float: left;
width: 19%;
margin-left: 1%;
+ white-space: nowrap;
}
.mediamanager-list li .date,
.mediamanager-thumbs li .date {
font-style: italic;
+ white-space: normal;
+}
+
+.mediamanager-list .icon {
+ max-width: 16px;
+ max-height: 16px;
+}
+
+.mediamanager-list li .image div {
+ vertical-align: middle;
+ text-align: center;
+ display: table-cell;
+ width: 100px;
+ height: 40px;
}
.mediamanager-list li input[type=checkbox] {
@@ -231,8 +255,9 @@ form.meta textarea.edit {
padding: 2px;
vertical-align: top;
zoom: 1;
- color: black !important;
+ color: black;
}
+
* html .mediamanager-table-50 li {
display: inline;
}
@@ -252,4 +277,8 @@ form.meta textarea.edit {
.mediamanager div.upload {
padding-bottom: 0.5em;
-}
\ No newline at end of file
+}
+
+.background-container .icon {
+ margin-right: 5px;
+}
--
cgit v1.2.3
From e136d6cc09a2c32050ecc37d7b0deebd0979c15d Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Sat, 16 Jul 2011 23:48:48 +0300
Subject: mediamanager image diff
---
lib/scripts/media.js | 29 +++++++++++++++++++++++++++++
lib/tpl/default/mediamanager.css | 33 +++++++++++++++++++++++++++++++++
2 files changed, 62 insertions(+)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 777eb4825..8500166dc 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -369,6 +369,9 @@ var dw_mediamanager = {
dw_mediamanager.prepare_content($content);
dw_mediamanager.updatehide();
dw_mediamanager.update_resizable(0);
+ dw_mediamanager.opacity_slider();
+ dw_mediamanager.portions_slider();
+
},
'html'
);
@@ -398,6 +401,30 @@ var dw_mediamanager = {
});
},
+ opacity_slider: function () {
+ var $slider = jQuery( "#mediamanager__opacity_slider" );
+ $slider.slider();
+ $slider.slider("option", "min", 0);
+ $slider.slider("option", "max", 0.999);
+ $slider.slider("option", "step", 0.001);
+ $slider.slider("option", "value", 0.5);
+ $slider.bind("slide", function(event, ui) {
+ jQuery('#mediamanager__diff_opacity_image2').css({ opacity: $slider.slider("option", "value")});
+ });
+ },
+
+ portions_slider: function () {
+ var $slider = jQuery( "#mediamanager__portions_slider" );
+ $slider.slider();
+ $slider.slider("option", "min", 0);
+ $slider.slider("option", "max", 100);
+ $slider.slider("option", "step", 1);
+ $slider.slider("option", "value", 50);
+ $slider.bind("slide", function(event, ui) {
+ jQuery('#mediamanager__diff_portions_image2').css({ width: $slider.slider("option", "value")+'%'});
+ });
+ },
+
prepare_content: function ($content) {
// hide syntax example
$content.find('div.example:visible').hide();
@@ -680,6 +707,8 @@ function hasFlash(version){
jQuery(document).ready(function() {
dw_mediamanager.update_resizable(1);
+ dw_mediamanager.opacity_slider();
+ dw_mediamanager.portions_slider();
});
jQuery(dw_mediamanager.init);
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index df2b961b6..6c4b64d3e 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -263,6 +263,7 @@ form.meta textarea.edit {
}
.mediamanager-preview {
+ text-align: center;
margin-bottom: 5px;
}
@@ -282,3 +283,35 @@ form.meta textarea.edit {
.background-container .icon {
margin-right: 5px;
}
+
+.mediamanager dl.img_tags dd.highlighted{
+ background-color: __highlight__;
+}
+
+#mediamanager__diff_opacity_image1,
+#mediamanager__diff_portions_image1 {
+ width: 99%;
+ position: relative;
+}
+
+#mediamanager__diff_opacity_image2 {
+ width: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ opacity: 0.5;
+}
+
+#mediamanager__diff_portions_image2 {
+ width: 50%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ border-right: 1px solid red;
+}
+
+#mediamanager__opacity_slider,
+#mediamanager__portions_slider {
+ margin: 10px;
+ width: 99%;
+}
--
cgit v1.2.3
From fa8e5c7713944541c907aea2b81c6a44382a15f0 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Sun, 17 Jul 2011 18:42:43 +0300
Subject: mediamanager html, css reworking
---
lib/scripts/media.js | 6 +-
lib/tpl/default/mediamanager.css | 184 ++++++++++++++++++++++-----------------
2 files changed, 109 insertions(+), 81 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 8500166dc..c5e6afc9b 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -302,10 +302,12 @@ var dw_mediamanager = {
event.preventDefault();
$content = jQuery('#mediamanager__file_list');
- if ($link.hasClass('mediamanager-link-thumbnails')) {
+
+ if ($link[0].id == 'mediamanager__link_thumbs') {
$content.removeClass('mediamanager-list');
$content.addClass('mediamanager-thumbs');
- } else if ($link.hasClass('mediamanager-link-list')) {
+
+ } else if ($link[0].id == 'mediamanager__link_list') {
$content.removeClass('mediamanager-thumbs');
$content.addClass('mediamanager-list');
}
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index 6c4b64d3e..02c732ce7 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -1,19 +1,17 @@
+/* Layout */
+
.mediamanager {
width: 100%;
overflow-x: auto;
}
-.mediamanager .mediamanager-slider {
-
-}
-
-.mediamanager .mediamanager-slider .layout {
+#mediamanager__layout .layout {
margin-left: 5px;
margin-right: 5px;
float: left;
}
-.mediamanager .scroll-container {
+#mediamanager__layout .scroll-container {
overflow-y: auto;
overflow-x: hidden;
padding: 0;
@@ -21,44 +19,45 @@
text-align: left;
}
-.background-container {
+#mediamanager__layout .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: inline-block;
- width: 0;
- overflow: hidden;
+#mediamanager__layout .background-container .icon {
+ margin-right: 5px;
+}
- margin-left: 10px;
+#mediamanager__layout_namespaces {
+ width: 25%;
+ min-width: 125px;
}
-.mediamanager-link-list {
- background: url('../../images/icon-list.png') 0 -4px no-repeat;
- padding-left: 30px;
- display: inline-block;
- width: 0;
- overflow: hidden;
+#mediamanager__layout_list {
+ width: 40%;
+ min-width: 375px;
}
-.mediamanager-block-sort {
- background: url('../../images/icon-sort.png') 0 -4px no-repeat;
- padding-left: 30px;
- display: block;
- float: right;
+#mediamanager__layout_detail {
+ width: 30%;
+ min-width: 200px;
}
-.mediamanager-link-thumbnails:hover,
-.mediamanager-link-list:hover {
- width: auto;
- margin-right: 10px;
+.ui-resizable-e:hover {
+ background-color: #dadada;
}
+/* Namespaces tree */
+
+.idx .selected {
+ background-color: __highlight__;
+ font-weight: bold;
+}
+
+/* Tabs */
+
.mediamanager-tabs a {
font-weight: bold;
display: block;
@@ -66,13 +65,7 @@
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;
}
@@ -86,34 +79,55 @@
opacity: 0.5;
}
-.mediamanager-table td {
- padding: 5px;
+/* Title links */
+
+#mediamanager__tabs_list {
+ display: inline;
}
-.mediamanager-table tr:nth-child(2n+1){
- background-color: __background_neu__;
+#mediamanager__link_thumbs {
+ background: url('../../images/icon-thumb.png') 0 -4px no-repeat;
+ padding-left: 30px;
+ display: inline-block;
+ width: 0;
+ overflow: hidden;
+ margin-left: 10px;
}
-.mediamanager-table {
- background: expression(this.rowIndex % 2 == 0 ? "#ffffff" : "#f5f5f5");
+#mediamanager__link_list {
+ background: url('../../images/icon-list.png') 0 -4px no-repeat;
+ padding-left: 30px;
+ display: inline-block;
+ width: 0;
+ overflow: hidden;
}
-.mediamanager-table tr:hover {
- background-color: __background_alt__;
+#mediamanager__link_thumbs:hover,
+#mediamanager__link_list:hover {
+ width: auto;
+ margin-right: 10px;
}
-form.meta textarea.edit {
- height: 8em;
- width: 95%;
- min-width: 95%;
- max-width: 95%;
+#mediamanager__sort {
+ background: url('../../images/icon-sort.png') 0 -4px no-repeat;
+ padding-left: 30px;
+ display: block;
+ float: right;
}
-.mediamanager-file-list {
+/* File list */
+
+#mediamanager__file_list {
padding: 0;
margin: 0 !important;
}
+#mediamanager__file_list li:hover {
+ background-color: #dadada;
+}
+
+/* Files thumbs view */
+
.mediamanager-thumbs li {
width: 100px;
min-height: 130px;
@@ -129,9 +143,11 @@ form.meta textarea.edit {
zoom: 1;
position: relative;
}
+
* html .mediamanager-thumbs li {
display: inline;
}
+
*+html .mediamanager-thumbs li {
display: inline;
height: 130px;
@@ -160,6 +176,11 @@ form.meta textarea.edit {
white-space: nowrap;
}
+.mediamanager-thumbs li .date {
+ font-style: italic;
+ white-space: normal;
+}
+
.mediamanager-thumbs li input[type=checkbox] {
display: none;
float: left;
@@ -171,6 +192,8 @@ form.meta textarea.edit {
display: block;
}
+/* Files list view */
+
.mediamanager-list li {
list-style: none;
display: block;
@@ -194,7 +217,6 @@ form.meta textarea.edit {
.mediamanager-list li .image img {
width: 100%;
- vertical-align: middle;
}
.mediamanager-list li .name,
@@ -208,8 +230,7 @@ form.meta textarea.edit {
white-space: nowrap;
}
-.mediamanager-list li .date,
-.mediamanager-thumbs li .date {
+.mediamanager-list li .date {
font-style: italic;
white-space: normal;
}
@@ -238,16 +259,41 @@ form.meta textarea.edit {
display: block;
}
-.mediamanager-file-list li:hover {
- background-color: #dadada;
+/* Upload panel */
+
+#mediamanager__layout div.upload {
+ padding-bottom: 0.5em;
}
-.mediamanager-table-50 {
+/* File preview */
+
+#mediamanager__preview,
+#mediamanager__preview_buttons {
+ text-align: center;
+ margin-bottom: 5px;
+}
+
+#mediamanager__preview img {
+ width: 99%;
+}
+
+/* Meta data edit form */
+
+form.meta textarea.edit {
+ height: 8em;
+ width: 95%;
+ min-width: 95%;
+ max-width: 95%;
+}
+
+/* File diff */
+
+#mediamanager__diff_table {
padding: 0;
margin: 0 !important;
}
-.mediamanager-table-50 li {
+#mediamanager__diff_table li {
width: 48%;
display: inline-block;
margin: 0;
@@ -258,33 +304,13 @@ form.meta textarea.edit {
color: black;
}
-* html .mediamanager-table-50 li {
+* html #mediamanager__diff_table li {
display: inline;
}
-.mediamanager-preview {
- text-align: center;
- margin-bottom: 5px;
-}
-
-.ui-resizable-e:hover {
- background-color: #dadada;
-}
-
-.idx .selected {
- background-color: __highlight__;
- font-weight: bold;
-}
-
-.mediamanager div.upload {
- padding-bottom: 0.5em;
-}
-
-.background-container .icon {
- margin-right: 5px;
-}
+/* Image diff */
-.mediamanager dl.img_tags dd.highlighted{
+#mediamanager__layout dl.img_tags dd.highlighted{
background-color: __highlight__;
}
--
cgit v1.2.3
From 80291f9e4256d8bd01f0b0a0589aab2ea402ab64 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Mon, 18 Jul 2011 16:51:47 +0300
Subject: mediamanager resize
---
lib/scripts/media.js | 40 ++++++++++++++++++++++++++--------------
lib/tpl/default/mediamanager.css | 14 +++++++-------
2 files changed, 33 insertions(+), 21 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index c5e6afc9b..00a4821d0 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -380,27 +380,38 @@ var dw_mediamanager = {
},
update_resizable: function (count_width) {
- jQuery(".layout").resizable({ handles: 'e' });
- jQuery(".layout").bind("resize", function(event, ui) {
- var w = 0;
- jQuery(".layout").each(function() {
- w += jQuery(this).width();
- });
- jQuery('#id-mediamanager-layout').width(w+30);
- });
+ $resizable = jQuery("#mediamanager__layout .layout-resizable");
+
+ $resizable.resizable({ handles: 'e' ,
+ resize: function(event, ui){
+ var w = 0;
+ $resizable.each(function() {
+ w += jQuery(this).width();
+ });
+ wSum = w + parseFloat(jQuery('#mediamanager__layout_detail').css("min-width"));
- var w = 0;
- jQuery(".layout").each(function() {
- if (count_width) jQuery(this).width(jQuery(this).width());
- w += jQuery(this).width();
+ // max width of resizable column
+ var maxWidth = 0.95 * jQuery('#mediamanager__layout').width() - wSum + jQuery(this).width() - 30;
+ $resizable.resizable( "option", "maxWidth", maxWidth );
+
+ // percentage width of the first two columns
+ var wLeft = ( 100*(w+30) / jQuery('#mediamanager__layout').width() );
+
+ // width of the third column
+ var wRight = 95-wLeft;
+ wRight += "%";
+ jQuery('#mediamanager__layout_detail').width(wRight);
+ }
});
- jQuery('#id-mediamanager-layout').width(w+30);
var windowHeight = jQuery(window).height();
var height = windowHeight - 300;
- jQuery('.scroll-container').each(function (i) {
+ jQuery('#mediamanager__layout .scroll-container').each(function (i) {
jQuery(this).height(height);
});
+ $resizable.each(function() {
+ jQuery(this).height(height+100);
+ });
},
opacity_slider: function () {
@@ -711,6 +722,7 @@ jQuery(document).ready(function() {
dw_mediamanager.update_resizable(1);
dw_mediamanager.opacity_slider();
dw_mediamanager.portions_slider();
+ jQuery(window).resize(dw_mediamanager.update_resizable);
});
jQuery(dw_mediamanager.init);
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index 02c732ce7..dc12dcbec 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -1,11 +1,11 @@
/* Layout */
-.mediamanager {
+#mediamanager__page {
width: 100%;
- overflow-x: auto;
}
-#mediamanager__layout .layout {
+#mediamanager__layout .layout,
+#mediamanager__layout .layout-resizable {
margin-left: 5px;
margin-right: 5px;
float: left;
@@ -31,18 +31,18 @@
}
#mediamanager__layout_namespaces {
- width: 25%;
+ width: 15%;
min-width: 125px;
}
#mediamanager__layout_list {
- width: 40%;
+ width: 47%;
min-width: 375px;
}
#mediamanager__layout_detail {
- width: 30%;
- min-width: 200px;
+ width: 33%;
+ min-width: 265px;
}
.ui-resizable-e:hover {
--
cgit v1.2.3
From 6316bc7147a7ef1e90e2040d46bd40d034a09f13 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Tue, 19 Jul 2011 18:32:21 +0300
Subject: mediamanager list view thumbnails
---
lib/tpl/default/mediamanager.css | 33 ++++++++++++++++++++++++---------
1 file changed, 24 insertions(+), 9 deletions(-)
(limited to 'lib')
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index dc12dcbec..25cfe07e9 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -36,13 +36,13 @@
}
#mediamanager__layout_list {
- width: 47%;
+ width: 45%;
min-width: 375px;
}
#mediamanager__layout_detail {
- width: 33%;
- min-width: 265px;
+ width: 35%;
+ min-width: 300px;
}
.ui-resizable-e:hover {
@@ -66,6 +66,10 @@
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;
}
@@ -153,14 +157,20 @@
height: 130px;
}
-.mediamanager-thumbs li .image {
+.mediamanager-thumbs li .image,
+.mediamanager-thumbs li .image0 {
width: 100%;
height: 90px;
display: block;
overflow: hidden;
}
-.mediamanager-thumbs li .image div {
+.mediamanager-thumbs li .image1 {
+ display: none;
+}
+
+.mediamanager-thumbs li .image div,
+.mediamanager-thumbs li .image0 div {
vertical-align: middle;
display: table-cell;
width: 100px;
@@ -207,16 +217,18 @@
background-color: __background_neu__;
}
-.mediamanager-list li .image {
+.mediamanager-list li .image,
+.mediamanager-list li .image1 {
width: 10%;
display: block;
overflow: hidden;
float: left;
height: 40px;
+ text-align: center;
}
-.mediamanager-list li .image img {
- width: 100%;
+.mediamanager-list li .image0 {
+ display: none;
}
.mediamanager-list li .name,
@@ -240,7 +252,8 @@
max-height: 16px;
}
-.mediamanager-list li .image div {
+.mediamanager-list li .image div,
+.mediamanager-list li .image1 div {
vertical-align: middle;
text-align: center;
display: table-cell;
@@ -325,6 +338,8 @@ form.meta textarea.edit {
position: absolute;
top: 0;
left: 0;
+ -moz-opacity: 0.5;
+ -khtml-opacity: 0.5;
opacity: 0.5;
}
--
cgit v1.2.3
From 67c8cda19c0bf26a746d5c5cf9c82ee7ae5f23ca Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Tue, 19 Jul 2011 18:36:15 +0300
Subject: mediamanager revisions form
---
lib/scripts/media.js | 2 +-
lib/scripts/script.js | 17 ++++++++++-------
lib/tpl/default/mediamanager.css | 18 ++++++++++++++++++
3 files changed, 29 insertions(+), 8 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 00a4821d0..a6f6c25d4 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -373,7 +373,7 @@ var dw_mediamanager = {
dw_mediamanager.update_resizable(0);
dw_mediamanager.opacity_slider();
dw_mediamanager.portions_slider();
-
+ addInitEvent(revisionsForm);
},
'html'
);
diff --git a/lib/scripts/script.js b/lib/scripts/script.js
index b44d95d6f..33916a92e 100644
--- a/lib/scripts/script.js
+++ b/lib/scripts/script.js
@@ -285,12 +285,7 @@ function closePopups(){
jQuery('div.JSpopup').hide();
}
-/**
- * disable multiple revisions checkboxes if two are checked
- *
- * @author Anika Henke
- */
-addInitEvent(function(){
+function revisionsForm(){
var revForm = $('page__revisions');
if (!revForm) return;
var elems = revForm.elements;
@@ -312,7 +307,15 @@ addInitEvent(function(){
input1.disabled = true;
}
}
-});
+}
+
+
+/**
+ * disable multiple revisions checkboxes if two are checked
+ *
+ * @author Anika Henke
+ */
+addInitEvent(revisionsForm);
/**
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index 25cfe07e9..490d90c62 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -299,6 +299,24 @@ form.meta textarea.edit {
max-width: 95%;
}
+/* Revisions form */
+
+#mediamanager__details #page__revisions ul {
+ margin-left: 10px;
+ list-style-type: none;
+}
+
+#mediamanager__details #page__revisions ul li div.li div {
+ font-size: 12px;
+ color: gray;
+ padding-left: 18px;
+}
+
+#mediamanager__details #page__revisions ul li div.li input {
+ position: relative;
+ top: 1px;
+}
+
/* File diff */
#mediamanager__diff_table {
--
cgit v1.2.3
From b5941dfab8516bd445afebc91d6a4942cab4d5f0 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Mon, 25 Jul 2011 14:06:25 +0300
Subject: Recent Changes integration of media changes
---
lib/scripts/behaviour.js | 4 +++-
lib/tpl/default/design.css | 10 ++--------
2 files changed, 5 insertions(+), 9 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/behaviour.js b/lib/scripts/behaviour.js
index dd7676432..24704565a 100644
--- a/lib/scripts/behaviour.js
+++ b/lib/scripts/behaviour.js
@@ -73,7 +73,9 @@ var dw_behaviour = {
quickSelect: function(){
jQuery('select.quickselect')
.change(function(e){ e.target.form.submit(); })
- .parents('form').find('input[type=submit]').hide();
+ .parents('form').find('input[type=submit]').each(function(){
+ if (!jQuery(this).hasClass('not_hide')) jQuery(this).hide();
+ });
},
/**
diff --git a/lib/tpl/default/design.css b/lib/tpl/default/design.css
index 1dee4dc69..a94f814aa 100644
--- a/lib/tpl/default/design.css
+++ b/lib/tpl/default/design.css
@@ -246,18 +246,12 @@ div.dokuwiki div.pagenav-next {
width: 49%
}
-/* ----------- type of recent changes ------------- */
+/* ----------- type of recent changes select -------- */
-div.dokuwiki div.changestypenav {
- border-bottom: 1px solid __border__;
- padding-bottom: 10px;
+div.dokuwiki form#dw__recent select {
margin-bottom: 10px;
}
-div.dokuwiki div.changestypenav label {
- padding-right: 10px;
-}
-
/* --------------- Links ------------------ */
div.dokuwiki a:link,
--
cgit v1.2.3
From abc306f45f2ace038967bf7c51abd6ea53f56170 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Mon, 25 Jul 2011 16:23:24 +0300
Subject: mediamanager sort button
---
lib/scripts/media.js | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index a6f6c25d4..44928417f 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -60,18 +60,33 @@ var dw_mediamanager = {
}});
$tree.delegate('a', 'click', dw_mediamanager.list);
+ jQuery('#mediamanager__form_sort').find('input[type=submit]').hide();
+
+ // changing opened tab in the file list panel
jQuery('#mediamanager__layout_list').delegate('#mediamanager__tabs_files a', 'click', dw_mediamanager.list)
+ // changing type of the file list view
.delegate('#mediamanager__tabs_list a', 'click', dw_mediamanager.list_view)
+ // loading file details
.delegate('#mediamanager__file_list a', 'click', dw_mediamanager.details)
+ // search form
.delegate('#dw__mediasearch', 'submit', dw_mediamanager.list)
- .delegate('#upload__file', 'change', dw_mediamanager.suggest);
+ // "upload as" field autofill
+ .delegate('#upload__file', 'change', dw_mediamanager.suggest)
+ // sort type selection
+ .delegate('#mediamanager__form_sort select', 'change', dw_mediamanager.list);
+ // changing opened tab in the file details panel
jQuery('#mediamanager__layout_detail').delegate('#mediamanager__tabs_details a', 'click', dw_mediamanager.details)
+ // "update new version" button
.delegate('#mediamanager__btn_update', 'submit', dw_mediamanager.list)
+ // revisions form
.delegate('#page__revisions', 'submit', dw_mediamanager.details)
.delegate('#page__revisions a', 'click', dw_mediamanager.details)
+ // meta edit form
.delegate('#mediamanager__save_meta', 'submit', dw_mediamanager.details)
+ // delete button
.delegate('#mediamanager__btn_delete', 'submit', dw_mediamanager.details)
+ // "restore this version" button
.delegate('#mediamanager__btn_restore', 'submit', dw_mediamanager.details);
},
@@ -270,6 +285,8 @@ var dw_mediamanager = {
params = $link[0].search.substr(1)+'&call=medialist';
} else if ($link[0].action) {
params = dw_mediamanager.form_params($link)+'&call=medialist';
+ } else if ($link.parents('form')) {
+ params = dw_mediamanager.form_params($link.parents('form'))+'&call=medialist';
}
// fetch the subtree
--
cgit v1.2.3
From 4ee1558545059fa73700709a9ef4c0ab22ce8f92 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Tue, 26 Jul 2011 11:55:38 +0300
Subject: image diffs fixes
---
lib/exe/ajax.php | 13 ++++++++
lib/scripts/media.js | 72 +++++++++++++++++++++++++++++++++++++---
lib/tpl/default/mediamanager.css | 10 ++++--
3 files changed, 88 insertions(+), 7 deletions(-)
(limited to 'lib')
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index 483d65cff..300fb8acb 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -235,6 +235,19 @@ function ajax_mediadetails(){
tpl_fileDetails($image, $rev);
}
+/**
+ * Returns image diff representation for mediamanager
+ * @author Kate Arzamastseva
+ */
+function ajax_mediadiff(){
+ global $NS;
+
+ if ($_REQUEST['image']) $image = cleanID($_REQUEST['image']);
+ $NS = $_POST['ns'];
+ $auth = auth_quickaclcheck("$ns:*");
+ media_diff($image, $NS, $auth);
+}
+
/**
* Return sub index for index view
*
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 44928417f..42035a595 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -61,6 +61,7 @@ var dw_mediamanager = {
$tree.delegate('a', 'click', dw_mediamanager.list);
jQuery('#mediamanager__form_sort').find('input[type=submit]').hide();
+ dw_mediamanager.image_diff();
// changing opened tab in the file list panel
jQuery('#mediamanager__layout_list').delegate('#mediamanager__tabs_files a', 'click', dw_mediamanager.list)
@@ -357,8 +358,10 @@ var dw_mediamanager = {
if ($link[0].search) {
params = $link[0].search.substr(1)+'&call=mediadetails';
- } else {
+ } else if ($link[0].action) {
params = dw_mediamanager.form_params($link)+'&call=mediadetails';
+ } else if ($link.parents('form')) {
+ params = dw_mediamanager.form_params($link.parents('form'))+'&call=mediadetails';
}
dw_mediamanager.update_content($content, params);
@@ -385,17 +388,24 @@ var dw_mediamanager = {
});
$content.html(data);
+
dw_mediamanager.prepare_content($content);
dw_mediamanager.updatehide();
+
dw_mediamanager.update_resizable(0);
- dw_mediamanager.opacity_slider();
- dw_mediamanager.portions_slider();
addInitEvent(revisionsForm);
+ jQuery('#mediamanager__form_sort').find('input[type=submit]').hide();
+ dw_mediamanager.image_diff();
},
'html'
);
},
+ /**
+ * Updates mediamanager layout
+ *
+ * @author Kate Arzamastseva
+ */
update_resizable: function (count_width) {
$resizable = jQuery("#mediamanager__layout .layout-resizable");
@@ -431,6 +441,55 @@ var dw_mediamanager = {
});
},
+ /**
+ * Prints 'select' for image difference representation type
+ *
+ * @author Kate Arzamastseva
+ */
+ image_diff: function () {
+ if (jQuery('#mediamanager__difftype').length) return;
+
+ $form = jQuery('#mediamanager__form_diffview');
+ $label = jQuery(document.createElement('label'));
+ $label.append(''+LANG.media_diff+'');
+ $select = jQuery(document.createElement('select'))
+ .attr('id', 'mediamanager__difftype')
+ .attr('name', 'difftype')
+ .change(dw_mediamanager.change_diff_type);
+ $select.append(new Option(LANG.media_diff_both, "both"));
+ $select.append(new Option(LANG.media_diff_opacity, "opacity"));
+ $select.append(new Option(LANG.media_diff_portions, "portions"));
+ $label.append($select);
+ $form.append($label);
+ },
+
+ /**
+ * Handles selection of image difference representation type
+ *
+ * @author Kate Arzamastseva
+ */
+ change_diff_type: function () {
+ $select = jQuery('#mediamanager__difftype');
+ $content = jQuery('#mediamanager__diff');
+
+ params = dw_mediamanager.form_params($select.parents('form'))+'&call=mediadiff';
+ jQuery.post(
+ DOKU_BASE + 'lib/exe/ajax.php',
+ params,
+ function (data) {
+ $content.html(data);
+ dw_mediamanager.opacity_slider();
+ dw_mediamanager.portions_slider();
+ },
+ 'html'
+ );
+ },
+
+ /**
+ * Sets options for opacity diff slider
+ *
+ * @author Kate Arzamastseva
+ */
opacity_slider: function () {
var $slider = jQuery( "#mediamanager__opacity_slider" );
$slider.slider();
@@ -443,6 +502,11 @@ var dw_mediamanager = {
});
},
+ /**
+ * Sets options for red line diff slider
+ *
+ * @author Kate Arzamastseva
+ */
portions_slider: function () {
var $slider = jQuery( "#mediamanager__portions_slider" );
$slider.slider();
@@ -737,8 +801,6 @@ function hasFlash(version){
jQuery(document).ready(function() {
dw_mediamanager.update_resizable(1);
- dw_mediamanager.opacity_slider();
- dw_mediamanager.portions_slider();
jQuery(window).resize(dw_mediamanager.update_resizable);
});
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index 490d90c62..431b61d6e 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -321,7 +321,8 @@ form.meta textarea.edit {
#mediamanager__diff_table {
padding: 0;
- margin: 0 !important;
+ margin: 0;
+ margin-top: 10px;
}
#mediamanager__diff_table li {
@@ -345,10 +346,15 @@ form.meta textarea.edit {
background-color: __highlight__;
}
+#mediamanager__form_diffview {
+ margin-bottom: 10px;
+}
+
#mediamanager__diff_opacity_image1,
#mediamanager__diff_portions_image1 {
width: 99%;
position: relative;
+ margin-top: 10px;
}
#mediamanager__diff_opacity_image2 {
@@ -372,5 +378,5 @@ form.meta textarea.edit {
#mediamanager__opacity_slider,
#mediamanager__portions_slider {
margin: 10px;
- width: 99%;
+ width: 95%;
}
--
cgit v1.2.3
From 676706d3b056c9ad075c09b3bed23a4c2b248f52 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Tue, 26 Jul 2011 11:59:39 +0300
Subject: mediamanager files view state persisted
---
lib/scripts/media.js | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 42035a595..ebd9da2f8 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -22,6 +22,9 @@ var dw_mediamanager = {
size: false,
forbidden_opts: {},
+ // File list view type
+ view: false,
+
init: function () {
var $content, $tree;
$content = jQuery('#media__content');
@@ -60,6 +63,7 @@ var dw_mediamanager = {
}});
$tree.delegate('a', 'click', dw_mediamanager.list);
+ dw_mediamanager.set_filelist_view(dw_mediamanager.view, false);
jQuery('#mediamanager__form_sort').find('input[type=submit]').hide();
dw_mediamanager.image_diff();
@@ -322,12 +326,28 @@ var dw_mediamanager = {
$content = jQuery('#mediamanager__file_list');
if ($link[0].id == 'mediamanager__link_thumbs') {
+ dw_mediamanager.set_filelist_view('thumbs', true);
+
+ } else if ($link[0].id == 'mediamanager__link_list') {
+ dw_mediamanager.set_filelist_view('list', true);
+ }
+ },
+
+ set_filelist_view: function (type, cookies) {
+ var $content = jQuery('#mediamanager__file_list');
+ if (!type) type = DokuCookie.getValue('view');
+
+ if (type == 'thumbs') {
$content.removeClass('mediamanager-list');
$content.addClass('mediamanager-thumbs');
+ if (cookies) DokuCookie.setValue('view', 'thumbs');
+ dw_mediamanager.view = 'thumbs';
- } else if ($link[0].id == 'mediamanager__link_list') {
+ } else if (type == 'list') {
$content.removeClass('mediamanager-thumbs');
$content.addClass('mediamanager-list');
+ if (cookies) DokuCookie.setValue('view', 'list');
+ dw_mediamanager.view = 'list';
}
},
@@ -395,6 +415,7 @@ var dw_mediamanager = {
dw_mediamanager.update_resizable(0);
addInitEvent(revisionsForm);
jQuery('#mediamanager__form_sort').find('input[type=submit]').hide();
+ dw_mediamanager.set_filelist_view(dw_mediamanager.view, false);
dw_mediamanager.image_diff();
},
'html'
--
cgit v1.2.3
From d971ea8b02ccca4dd879a5db966670e0f3b4f102 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Sat, 30 Jul 2011 20:50:49 +0300
Subject: issue #39 sort by date desc, saved in cookie
---
lib/scripts/media.js | 7 +++++++
1 file changed, 7 insertions(+)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index ebd9da2f8..ff87299cf 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -292,6 +292,10 @@ var dw_mediamanager = {
params = dw_mediamanager.form_params($link)+'&call=medialist';
} else if ($link.parents('form')) {
params = dw_mediamanager.form_params($link.parents('form'))+'&call=medialist';
+
+ if ($link.parents('form')[0].id == 'mediamanager__form_sort') {
+ DokuCookie.setValue('sort', $link[0].value);
+ }
}
// fetch the subtree
@@ -305,6 +309,7 @@ var dw_mediamanager = {
* @author Kate Arzamastseva
*/
form_params: function ($form) {
+ if (!$form.length) return;
var elements = $form.serialize();
var action = '';
var i = $form[0].action.indexOf('?');
@@ -471,6 +476,8 @@ var dw_mediamanager = {
if (jQuery('#mediamanager__difftype').length) return;
$form = jQuery('#mediamanager__form_diffview');
+ if (!$form.length) return;
+
$label = jQuery(document.createElement('label'));
$label.append(''+LANG.media_diff+'');
$select = jQuery(document.createElement('select'))
--
cgit v1.2.3
From 9bd9c4373f31bb381fd80564decd8671d942fdc8 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Sun, 31 Jul 2011 22:47:47 +0300
Subject: issue #32 calculation of the panels width is redone when browser
window is resized
---
lib/scripts/media.js | 59 ++++++++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 55 insertions(+), 4 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index ff87299cf..17006e289 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -25,6 +25,8 @@ var dw_mediamanager = {
// File list view type
view: false,
+ layout_width: 0,
+
init: function () {
var $content, $tree;
$content = jQuery('#media__content');
@@ -417,7 +419,7 @@ var dw_mediamanager = {
dw_mediamanager.prepare_content($content);
dw_mediamanager.updatehide();
- dw_mediamanager.update_resizable(0);
+ dw_mediamanager.update_resizable();
addInitEvent(revisionsForm);
jQuery('#mediamanager__form_sort').find('input[type=submit]').hide();
dw_mediamanager.set_filelist_view(dw_mediamanager.view, false);
@@ -427,12 +429,53 @@ var dw_mediamanager = {
);
},
+ window_resize: function () {
+ if (jQuery('#mediamanager__layout').width() == dw_mediamanager.layout_width) {
+ return;
+ }
+
+ dw_mediamanager.layout_width = jQuery('#mediamanager__layout').width();
+
+ $r = jQuery("#mediamanager__layout .layout-resizable, #mediamanager__layout .layout");
+
+ var w = 0, wSum = 0, mCount = 0, mArray = [];
+ $r.each(function() {
+ w = jQuery(this).width();
+ if (w == parseFloat(jQuery(this).css("min-width"))) {
+ wSum += w;
+ } else {
+ mArray[mCount] = jQuery(this);
+ mCount++;
+ }
+ });
+
+ if (mCount > 0) {
+ var width = (0.95 * jQuery('#mediamanager__layout').width() - wSum - 30);
+ wSum = 0;
+ for(var i = 0; i < mArray.length; i++) {
+ wSum += mArray[i].width();
+ }
+ for(var i = 0; i < mArray.length; i++) {
+ w = mArray[i].width();
+ w = 100*w / wSum;
+ mArray[i].width(width*w/100);
+ }
+ }
+
+ $r.each(function() {
+ w = jQuery(this).width();
+ w = (100 * w / jQuery('#mediamanager__layout').width());
+ w += "%";
+ jQuery(this).width(w);
+ });
+ },
+
/**
* Updates mediamanager layout
*
* @author Kate Arzamastseva
*/
- update_resizable: function (count_width) {
+ update_resizable: function () {
$resizable = jQuery("#mediamanager__layout .layout-resizable");
$resizable.resizable({ handles: 'e' ,
@@ -454,6 +497,13 @@ var dw_mediamanager = {
var wRight = 95-wLeft;
wRight += "%";
jQuery('#mediamanager__layout_detail').width(wRight);
+
+ $resizable.each(function() {
+ w = jQuery(this).width();
+ w = (100 * w / jQuery('#mediamanager__layout').width());
+ w += "%";
+ jQuery(this).width(w);
+ });
}
});
@@ -828,8 +878,9 @@ function hasFlash(version){
}
jQuery(document).ready(function() {
- dw_mediamanager.update_resizable(1);
- jQuery(window).resize(dw_mediamanager.update_resizable);
+ dw_mediamanager.update_resizable();
+ dw_mediamanager.layout_width = jQuery("#mediamanager__layout").width();
+ jQuery(window).resize(dw_mediamanager.window_resize);
});
jQuery(dw_mediamanager.init);
--
cgit v1.2.3
From c17d1d0ed0fcdb8f0d4663a47bad8df069760b49 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Mon, 1 Aug 2011 01:16:20 +0300
Subject: issue #32 mediamanager layout css fix
---
lib/tpl/default/mediamanager.css | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
(limited to 'lib')
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index 431b61d6e..353230cc6 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -2,6 +2,11 @@
#mediamanager__page {
width: 100%;
+ overflow-x: auto;
+}
+
+#mediamanager__layout {
+ min-width: 840px;
}
#mediamanager__layout .layout,
@@ -42,7 +47,7 @@
#mediamanager__layout_detail {
width: 35%;
- min-width: 300px;
+ min-width: 290px;
}
.ui-resizable-e:hover {
--
cgit v1.2.3
From 69143ff27bdf2a979818367613e604f8ee4aef88 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Mon, 1 Aug 2011 01:21:21 +0300
Subject: issue #40 image resized in all diff views
---
lib/scripts/media.js | 46 ++++++++++++++++++++++++++++++++--------
lib/tpl/default/mediamanager.css | 20 +++++++++--------
2 files changed, 48 insertions(+), 18 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 17006e289..e8c492f5f 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -436,6 +436,10 @@ 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 = [];
@@ -586,15 +590,39 @@ var dw_mediamanager = {
* @author Kate Arzamastseva
*/
portions_slider: function () {
- var $slider = jQuery( "#mediamanager__portions_slider" );
- $slider.slider();
- $slider.slider("option", "min", 0);
- $slider.slider("option", "max", 100);
- $slider.slider("option", "step", 1);
- $slider.slider("option", "value", 50);
- $slider.bind("slide", function(event, ui) {
- jQuery('#mediamanager__diff_portions_image2').css({ width: $slider.slider("option", "value")+'%'});
- });
+ var $image2 = jQuery('#mediamanager__diff_portions_image2 img');
+ if ($image2) {
+ $image2 = jQuery($image2[0]);
+
+ $image2.parent().css({
+ width: '100%'
+ });
+
+ $image2.css({
+ width: '100%',
+ height: 'auto'
+ });
+
+ $image2.css({
+ width: $image2.width() + 'px',
+ height: $image2.height() + 'px'
+ });
+
+ var $div = jQuery("#mediamanager__diff_layout");
+ if ($image2.width() < $div.width()) {
+ $div.width($image2.width());
+ }
+
+ var $slider = jQuery("#mediamanager__portions_slider");
+ $slider.slider();
+ $slider.slider("option", "min", 0);
+ $slider.slider("option", "max", 100);
+ $slider.slider("option", "step", 1);
+ $slider.slider("option", "value", 50);
+ $slider.bind("slide", function(event, ui) {
+ jQuery('#mediamanager__diff_portions_image2').css({ width: $slider.slider("option", "value")+'%'});
+ });
+ }
},
prepare_content: function ($content) {
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index 353230cc6..a2fd35a47 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -355,18 +355,22 @@ form.meta textarea.edit {
margin-bottom: 10px;
}
-#mediamanager__diff_opacity_image1,
-#mediamanager__diff_portions_image1 {
- width: 99%;
+#mediamanager__diff_layout {
position: relative;
- margin-top: 10px;
}
-#mediamanager__diff_opacity_image2 {
- width: 100%;
+#mediamanager__diff_layout div {
position: absolute;
top: 0;
left: 0;
+ width: 100%;
+}
+
+#mediamanager__diff_layout div img {
+ width: 100%;
+}
+
+#mediamanager__diff_opacity_image2 {
-moz-opacity: 0.5;
-khtml-opacity: 0.5;
opacity: 0.5;
@@ -374,10 +378,8 @@ form.meta textarea.edit {
#mediamanager__diff_portions_image2 {
width: 50%;
- position: absolute;
- top: 0;
- left: 0;
border-right: 1px solid red;
+ overflow: hidden;
}
#mediamanager__opacity_slider,
--
cgit v1.2.3
From d5daba103cb1ed14fd07618ef936ca8d5cffb50c Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Mon, 1 Aug 2011 01:39:36 +0300
Subject: css class name fix
---
lib/scripts/behaviour.js | 2 +-
lib/tpl/default/mediamanager.css | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/behaviour.js b/lib/scripts/behaviour.js
index 24704565a..f3fcccdfe 100644
--- a/lib/scripts/behaviour.js
+++ b/lib/scripts/behaviour.js
@@ -74,7 +74,7 @@ var dw_behaviour = {
jQuery('select.quickselect')
.change(function(e){ e.target.form.submit(); })
.parents('form').find('input[type=submit]').each(function(){
- if (!jQuery(this).hasClass('not_hide')) jQuery(this).hide();
+ if (!jQuery(this).hasClass('show')) jQuery(this).hide();
});
},
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index a2fd35a47..8d351cd95 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -313,7 +313,7 @@ form.meta textarea.edit {
#mediamanager__details #page__revisions ul li div.li div {
font-size: 12px;
- color: gray;
+ color: __text_neu__;
padding-left: 18px;
}
@@ -338,7 +338,7 @@ form.meta textarea.edit {
padding: 2px;
vertical-align: top;
zoom: 1;
- color: black;
+ color: __text__;
}
* html #mediamanager__diff_table li {
--
cgit v1.2.3
From e5d185e17e613b7a9737fc76310f1e78008f71ec Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Tue, 2 Aug 2011 20:25:17 +0300
Subject: issue #9 config option to disable media revisions, auth
---
lib/exe/mediamanager.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
(limited to 'lib')
diff --git a/lib/exe/mediamanager.php b/lib/exe/mediamanager.php
index 939b5a053..5f09fe1f8 100644
--- a/lib/exe/mediamanager.php
+++ b/lib/exe/mediamanager.php
@@ -84,9 +84,9 @@
$JUMPTO = media_metasave($IMG,$AUTH,$_REQUEST['meta']);
}
- if ($_REQUEST['rev']) $REV = (int) $_REQUEST['rev'];
+ if ($_REQUEST['rev'] && $conf['mediarevisions']) $REV = (int) $_REQUEST['rev'];
- if($_REQUEST['mediado'] == 'restore'){
+ if($_REQUEST['mediado'] == 'restore' && $conf['mediarevisions']){
$JUMPTO = media_restore($_REQUEST['image'], $REV, $AUTH);
}
--
cgit v1.2.3
From 92cac9a97ee63d9c3c9bb8b0da1e3eb0604ba04f Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Wed, 3 Aug 2011 15:19:52 +0300
Subject: issue #38 diff links only if diff available; deleted files
---
lib/exe/ajax.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'lib')
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index 300fb8acb..20fc99de4 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -222,7 +222,7 @@ function ajax_medialist(){
* @author Kate Arzamastseva
*/
function ajax_mediadetails(){
- global $DEL, $NS, $IMG, $AUTH, $JUMPTO, $REV, $lang, $fullscreen;
+ global $DEL, $NS, $IMG, $AUTH, $JUMPTO, $REV, $lang, $fullscreen, $conf;
$fullscreen = true;
require_once(DOKU_INC.'lib/exe/mediamanager.php');
--
cgit v1.2.3
From a1a02ef6d327f2de7ffc7db57a7907465761b407 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Wed, 3 Aug 2011 19:10:16 +0300
Subject: issue #43 diff slider
---
lib/scripts/media.js | 49 +++++++++++++++++-----------------------
lib/tpl/default/mediamanager.css | 8 ++++---
2 files changed, 26 insertions(+), 31 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index e8c492f5f..f0c4c679c 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -560,8 +560,8 @@ var dw_mediamanager = {
params,
function (data) {
$content.html(data);
- dw_mediamanager.opacity_slider();
dw_mediamanager.portions_slider();
+ dw_mediamanager.opacity_slider();
},
'html'
);
@@ -574,6 +574,7 @@ var dw_mediamanager = {
*/
opacity_slider: function () {
var $slider = jQuery( "#mediamanager__opacity_slider" );
+ if (!$slider.length) return;
$slider.slider();
$slider.slider("option", "min", 0);
$slider.slider("option", "max", 0.999);
@@ -590,39 +591,31 @@ var dw_mediamanager = {
* @author Kate Arzamastseva
*/
portions_slider: function () {
+ var $image1 = jQuery('#mediamanager__diff_portions_image1 img');
var $image2 = jQuery('#mediamanager__diff_portions_image2 img');
- if ($image2) {
- $image2 = jQuery($image2[0]);
+ if (!$image1.length || !$image2.length) return;
- $image2.parent().css({
- width: '100%'
- });
+ var $div = jQuery("#mediamanager__diff_layout");
+ if (!$div.length) return;
- $image2.css({
- width: '100%',
- height: 'auto'
- });
+ if ($image1.width() < $div.width()) {
+ $div.width($image1.width());
+ }
- $image2.css({
- width: $image2.width() + 'px',
- height: $image2.height() + 'px'
- });
+ $image2.parent().width('50%');
+ $image2.width($image1.width());
- var $div = jQuery("#mediamanager__diff_layout");
- if ($image2.width() < $div.width()) {
- $div.width($image2.width());
- }
+ var $slider = jQuery("#mediamanager__portions_slider");
+ if (!$slider.length) return;
+ $slider.slider();
+ $slider.slider("option", "min", 0);
+ $slider.slider("option", "max", 100);
+ $slider.slider("option", "step", 1);
+ $slider.slider("option", "value", 50);
+ $slider.bind("slide", function(event, ui) {
+ jQuery('#mediamanager__diff_portions_image2').css({ width: $slider.slider("option", "value")+'%'});
+ });
- var $slider = jQuery("#mediamanager__portions_slider");
- $slider.slider();
- $slider.slider("option", "min", 0);
- $slider.slider("option", "max", 100);
- $slider.slider("option", "step", 1);
- $slider.slider("option", "value", 50);
- $slider.bind("slide", function(event, ui) {
- jQuery('#mediamanager__diff_portions_image2').css({ width: $slider.slider("option", "value")+'%'});
- });
- }
},
prepare_content: function ($content) {
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index 8d351cd95..49f2901e2 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -363,21 +363,23 @@ form.meta textarea.edit {
position: absolute;
top: 0;
left: 0;
- width: 100%;
}
-#mediamanager__diff_layout div img {
+#mediamanager__diff_layout div img,
+#mediamanager__diff_opacity_image1,
+#mediamanager__diff_portions_image1 {
width: 100%;
}
#mediamanager__diff_opacity_image2 {
+ width: 100%;
-moz-opacity: 0.5;
-khtml-opacity: 0.5;
opacity: 0.5;
}
#mediamanager__diff_portions_image2 {
- width: 50%;
+ width: 100%;
border-right: 1px solid red;
overflow: hidden;
}
--
cgit v1.2.3
From 09063cc66339d6e5daa12af4896a2457c03cfaf3 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Thu, 4 Aug 2011 20:32:16 +0300
Subject: issue #44 multi file uploader
---
lib/exe/ajax.php | 82 +++
lib/exe/js.php | 1 +
lib/scripts/fileuploader.js | 1247 ++++++++++++++++++++++++++++++++++++++
lib/scripts/media.js | 45 ++
lib/tpl/default/fileuploader.css | 31 +
lib/tpl/default/style.ini | 1 +
6 files changed, 1407 insertions(+)
create mode 100644 lib/scripts/fileuploader.js
create mode 100644 lib/tpl/default/fileuploader.css
(limited to 'lib')
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index 20fc99de4..391e951e5 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -248,6 +248,88 @@ function ajax_mediadiff(){
media_diff($image, $NS, $auth);
}
+function ajax_mediaupload(){
+ global $NS;
+ $NS = $_REQUEST['ns'];
+ $AUTH = auth_quickaclcheck("$NS:*");
+ if($AUTH >= AUTH_UPLOAD) { io_createNamespace("$NS:xxx", 'media'); }
+
+ if($_FILES['qqfile']['error']){
+ unset($_FILES['qqfile']);
+ }
+
+ if($_FILES['qqfile']['tmp_name']){
+ $id = $_FILES['qqfile']['name'];
+ $file = $_FILES['qqfile']['tmp_name'];
+ list($ext,$mime,$dl) = mimetype($id);
+
+ $res = media_save(
+ array('name' => $file,
+ 'mime' => $mime,
+ 'ext' => $ext),
+ $NS.':'.$id,
+ false,
+ $AUTH,
+ 'move_uploaded_file'
+ );
+ if (!is_array($res)) {
+ $result = array('success'=>true);
+ }
+ }
+
+ if (isset($_GET['qqfile'])) {
+ $id = $_GET['qqfile'];
+ list($ext,$mime,$dl) = mimetype($id);
+ $input = fopen("php://input", "r");
+ $temp = tmpfile();
+ $realSize = stream_copy_to_stream($input, $temp);
+ fclose($input);
+ if ($realSize != (int)$_SERVER["CONTENT_LENGTH"]) return false;
+ if (!($tmp = io_mktmpdir())) return false;
+ $path = $tmp.'/'.$id;
+ $target = fopen($path, "w");
+ fseek($temp, 0, SEEK_SET);
+ stream_copy_to_stream($temp, $target);
+ fclose($target);
+ $res = media_save(
+ array('name' => $path,
+ 'mime' => $mime,
+ 'ext' => $ext),
+ $NS.':'.$id,
+ false,
+ $AUTH,
+ 'copy'
+ );
+ unlink($path);
+ if ($tmp) dir_delete($tmp);
+ if (!is_array($res)) {
+ $result = array('success'=>true);
+ }
+ }
+ if (!$result) $result = array('error'=> 'Could not save uploaded file.');
+ echo htmlspecialchars(json_encode($result), ENT_NOQUOTES);
+}
+
+function dir_delete($path) {
+ if (!is_string($path) || $path == "") return false;
+
+ if (is_dir($path) && !is_link($path)) {
+ if (!$dh = @opendir($path)) return false;
+
+ while ($f = readdir($dh)) {
+ if ($f == '..' || $f == '.') continue;
+ dir_delete("$path/$f");
+ }
+
+ closedir($dh);
+ return @rmdir($path);
+ } else {
+ return @unlink($path);
+ }
+
+ return false;
+}
+
/**
* Return sub index for index view
*
diff --git a/lib/exe/js.php b/lib/exe/js.php
index 44ab2d5ca..fd8b74947 100644
--- a/lib/exe/js.php
+++ b/lib/exe/js.php
@@ -43,6 +43,7 @@ function js_out(){
DOKU_INC."lib/scripts/jquery/jquery$min.js",
DOKU_INC.'lib/scripts/jquery/jquery.cookie.js',
DOKU_INC."lib/scripts/jquery/jquery-ui$min.js",
+ DOKU_INC."lib/scripts/fileuploader.js",
DOKU_INC.'lib/scripts/helpers.js',
DOKU_INC.'lib/scripts/events.js',
DOKU_INC.'lib/scripts/delay.js',
diff --git a/lib/scripts/fileuploader.js b/lib/scripts/fileuploader.js
new file mode 100644
index 000000000..5368d9739
--- /dev/null
+++ b/lib/scripts/fileuploader.js
@@ -0,0 +1,1247 @@
+/**
+ * http://github.com/valums/file-uploader
+ *
+ * Multiple file upload component with progress-bar, drag-and-drop.
+ * © 2010 Andrew Valums ( andrew(at)valums.com )
+ *
+ * Licensed under GNU GPL 2 or later and GNU LGPL 2 or later, see license.txt.
+ */
+
+//
+// Helper functions
+//
+
+var qq = qq || {};
+
+/**
+ * Adds all missing properties from second obj to first obj
+ */
+qq.extend = function(first, second){
+ for (var prop in second){
+ first[prop] = second[prop];
+ }
+};
+
+/**
+ * Searches for a given element in the array, returns -1 if it is not present.
+ * @param {Number} [from] The index at which to begin the search
+ */
+qq.indexOf = function(arr, elt, from){
+ if (arr.indexOf) return arr.indexOf(elt, from);
+
+ from = from || 0;
+ var len = arr.length;
+
+ if (from < 0) from += len;
+
+ for (; from < len; from++){
+ if (from in arr && arr[from] === elt){
+ return from;
+ }
+ }
+ return -1;
+};
+
+qq.getUniqueId = (function(){
+ var id = 0;
+ return function(){ return id++; };
+})();
+
+//
+// Events
+
+qq.attach = function(element, type, fn){
+ if (element.addEventListener){
+ element.addEventListener(type, fn, false);
+ } else if (element.attachEvent){
+ element.attachEvent('on' + type, fn);
+ }
+};
+qq.detach = function(element, type, fn){
+ if (element.removeEventListener){
+ element.removeEventListener(type, fn, false);
+ } else if (element.attachEvent){
+ element.detachEvent('on' + type, fn);
+ }
+};
+
+qq.preventDefault = function(e){
+ if (e.preventDefault){
+ e.preventDefault();
+ } else{
+ e.returnValue = false;
+ }
+};
+
+//
+// Node manipulations
+
+/**
+ * Insert node a before node b.
+ */
+qq.insertBefore = function(a, b){
+ b.parentNode.insertBefore(a, b);
+};
+qq.remove = function(element){
+ element.parentNode.removeChild(element);
+};
+
+qq.contains = function(parent, descendant){
+ // compareposition returns false in this case
+ if (parent == descendant) return true;
+
+ if (parent.contains){
+ return parent.contains(descendant);
+ } else {
+ return !!(descendant.compareDocumentPosition(parent) & 8);
+ }
+};
+
+/**
+ * Creates and returns element from html string
+ * Uses innerHTML to create an element
+ */
+qq.toElement = (function(){
+ var div = document.createElement('div');
+ return function(html){
+ div.innerHTML = html;
+ var element = div.firstChild;
+ div.removeChild(element);
+ return element;
+ };
+})();
+
+//
+// Node properties and attributes
+
+/**
+ * Sets styles for an element.
+ * Fixes opacity in IE6-8.
+ */
+qq.css = function(element, styles){
+ if (styles.opacity != null){
+ if (typeof element.style.opacity != 'string' && typeof(element.filters) != 'undefined'){
+ styles.filter = 'alpha(opacity=' + Math.round(100 * styles.opacity) + ')';
+ }
+ }
+ qq.extend(element.style, styles);
+};
+qq.hasClass = function(element, name){
+ var re = new RegExp('(^| )' + name + '( |$)');
+ return re.test(element.className);
+};
+qq.addClass = function(element, name){
+ if (!qq.hasClass(element, name)){
+ element.className += ' ' + name;
+ }
+};
+qq.removeClass = function(element, name){
+ var re = new RegExp('(^| )' + name + '( |$)');
+ element.className = element.className.replace(re, ' ').replace(/^\s+|\s+$/g, "");
+};
+qq.setText = function(element, text){
+ element.innerText = text;
+ element.textContent = text;
+};
+
+//
+// Selecting elements
+
+qq.children = function(element){
+ var children = [],
+ child = element.firstChild;
+
+ while (child){
+ if (child.nodeType == 1){
+ children.push(child);
+ }
+ child = child.nextSibling;
+ }
+
+ return children;
+};
+
+qq.getByClass = function(element, className){
+ if (element.querySelectorAll){
+ return element.querySelectorAll('.' + className);
+ }
+
+ var result = [];
+ var candidates = element.getElementsByTagName("*");
+ var len = candidates.length;
+
+ for (var i = 0; i < len; i++){
+ if (qq.hasClass(candidates[i], className)){
+ result.push(candidates[i]);
+ }
+ }
+ return result;
+};
+
+/**
+ * obj2url() takes a json-object as argument and generates
+ * a querystring. pretty much like jQuery.param()
+ *
+ * how to use:
+ *
+ * `qq.obj2url({a:'b',c:'d'},'http://any.url/upload?otherParam=value');`
+ *
+ * will result in:
+ *
+ * `http://any.url/upload?otherParam=value&a=b&c=d`
+ *
+ * @param Object JSON-Object
+ * @param String current querystring-part
+ * @return String encoded querystring
+ */
+qq.obj2url = function(obj, temp, prefixDone){
+ var uristrings = [],
+ prefix = '&',
+ add = function(nextObj, i){
+ var nextTemp = temp
+ ? (/\[\]$/.test(temp)) // prevent double-encoding
+ ? temp
+ : temp+'['+i+']'
+ : i;
+ if ((nextTemp != 'undefined') && (i != 'undefined')) {
+ uristrings.push(
+ (typeof nextObj === 'object')
+ ? qq.obj2url(nextObj, nextTemp, true)
+ : (Object.prototype.toString.call(nextObj) === '[object Function]')
+ ? encodeURIComponent(nextTemp) + '=' + encodeURIComponent(nextObj())
+ : encodeURIComponent(nextTemp) + '=' + encodeURIComponent(nextObj)
+ );
+ }
+ };
+
+ if (!prefixDone && temp) {
+ prefix = (/\?/.test(temp)) ? (/\?$/.test(temp)) ? '' : '&' : '?';
+ uristrings.push(temp);
+ uristrings.push(qq.obj2url(obj));
+ } else if ((Object.prototype.toString.call(obj) === '[object Array]') && (typeof obj != 'undefined') ) {
+ // we wont use a for-in-loop on an array (performance)
+ for (var i = 0, len = obj.length; i < len; ++i){
+ add(obj[i], i);
+ }
+ } else if ((typeof obj != 'undefined') && (obj !== null) && (typeof obj === "object")){
+ // for anything else but a scalar, we will use for-in-loop
+ for (var i in obj){
+ add(obj[i], i);
+ }
+ } else {
+ uristrings.push(encodeURIComponent(temp) + '=' + encodeURIComponent(obj));
+ }
+
+ return uristrings.join(prefix)
+ .replace(/^&/, '')
+ .replace(/%20/g, '+');
+};
+
+//
+//
+// Uploader Classes
+//
+//
+
+var qq = qq || {};
+
+/**
+ * Creates upload button, validates upload, but doesn't create file list or dd.
+ */
+qq.FileUploaderBasic = function(o){
+ this._options = {
+ // set to true to see the server response
+ debug: false,
+ action: '/server/upload',
+ params: {},
+ button: null,
+ multiple: true,
+ maxConnections: 3,
+ // validation
+ allowedExtensions: [],
+ sizeLimit: 0,
+ minSizeLimit: 0,
+ // events
+ // return false to cancel submit
+ onSubmit: function(id, fileName){},
+ onProgress: function(id, fileName, loaded, total){},
+ onComplete: function(id, fileName, responseJSON){},
+ onCancel: function(id, fileName){},
+ // messages
+ messages: {
+ typeError: "{file} has invalid extension. Only {extensions} are allowed.",
+ sizeError: "{file} is too large, maximum file size is {sizeLimit}.",
+ minSizeError: "{file} is too small, minimum file size is {minSizeLimit}.",
+ emptyError: "{file} is empty, please select files again without it.",
+ onLeave: "The files are being uploaded, if you leave now the upload will be cancelled."
+ },
+ showMessage: function(message){
+ alert(message);
+ }
+ };
+ qq.extend(this._options, o);
+
+ // number of files being uploaded
+ this._filesInProgress = 0;
+ this._handler = this._createUploadHandler();
+
+ if (this._options.button){
+ this._button = this._createUploadButton(this._options.button);
+ }
+
+ this._preventLeaveInProgress();
+};
+
+qq.FileUploaderBasic.prototype = {
+ setParams: function(params){
+ this._options.params = params;
+ },
+ getInProgress: function(){
+ return this._filesInProgress;
+ },
+ _createUploadButton: function(element){
+ var self = this;
+
+ return new qq.UploadButton({
+ element: element,
+ multiple: this._options.multiple && qq.UploadHandlerXhr.isSupported(),
+ onChange: function(input){
+ self._onInputChange(input);
+ }
+ });
+ },
+ _createUploadHandler: function(){
+ var self = this,
+ handlerClass;
+
+ if(qq.UploadHandlerXhr.isSupported()){
+ handlerClass = 'UploadHandlerXhr';
+ } else {
+ handlerClass = 'UploadHandlerForm';
+ }
+
+ var handler = new qq[handlerClass]({
+ debug: this._options.debug,
+ action: this._options.action,
+ maxConnections: this._options.maxConnections,
+ onProgress: function(id, fileName, loaded, total){
+ self._onProgress(id, fileName, loaded, total);
+ self._options.onProgress(id, fileName, loaded, total);
+ },
+ onComplete: function(id, fileName, result){
+ self._onComplete(id, fileName, result);
+ self._options.onComplete(id, fileName, result);
+ },
+ onCancel: function(id, fileName){
+ self._onCancel(id, fileName);
+ self._options.onCancel(id, fileName);
+ }
+ });
+
+ return handler;
+ },
+ _preventLeaveInProgress: function(){
+ var self = this;
+
+ qq.attach(window, 'beforeunload', function(e){
+ if (!self._filesInProgress){return;}
+
+ var e = e || window.event;
+ // for ie, ff
+ e.returnValue = self._options.messages.onLeave;
+ // for webkit
+ return self._options.messages.onLeave;
+ });
+ },
+ _onSubmit: function(id, fileName){
+ this._filesInProgress++;
+ },
+ _onProgress: function(id, fileName, loaded, total){
+ },
+ _onComplete: function(id, fileName, result){
+ this._filesInProgress--;
+ if (result.error){
+ this._options.showMessage(result.error);
+ }
+ },
+ _onCancel: function(id, fileName){
+ this._filesInProgress--;
+ },
+ _onInputChange: function(input){
+ if (this._handler instanceof qq.UploadHandlerXhr){
+ this._uploadFileList(input.files);
+ } else {
+ if (this._validateFile(input)){
+ this._uploadFile(input);
+ }
+ }
+ this._button.reset();
+ },
+ _uploadFileList: function(files){
+ for (var i=0; i this._options.sizeLimit){
+ this._error('sizeError', name);
+ return false;
+
+ } else if (size && size < this._options.minSizeLimit){
+ this._error('minSizeError', name);
+ return false;
+ }
+
+ return true;
+ },
+ _error: function(code, fileName){
+ var message = this._options.messages[code];
+ function r(name, replacement){ message = message.replace(name, replacement); }
+
+ r('{file}', this._formatFileName(fileName));
+ r('{extensions}', this._options.allowedExtensions.join(', '));
+ r('{sizeLimit}', this._formatSize(this._options.sizeLimit));
+ r('{minSizeLimit}', this._formatSize(this._options.minSizeLimit));
+
+ this._options.showMessage(message);
+ },
+ _formatFileName: function(name){
+ if (name.length > 33){
+ name = name.slice(0, 19) + '...' + name.slice(-13);
+ }
+ return name;
+ },
+ _isAllowedExtension: function(fileName){
+ var ext = (-1 !== fileName.indexOf('.')) ? fileName.replace(/.*[.]/, '').toLowerCase() : '';
+ var allowed = this._options.allowedExtensions;
+
+ if (!allowed.length){return true;}
+
+ for (var i=0; i 99);
+
+ return Math.max(bytes, 0.1).toFixed(1) + ['kB', 'MB', 'GB', 'TB', 'PB', 'EB'][i];
+ }
+};
+
+
+/**
+ * Class that creates upload widget with drag-and-drop and file list
+ * @inherits qq.FileUploaderBasic
+ */
+qq.FileUploader = function(o){
+ // call parent constructor
+ qq.FileUploaderBasic.apply(this, arguments);
+
+ // additional options
+ qq.extend(this._options, {
+ element: null,
+ // if set, will be used instead of qq-upload-list in template
+ listElement: null,
+
+ template: '' +
+ '
Drop files here to upload
' +
+ '
Upload a file
' +
+ '
' +
+ '
',
+
+ // template for one item in file list
+ fileTemplate: '- ' +
+ '' +
+ '' +
+ '' +
+ 'Cancel' +
+ 'Failed' +
+ '
',
+
+ classes: {
+ // used to get elements from templates
+ button: 'qq-upload-button',
+ drop: 'qq-upload-drop-area',
+ dropActive: 'qq-upload-drop-area-active',
+ list: 'qq-upload-list',
+
+ file: 'qq-upload-file',
+ spinner: 'qq-upload-spinner',
+ size: 'qq-upload-size',
+ cancel: 'qq-upload-cancel',
+
+ // added to list item when upload completes
+ // used in css to hide progress spinner
+ success: 'qq-upload-success',
+ fail: 'qq-upload-fail'
+ }
+ });
+ // overwrite options with user supplied
+ qq.extend(this._options, o);
+
+ this._element = this._options.element;
+ this._element.innerHTML = this._options.template;
+ this._listElement = this._options.listElement || this._find(this._element, 'list');
+
+ this._classes = this._options.classes;
+
+ this._button = this._createUploadButton(this._find(this._element, 'button'));
+
+ this._bindCancelEvent();
+ this._setupDragDrop();
+};
+
+// inherit from Basic Uploader
+qq.extend(qq.FileUploader.prototype, qq.FileUploaderBasic.prototype);
+
+qq.extend(qq.FileUploader.prototype, {
+ /**
+ * Gets one of the elements listed in this._options.classes
+ **/
+ _find: function(parent, type){
+ var element = qq.getByClass(parent, this._options.classes[type])[0];
+ if (!element){
+ throw new Error('element not found ' + type);
+ }
+
+ return element;
+ },
+ _setupDragDrop: function(){
+ var self = this,
+ dropArea = this._find(this._element, 'drop');
+
+ var dz = new qq.UploadDropZone({
+ element: dropArea,
+ onEnter: function(e){
+ qq.addClass(dropArea, self._classes.dropActive);
+ e.stopPropagation();
+ },
+ onLeave: function(e){
+ e.stopPropagation();
+ },
+ onLeaveNotDescendants: function(e){
+ qq.removeClass(dropArea, self._classes.dropActive);
+ },
+ onDrop: function(e){
+ dropArea.style.display = 'none';
+ qq.removeClass(dropArea, self._classes.dropActive);
+ self._uploadFileList(e.dataTransfer.files);
+ }
+ });
+
+ dropArea.style.display = 'none';
+
+ qq.attach(document, 'dragenter', function(e){
+ if (!dz._isValidFileDrag(e)) return;
+
+ dropArea.style.display = 'block';
+ });
+ qq.attach(document, 'dragleave', function(e){
+ if (!dz._isValidFileDrag(e)) return;
+
+ var relatedTarget = document.elementFromPoint(e.clientX, e.clientY);
+ // only fire when leaving document out
+ if ( ! relatedTarget || relatedTarget.nodeName == "HTML"){
+ dropArea.style.display = 'none';
+ }
+ });
+ },
+ _onSubmit: function(id, fileName){
+ qq.FileUploaderBasic.prototype._onSubmit.apply(this, arguments);
+ this._addToList(id, fileName);
+ },
+ _onProgress: function(id, fileName, loaded, total){
+ qq.FileUploaderBasic.prototype._onProgress.apply(this, arguments);
+
+ var item = this._getItemByFileId(id);
+ var size = this._find(item, 'size');
+ size.style.display = 'inline';
+
+ var text;
+ if (loaded != total){
+ text = Math.round(loaded / total * 100) + '% from ' + this._formatSize(total);
+ } else {
+ text = this._formatSize(total);
+ }
+
+ qq.setText(size, text);
+ },
+ _onComplete: function(id, fileName, result){
+ qq.FileUploaderBasic.prototype._onComplete.apply(this, arguments);
+
+ // mark completed
+ var item = this._getItemByFileId(id);
+ qq.remove(this._find(item, 'cancel'));
+ qq.remove(this._find(item, 'spinner'));
+
+ if (result.success){
+ qq.addClass(item, this._classes.success);
+ } else {
+ qq.addClass(item, this._classes.fail);
+ }
+ },
+ _addToList: function(id, fileName){
+ var item = qq.toElement(this._options.fileTemplate);
+ item.qqFileId = id;
+
+ var fileElement = this._find(item, 'file');
+ qq.setText(fileElement, this._formatFileName(fileName));
+ this._find(item, 'size').style.display = 'none';
+
+ this._listElement.appendChild(item);
+ },
+ _getItemByFileId: function(id){
+ var item = this._listElement.firstChild;
+
+ // there can't be txt nodes in dynamically created list
+ // and we can use nextSibling
+ while (item){
+ if (item.qqFileId == id) return item;
+ item = item.nextSibling;
+ }
+ },
+ /**
+ * delegate click event for cancel link
+ **/
+ _bindCancelEvent: function(){
+ var self = this,
+ list = this._listElement;
+
+ qq.attach(list, 'click', function(e){
+ e = e || window.event;
+ var target = e.target || e.srcElement;
+
+ if (qq.hasClass(target, self._classes.cancel)){
+ qq.preventDefault(e);
+
+ var item = target.parentNode;
+ self._handler.cancel(item.qqFileId);
+ qq.remove(item);
+ }
+ });
+ }
+});
+
+qq.UploadDropZone = function(o){
+ this._options = {
+ element: null,
+ onEnter: function(e){},
+ onLeave: function(e){},
+ // is not fired when leaving element by hovering descendants
+ onLeaveNotDescendants: function(e){},
+ onDrop: function(e){}
+ };
+ qq.extend(this._options, o);
+
+ this._element = this._options.element;
+
+ this._disableDropOutside();
+ this._attachEvents();
+};
+
+qq.UploadDropZone.prototype = {
+ _disableDropOutside: function(e){
+ // run only once for all instances
+ if (!qq.UploadDropZone.dropOutsideDisabled ){
+
+ qq.attach(document, 'dragover', function(e){
+ if (e.dataTransfer){
+ e.dataTransfer.dropEffect = 'none';
+ e.preventDefault();
+ }
+ });
+
+ qq.UploadDropZone.dropOutsideDisabled = true;
+ }
+ },
+ _attachEvents: function(){
+ var self = this;
+
+ qq.attach(self._element, 'dragover', function(e){
+ if (!self._isValidFileDrag(e)) return;
+
+ var effect = e.dataTransfer.effectAllowed;
+ if (effect == 'move' || effect == 'linkMove'){
+ e.dataTransfer.dropEffect = 'move'; // for FF (only move allowed)
+ } else {
+ e.dataTransfer.dropEffect = 'copy'; // for Chrome
+ }
+
+ e.stopPropagation();
+ e.preventDefault();
+ });
+
+ qq.attach(self._element, 'dragenter', function(e){
+ if (!self._isValidFileDrag(e)) return;
+
+ self._options.onEnter(e);
+ });
+
+ qq.attach(self._element, 'dragleave', function(e){
+ if (!self._isValidFileDrag(e)) return;
+
+ self._options.onLeave(e);
+
+ var relatedTarget = document.elementFromPoint(e.clientX, e.clientY);
+ // do not fire when moving a mouse over a descendant
+ if (qq.contains(this, relatedTarget)) return;
+
+ self._options.onLeaveNotDescendants(e);
+ });
+
+ qq.attach(self._element, 'drop', function(e){
+ if (!self._isValidFileDrag(e)) return;
+
+ e.preventDefault();
+ self._options.onDrop(e);
+ });
+ },
+ _isValidFileDrag: function(e){
+ var dt = e.dataTransfer,
+ // do not check dt.types.contains in webkit, because it crashes safari 4
+ isWebkit = navigator.userAgent.indexOf("AppleWebKit") > -1;
+
+ // dt.effectAllowed is none in Safari 5
+ // dt.types.contains check is for firefox
+ return dt && dt.effectAllowed != 'none' &&
+ (dt.files || (!isWebkit && dt.types.contains && dt.types.contains('Files')));
+
+ }
+};
+
+qq.UploadButton = function(o){
+ this._options = {
+ element: null,
+ // if set to true adds multiple attribute to file input
+ multiple: false,
+ // name attribute of file input
+ name: 'file',
+ onChange: function(input){},
+ hoverClass: 'qq-upload-button-hover',
+ focusClass: 'qq-upload-button-focus'
+ };
+
+ qq.extend(this._options, o);
+
+ this._element = this._options.element;
+
+ // make button suitable container for input
+ qq.css(this._element, {
+ position: 'relative',
+ overflow: 'hidden',
+ // Make sure browse button is in the right side
+ // in Internet Explorer
+ direction: 'ltr'
+ });
+
+ this._input = this._createInput();
+};
+
+qq.UploadButton.prototype = {
+ /* returns file input element */
+ getInput: function(){
+ return this._input;
+ },
+ /* cleans/recreates the file input */
+ reset: function(){
+ if (this._input.parentNode){
+ qq.remove(this._input);
+ }
+
+ qq.removeClass(this._element, this._options.focusClass);
+ this._input = this._createInput();
+ },
+ _createInput: function(){
+ var input = document.createElement("input");
+
+ if (this._options.multiple){
+ input.setAttribute("multiple", "multiple");
+ }
+
+ input.setAttribute("type", "file");
+ input.setAttribute("name", this._options.name);
+
+ qq.css(input, {
+ position: 'absolute',
+ // in Opera only 'browse' button
+ // is clickable and it is located at
+ // the right side of the input
+ right: 0,
+ top: 0,
+ fontFamily: 'Arial',
+ // 4 persons reported this, the max values that worked for them were 243, 236, 236, 118
+ fontSize: '118px',
+ margin: 0,
+ padding: 0,
+ cursor: 'pointer',
+ opacity: 0
+ });
+
+ this._element.appendChild(input);
+
+ var self = this;
+ qq.attach(input, 'change', function(){
+ self._options.onChange(input);
+ });
+
+ qq.attach(input, 'mouseover', function(){
+ qq.addClass(self._element, self._options.hoverClass);
+ });
+ qq.attach(input, 'mouseout', function(){
+ qq.removeClass(self._element, self._options.hoverClass);
+ });
+ qq.attach(input, 'focus', function(){
+ qq.addClass(self._element, self._options.focusClass);
+ });
+ qq.attach(input, 'blur', function(){
+ qq.removeClass(self._element, self._options.focusClass);
+ });
+
+ // IE and Opera, unfortunately have 2 tab stops on file input
+ // which is unacceptable in our case, disable keyboard access
+ if (window.attachEvent){
+ // it is IE or Opera
+ input.setAttribute('tabIndex', "-1");
+ }
+
+ return input;
+ }
+};
+
+/**
+ * Class for uploading files, uploading itself is handled by child classes
+ */
+qq.UploadHandlerAbstract = function(o){
+ this._options = {
+ debug: false,
+ action: '/upload.php',
+ // maximum number of concurrent uploads
+ maxConnections: 999,
+ onProgress: function(id, fileName, loaded, total){},
+ onComplete: function(id, fileName, response){},
+ onCancel: function(id, fileName){}
+ };
+ qq.extend(this._options, o);
+
+ this._queue = [];
+ // params for files in queue
+ this._params = [];
+};
+qq.UploadHandlerAbstract.prototype = {
+ log: function(str){
+ if (this._options.debug && window.console) console.log('[uploader] ' + str);
+ },
+ /**
+ * Adds file or file input to the queue
+ * @returns id
+ **/
+ add: function(file){},
+ /**
+ * Sends the file identified by id and additional query params to the server
+ */
+ upload: function(id, params){
+ var len = this._queue.push(id);
+
+ var copy = {};
+ qq.extend(copy, params);
+ this._params[id] = copy;
+
+ // if too many active uploads, wait...
+ if (len <= this._options.maxConnections){
+ this._upload(id, this._params[id]);
+ }
+ },
+ /**
+ * Cancels file upload by id
+ */
+ cancel: function(id){
+ this._cancel(id);
+ this._dequeue(id);
+ },
+ /**
+ * Cancells all uploads
+ */
+ cancelAll: function(){
+ for (var i=0; i= max && i < max){
+ var nextId = this._queue[max-1];
+ this._upload(nextId, this._params[nextId]);
+ }
+ }
+};
+
+/**
+ * Class for uploading files using form and iframe
+ * @inherits qq.UploadHandlerAbstract
+ */
+qq.UploadHandlerForm = function(o){
+ qq.UploadHandlerAbstract.apply(this, arguments);
+
+ this._inputs = {};
+};
+// @inherits qq.UploadHandlerAbstract
+qq.extend(qq.UploadHandlerForm.prototype, qq.UploadHandlerAbstract.prototype);
+
+qq.extend(qq.UploadHandlerForm.prototype, {
+ add: function(fileInput){
+ fileInput.setAttribute('name', 'qqfile');
+ var id = 'qq-upload-handler-iframe' + qq.getUniqueId();
+
+ this._inputs[id] = fileInput;
+
+ // remove file input from DOM
+ if (fileInput.parentNode){
+ qq.remove(fileInput);
+ }
+
+ return id;
+ },
+ getName: function(id){
+ // get input value and remove path to normalize
+ return this._inputs[id].value.replace(/.*(\/|\\)/, "");
+ },
+ _cancel: function(id){
+ this._options.onCancel(id, this.getName(id));
+
+ delete this._inputs[id];
+
+ var iframe = document.getElementById(id);
+ if (iframe){
+ // to cancel request set src to something else
+ // we use src="javascript:false;" because it doesn't
+ // trigger ie6 prompt on https
+ iframe.setAttribute('src', 'javascript:false;');
+
+ qq.remove(iframe);
+ }
+ },
+ _upload: function(id, params){
+ var input = this._inputs[id];
+
+ if (!input){
+ throw new Error('file with passed id was not added, or already uploaded or cancelled');
+ }
+
+ var fileName = this.getName(id);
+
+ var iframe = this._createIframe(id);
+ var form = this._createForm(iframe, params);
+ form.appendChild(input);
+
+ var self = this;
+ this._attachLoadEvent(iframe, function(){
+ self.log('iframe loaded');
+
+ var response = self._getIframeContentJSON(iframe);
+
+ self._options.onComplete(id, fileName, response);
+ self._dequeue(id);
+
+ delete self._inputs[id];
+ // timeout added to fix busy state in FF3.6
+ setTimeout(function(){
+ qq.remove(iframe);
+ }, 1);
+ });
+
+ form.submit();
+ qq.remove(form);
+
+ return id;
+ },
+ _attachLoadEvent: function(iframe, callback){
+ qq.attach(iframe, 'load', function(){
+ // when we remove iframe from dom
+ // the request stops, but in IE load
+ // event fires
+ if (!iframe.parentNode){
+ return;
+ }
+
+ // fixing Opera 10.53
+ if (iframe.contentDocument &&
+ iframe.contentDocument.body &&
+ iframe.contentDocument.body.innerHTML == "false"){
+ // In Opera event is fired second time
+ // when body.innerHTML changed from false
+ // to server response approx. after 1 sec
+ // when we upload file with iframe
+ return;
+ }
+
+ callback();
+ });
+ },
+ /**
+ * Returns json object received by iframe from server.
+ */
+ _getIframeContentJSON: function(iframe){
+ // iframe.contentWindow.document - for IE<7
+ var doc = iframe.contentDocument ? iframe.contentDocument: iframe.contentWindow.document,
+ response;
+
+ this.log("converting iframe's innerHTML to JSON");
+ this.log("innerHTML = " + doc.body.innerHTML);
+
+ try {
+ response = eval("(" + doc.body.innerHTML + ")");
+ } catch(err){
+ response = {};
+ }
+
+ return response;
+ },
+ /**
+ * Creates iframe with unique name
+ */
+ _createIframe: function(id){
+ // We can't use following code as the name attribute
+ // won't be properly registered in IE6, and new window
+ // on form submit will open
+ // var iframe = document.createElement('iframe');
+ // iframe.setAttribute('name', id);
+
+ var iframe = qq.toElement('');
+ // src="javascript:false;" removes ie6 prompt on https
+
+ iframe.setAttribute('id', id);
+
+ iframe.style.display = 'none';
+ document.body.appendChild(iframe);
+
+ return iframe;
+ },
+ /**
+ * Creates form, that will be submitted to iframe
+ */
+ _createForm: function(iframe, params){
+ // We can't use the following code in IE6
+ // var form = document.createElement('form');
+ // form.setAttribute('method', 'post');
+ // form.setAttribute('enctype', 'multipart/form-data');
+ // Because in this case file won't be attached to request
+ var form = qq.toElement('');
+
+ var queryString = qq.obj2url(params, this._options.action);
+
+ form.setAttribute('action', queryString);
+ form.setAttribute('target', iframe.name);
+ form.style.display = 'none';
+ document.body.appendChild(form);
+
+ return form;
+ }
+});
+
+/**
+ * Class for uploading files using xhr
+ * @inherits qq.UploadHandlerAbstract
+ */
+qq.UploadHandlerXhr = function(o){
+ qq.UploadHandlerAbstract.apply(this, arguments);
+
+ this._files = [];
+ this._xhrs = [];
+
+ // current loaded size in bytes for each file
+ this._loaded = [];
+};
+
+// static method
+qq.UploadHandlerXhr.isSupported = function(){
+ var input = document.createElement('input');
+ input.type = 'file';
+
+ return (
+ 'multiple' in input &&
+ typeof File != "undefined" &&
+ typeof (new XMLHttpRequest()).upload != "undefined" );
+};
+
+// @inherits qq.UploadHandlerAbstract
+qq.extend(qq.UploadHandlerXhr.prototype, qq.UploadHandlerAbstract.prototype)
+
+qq.extend(qq.UploadHandlerXhr.prototype, {
+ /**
+ * Adds file to the queue
+ * Returns id to use with upload, cancel
+ **/
+ add: function(file){
+ if (!(file instanceof File)){
+ throw new Error('Passed obj in not a File (in qq.UploadHandlerXhr)');
+ }
+
+ return this._files.push(file) - 1;
+ },
+ getName: function(id){
+ var file = this._files[id];
+ // fix missing name in Safari 4
+ return file.fileName != null ? file.fileName : file.name;
+ },
+ getSize: function(id){
+ var file = this._files[id];
+ return file.fileSize != null ? file.fileSize : file.size;
+ },
+ /**
+ * Returns uploaded bytes for file identified by id
+ */
+ getLoaded: function(id){
+ return this._loaded[id] || 0;
+ },
+ /**
+ * Sends the file identified by id and additional query params to the server
+ * @param {Object} params name-value string pairs
+ */
+ _upload: function(id, params){
+ var file = this._files[id],
+ name = this.getName(id),
+ size = this.getSize(id);
+
+ this._loaded[id] = 0;
+
+ var xhr = this._xhrs[id] = new XMLHttpRequest();
+ var self = this;
+
+ xhr.upload.onprogress = function(e){
+ if (e.lengthComputable){
+ self._loaded[id] = e.loaded;
+ self._options.onProgress(id, name, e.loaded, e.total);
+ }
+ };
+
+ xhr.onreadystatechange = function(){
+ if (xhr.readyState == 4){
+ self._onComplete(id, xhr);
+ }
+ };
+
+ // build query string
+ params = params || {};
+ params['qqfile'] = name;
+ var queryString = qq.obj2url(params, this._options.action);
+
+ xhr.open("POST", queryString, true);
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+ xhr.setRequestHeader("X-File-Name", encodeURIComponent(name));
+ xhr.setRequestHeader("Content-Type", "application/octet-stream");
+ xhr.send(file);
+ },
+ _onComplete: function(id, xhr){
+ // the request was aborted/cancelled
+ if (!this._files[id]) return;
+
+ var name = this.getName(id);
+ var size = this.getSize(id);
+
+ this._options.onProgress(id, name, size, size);
+
+ if (xhr.status == 200){
+ this.log("xhr - server response received");
+ this.log("responseText = " + xhr.responseText);
+
+ var response;
+
+ try {
+ response = eval("(" + xhr.responseText + ")");
+ } catch(err){
+ response = {};
+ }
+
+ this._options.onComplete(id, name, response);
+
+ } else {
+ this._options.onComplete(id, name, {});
+ }
+
+ this._files[id] = null;
+ this._xhrs[id] = null;
+ this._dequeue(id);
+ },
+ _cancel: function(id){
+ this._options.onCancel(id, this.getName(id));
+
+ this._files[id] = null;
+
+ if (this._xhrs[id]){
+ this._xhrs[id].abort();
+ this._xhrs[id] = null;
+ }
+ }
+});
\ No newline at end of file
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index f0c4c679c..6c5c2611e 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -68,6 +68,8 @@ var dw_mediamanager = {
dw_mediamanager.set_filelist_view(dw_mediamanager.view, false);
jQuery('#mediamanager__form_sort').find('input[type=submit]').hide();
dw_mediamanager.image_diff();
+ dw_mediamanager.init_ajax_uploader();
+ createUploader();
// changing opened tab in the file list panel
jQuery('#mediamanager__layout_list').delegate('#mediamanager__tabs_files a', 'click', dw_mediamanager.list)
@@ -424,6 +426,8 @@ var dw_mediamanager = {
jQuery('#mediamanager__form_sort').find('input[type=submit]').hide();
dw_mediamanager.set_filelist_view(dw_mediamanager.view, false);
dw_mediamanager.image_diff();
+ dw_mediamanager.init_ajax_uploader();
+ createUploader();
},
'html'
);
@@ -615,7 +619,25 @@ var dw_mediamanager = {
$slider.bind("slide", function(event, ui) {
jQuery('#mediamanager__diff_portions_image2').css({ width: $slider.slider("option", "value")+'%'});
});
+ },
+
+ init_ajax_uploader: function () {
+ var $form = jQuery('#dw__upload');
+ if(!$form.length) return;
+ jQuery(document.createElement('img'))
+ .attr('src', DOKU_BASE+'lib/images/multiupload.png')
+ .attr('title', LANG.mu_btn)
+ .attr('alt', LANG.mu_btn)
+ .css('cursor', 'pointer')
+ .click(
+ function () {
+ //$form.html('');
+ $form.hide();
+ jQuery('#mediamanager__uploader').show();
+ }
+ )
+ .appendTo($form);
},
prepare_content: function ($content) {
@@ -898,6 +920,29 @@ function hasFlash(version){
return ver >= version;
}
+function getUrlVars(str) {
+ var vars = [], hash;
+ var hashes = str.split('&');
+ for(var i = 0; i < hashes.length; i++) {
+ hash = hashes[i].split('=');
+ vars[hash[0]] = hash[1];
+ }
+ return vars;
+}
+
+function createUploader(){
+ if (!jQuery('#dw__upload').length || !jQuery('#mediamanager__uploader').length) return;
+
+ var params = dw_mediamanager.form_params(jQuery('#dw__upload'))+'&call=mediaupload';
+ params = getUrlVars(params);
+
+ var uploader = new qq.FileUploader({
+ element: document.getElementById('mediamanager__uploader'),
+ action: DOKU_BASE + 'lib/exe/ajax.php',
+ params: params
+ });
+}
+
jQuery(document).ready(function() {
dw_mediamanager.update_resizable();
dw_mediamanager.layout_width = jQuery("#mediamanager__layout").width();
diff --git a/lib/tpl/default/fileuploader.css b/lib/tpl/default/fileuploader.css
new file mode 100644
index 000000000..0e3f111a9
--- /dev/null
+++ b/lib/tpl/default/fileuploader.css
@@ -0,0 +1,31 @@
+.qq-uploader { position:relative; width: 100%;}
+
+.qq-upload-button {
+ display:block; /* or inline-block */
+ width: 105px; padding: 7px 0; text-align:center;
+ background:#880000; border-bottom:1px solid #ddd;color:#fff;
+}
+.qq-upload-button-hover {background:#cc0000;}
+.qq-upload-button-focus {outline:1px dotted black;}
+
+.qq-upload-drop-area {
+ position:absolute; top:0; left:0; width:100%; height:100%; min-height: 70px; z-index:2;
+ background:#FF9797; text-align:center;
+}
+.qq-upload-drop-area span {
+ display:block; position:absolute; top: 50%; width:100%; margin-top:-8px; font-size:16px;
+}
+.qq-upload-drop-area-active {background:#FF7171;}
+
+.qq-upload-list {margin:15px 35px; padding:0; list-style:disc;}
+.qq-upload-list li { margin:0; padding:0; line-height:15px; font-size:12px;}
+.qq-upload-file, .qq-upload-spinner, .qq-upload-size, .qq-upload-cancel, .qq-upload-failed-text {
+ margin-right: 7px;
+}
+
+.qq-upload-file {}
+.qq-upload-spinner {display:inline-block; background: url("loading.gif"); width:15px; height:15px; vertical-align:text-bottom;}
+.qq-upload-size,.qq-upload-cancel {font-size:11px;}
+
+.qq-upload-failed-text {display:none;}
+.qq-upload-fail .qq-upload-failed-text {display:inline;}
\ No newline at end of file
diff --git a/lib/tpl/default/style.ini b/lib/tpl/default/style.ini
index bc28d1bbc..e12ddbf57 100644
--- a/lib/tpl/default/style.ini
+++ b/lib/tpl/default/style.ini
@@ -16,6 +16,7 @@ _admin.css = screen
_linkwiz.css = screen
_subscription.css = screen
mediamanager.css = screen
+fileuploader.css = screen
rtl.css = rtl
print.css = print
--
cgit v1.2.3
From d31deea3c5a38a1b04ea24ac317bbad730c6dc48 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Thu, 4 Aug 2011 20:34:42 +0300
Subject: issue #44 multi file uploader with rename
---
lib/scripts/fileuploader.js | 64 ++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 61 insertions(+), 3 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/fileuploader.js b/lib/scripts/fileuploader.js
index 5368d9739..437984848 100644
--- a/lib/scripts/fileuploader.js
+++ b/lib/scripts/fileuploader.js
@@ -267,6 +267,7 @@ qq.FileUploaderBasic = function(o){
onProgress: function(id, fileName, loaded, total){},
onComplete: function(id, fileName, responseJSON){},
onCancel: function(id, fileName){},
+ onUpload: function(){},
// messages
messages: {
typeError: "{file} has invalid extension. Only {extensions} are allowed.",
@@ -335,6 +336,9 @@ qq.FileUploaderBasic.prototype = {
onCancel: function(id, fileName){
self._onCancel(id, fileName);
self._options.onCancel(id, fileName);
+ },
+ onUpload: function(){
+ self._onUpload();
}
});
@@ -367,6 +371,9 @@ qq.FileUploaderBasic.prototype = {
_onCancel: function(id, fileName){
this._filesInProgress--;
},
+ _onUpload: function(){
+ this._handler.uploadAll(this._options.params);
+ },
_onInputChange: function(input){
if (this._handler instanceof qq.UploadHandlerXhr){
this._uploadFileList(input.files);
@@ -394,7 +401,6 @@ qq.FileUploaderBasic.prototype = {
if (this._options.onSubmit(id, fileName) !== false){
this._onSubmit(id, fileName);
- this._handler.upload(id, this._options.params);
}
},
_validateFile: function(file){
@@ -488,11 +494,13 @@ qq.FileUploader = function(o){
'Drop files here to upload
' +
'Upload a file
' +
'' +
+ '' +
'
',
// template for one item in file list
fileTemplate: '' +
'' +
+ '' +
'' +
'' +
'Cancel' +
@@ -505,8 +513,9 @@ qq.FileUploader = function(o){
drop: 'qq-upload-drop-area',
dropActive: 'qq-upload-drop-area-active',
list: 'qq-upload-list',
-
+ nameInput: 'qq-upload-name-input',
file: 'qq-upload-file',
+
spinner: 'qq-upload-spinner',
size: 'qq-upload-size',
cancel: 'qq-upload-cancel',
@@ -529,6 +538,7 @@ qq.FileUploader = function(o){
this._button = this._createUploadButton(this._find(this._element, 'button'));
this._bindCancelEvent();
+ this._bindUploadEvent();
this._setupDragDrop();
};
@@ -629,6 +639,10 @@ qq.extend(qq.FileUploader.prototype, {
qq.setText(fileElement, this._formatFileName(fileName));
this._find(item, 'size').style.display = 'none';
+ var nameElement = this._find(item, 'nameInput');
+ nameElement.value = this._formatFileName(fileName);
+ nameElement.id = id;
+
this._listElement.appendChild(item);
},
_getItemByFileId: function(id){
@@ -660,6 +674,19 @@ qq.extend(qq.FileUploader.prototype, {
qq.remove(item);
}
});
+ },
+
+ _bindUploadEvent: function(){
+ var self = this,
+ list = this._listElement;
+
+ qq.attach(document.getElementById('mediamanager__upload_button'), 'click', function(e){
+ e = e || window.event;
+ var target = e.target || e.srcElement;
+ qq.preventDefault(e);
+ self._handler._options.onUpload();
+
+ });
}
});
@@ -877,6 +904,10 @@ qq.UploadHandlerAbstract.prototype = {
* @returns id
**/
add: function(file){},
+
+ uploadAll: function(params){
+ this._uploadAll(params);
+ },
/**
* Sends the file identified by id and additional query params to the server
*/
@@ -927,6 +958,8 @@ qq.UploadHandlerAbstract.prototype = {
* Actual upload method
*/
_upload: function(id){},
+
+ _uploadAll: function(params){},
/**
* Actual cancel method
*/
@@ -1026,6 +1059,12 @@ qq.extend(qq.UploadHandlerForm.prototype, {
return id;
},
+ _uploadAll: function(params){
+ for (key in this._inputs) {
+ this.upload(key, params);
+ }
+
+ },
_attachLoadEvent: function(iframe, callback){
qq.attach(iframe, 'load', function(){
// when we remove iframe from dom
@@ -1153,10 +1192,21 @@ qq.extend(qq.UploadHandlerXhr.prototype, {
getName: function(id){
var file = this._files[id];
// fix missing name in Safari 4
- return file.fileName != null ? file.fileName : file.name;
+ var name = document.getElementById(id);
+ if (name != null) {
+ return name.value;
+ } else {
+ if (file != null) {
+ // fix missing name in Safari 4
+ return file.fileName != null ? file.fileName : file.name;
+ } else {
+ return null;
+ }
+ }
},
getSize: function(id){
var file = this._files[id];
+ if (file == null) return null;
return file.fileSize != null ? file.fileSize : file.size;
},
/**
@@ -1173,6 +1223,7 @@ qq.extend(qq.UploadHandlerXhr.prototype, {
var file = this._files[id],
name = this.getName(id),
size = this.getSize(id);
+ if (name == null || size == null) return;
this._loaded[id] = 0;
@@ -1203,6 +1254,13 @@ qq.extend(qq.UploadHandlerXhr.prototype, {
xhr.setRequestHeader("Content-Type", "application/octet-stream");
xhr.send(file);
},
+
+ _uploadAll: function(params){
+ for (key in this._files) {
+ this.upload(key, params);
+ }
+
+ },
_onComplete: function(id, xhr){
// the request was aborted/cancelled
if (!this._files[id]) return;
--
cgit v1.2.3
From b4b31bac3276c93277a8b70368aee135b7fdde09 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Sat, 6 Aug 2011 16:21:06 +0300
Subject: issue #43 images align
---
lib/scripts/media.js | 26 ++++++++++++++++++++------
lib/tpl/default/mediamanager.css | 13 ++++++++++---
2 files changed, 30 insertions(+), 9 deletions(-)
(limited to 'lib')
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;
}
--
cgit v1.2.3
From 8d7448594cb00e995bed9b6e6db6e7f9280da24d Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Sun, 7 Aug 2011 13:54:36 +0300
Subject: issue #44 fileuploader specific changes made in inheriting class
---
lib/exe/js.php | 1 +
lib/scripts/fileuploader.js | 64 +---------
lib/scripts/fileuploaderextended.js | 230 ++++++++++++++++++++++++++++++++++++
lib/scripts/media.js | 2 +-
lib/tpl/default/fileuploader.css | 6 +-
5 files changed, 238 insertions(+), 65 deletions(-)
create mode 100644 lib/scripts/fileuploaderextended.js
(limited to 'lib')
diff --git a/lib/exe/js.php b/lib/exe/js.php
index fd8b74947..1ca4fef98 100644
--- a/lib/exe/js.php
+++ b/lib/exe/js.php
@@ -44,6 +44,7 @@ function js_out(){
DOKU_INC.'lib/scripts/jquery/jquery.cookie.js',
DOKU_INC."lib/scripts/jquery/jquery-ui$min.js",
DOKU_INC."lib/scripts/fileuploader.js",
+ DOKU_INC."lib/scripts/fileuploaderextended.js",
DOKU_INC.'lib/scripts/helpers.js',
DOKU_INC.'lib/scripts/events.js',
DOKU_INC.'lib/scripts/delay.js',
diff --git a/lib/scripts/fileuploader.js b/lib/scripts/fileuploader.js
index 437984848..5368d9739 100644
--- a/lib/scripts/fileuploader.js
+++ b/lib/scripts/fileuploader.js
@@ -267,7 +267,6 @@ qq.FileUploaderBasic = function(o){
onProgress: function(id, fileName, loaded, total){},
onComplete: function(id, fileName, responseJSON){},
onCancel: function(id, fileName){},
- onUpload: function(){},
// messages
messages: {
typeError: "{file} has invalid extension. Only {extensions} are allowed.",
@@ -336,9 +335,6 @@ qq.FileUploaderBasic.prototype = {
onCancel: function(id, fileName){
self._onCancel(id, fileName);
self._options.onCancel(id, fileName);
- },
- onUpload: function(){
- self._onUpload();
}
});
@@ -371,9 +367,6 @@ qq.FileUploaderBasic.prototype = {
_onCancel: function(id, fileName){
this._filesInProgress--;
},
- _onUpload: function(){
- this._handler.uploadAll(this._options.params);
- },
_onInputChange: function(input){
if (this._handler instanceof qq.UploadHandlerXhr){
this._uploadFileList(input.files);
@@ -401,6 +394,7 @@ qq.FileUploaderBasic.prototype = {
if (this._options.onSubmit(id, fileName) !== false){
this._onSubmit(id, fileName);
+ this._handler.upload(id, this._options.params);
}
},
_validateFile: function(file){
@@ -494,13 +488,11 @@ qq.FileUploader = function(o){
'Drop files here to upload
' +
'Upload a file
' +
'' +
- '' +
'',
// template for one item in file list
fileTemplate: '' +
'' +
- '' +
'' +
'' +
'Cancel' +
@@ -513,9 +505,8 @@ qq.FileUploader = function(o){
drop: 'qq-upload-drop-area',
dropActive: 'qq-upload-drop-area-active',
list: 'qq-upload-list',
- nameInput: 'qq-upload-name-input',
- file: 'qq-upload-file',
+ file: 'qq-upload-file',
spinner: 'qq-upload-spinner',
size: 'qq-upload-size',
cancel: 'qq-upload-cancel',
@@ -538,7 +529,6 @@ qq.FileUploader = function(o){
this._button = this._createUploadButton(this._find(this._element, 'button'));
this._bindCancelEvent();
- this._bindUploadEvent();
this._setupDragDrop();
};
@@ -639,10 +629,6 @@ qq.extend(qq.FileUploader.prototype, {
qq.setText(fileElement, this._formatFileName(fileName));
this._find(item, 'size').style.display = 'none';
- var nameElement = this._find(item, 'nameInput');
- nameElement.value = this._formatFileName(fileName);
- nameElement.id = id;
-
this._listElement.appendChild(item);
},
_getItemByFileId: function(id){
@@ -674,19 +660,6 @@ qq.extend(qq.FileUploader.prototype, {
qq.remove(item);
}
});
- },
-
- _bindUploadEvent: function(){
- var self = this,
- list = this._listElement;
-
- qq.attach(document.getElementById('mediamanager__upload_button'), 'click', function(e){
- e = e || window.event;
- var target = e.target || e.srcElement;
- qq.preventDefault(e);
- self._handler._options.onUpload();
-
- });
}
});
@@ -904,10 +877,6 @@ qq.UploadHandlerAbstract.prototype = {
* @returns id
**/
add: function(file){},
-
- uploadAll: function(params){
- this._uploadAll(params);
- },
/**
* Sends the file identified by id and additional query params to the server
*/
@@ -958,8 +927,6 @@ qq.UploadHandlerAbstract.prototype = {
* Actual upload method
*/
_upload: function(id){},
-
- _uploadAll: function(params){},
/**
* Actual cancel method
*/
@@ -1059,12 +1026,6 @@ qq.extend(qq.UploadHandlerForm.prototype, {
return id;
},
- _uploadAll: function(params){
- for (key in this._inputs) {
- this.upload(key, params);
- }
-
- },
_attachLoadEvent: function(iframe, callback){
qq.attach(iframe, 'load', function(){
// when we remove iframe from dom
@@ -1192,21 +1153,10 @@ qq.extend(qq.UploadHandlerXhr.prototype, {
getName: function(id){
var file = this._files[id];
// fix missing name in Safari 4
- var name = document.getElementById(id);
- if (name != null) {
- return name.value;
- } else {
- if (file != null) {
- // fix missing name in Safari 4
- return file.fileName != null ? file.fileName : file.name;
- } else {
- return null;
- }
- }
+ return file.fileName != null ? file.fileName : file.name;
},
getSize: function(id){
var file = this._files[id];
- if (file == null) return null;
return file.fileSize != null ? file.fileSize : file.size;
},
/**
@@ -1223,7 +1173,6 @@ qq.extend(qq.UploadHandlerXhr.prototype, {
var file = this._files[id],
name = this.getName(id),
size = this.getSize(id);
- if (name == null || size == null) return;
this._loaded[id] = 0;
@@ -1254,13 +1203,6 @@ qq.extend(qq.UploadHandlerXhr.prototype, {
xhr.setRequestHeader("Content-Type", "application/octet-stream");
xhr.send(file);
},
-
- _uploadAll: function(params){
- for (key in this._files) {
- this.upload(key, params);
- }
-
- },
_onComplete: function(id, xhr){
// the request was aborted/cancelled
if (!this._files[id]) return;
diff --git a/lib/scripts/fileuploaderextended.js b/lib/scripts/fileuploaderextended.js
new file mode 100644
index 000000000..ba9158ea1
--- /dev/null
+++ b/lib/scripts/fileuploaderextended.js
@@ -0,0 +1,230 @@
+qq.extend(qq.FileUploader.prototype, {
+ _createUploadHandler: function(){
+ var self = this,
+ handlerClass;
+
+ if(qq.UploadHandlerXhr.isSupported()){
+ handlerClass = 'UploadHandlerXhr';
+ //handlerClass = 'UploadHandlerForm';
+ } else {
+ handlerClass = 'UploadHandlerForm';
+ }
+
+ var handler = new qq[handlerClass]({
+ debug: this._options.debug,
+ action: this._options.action,
+ maxConnections: this._options.maxConnections,
+ onProgress: function(id, fileName, loaded, total){
+ self._onProgress(id, fileName, loaded, total);
+ self._options.onProgress(id, fileName, loaded, total);
+ },
+ onComplete: function(id, fileName, result){
+ self._onComplete(id, fileName, result);
+ self._options.onComplete(id, fileName, result);
+ },
+ onCancel: function(id, fileName){
+ self._onCancel(id, fileName);
+ self._options.onCancel(id, fileName);
+ },
+ onUpload: function(){
+ self._onUpload();
+ }
+ });
+
+ return handler;
+ },
+
+ _onUpload: function(){
+ this._handler.uploadAll(this._options.params);
+ },
+
+ _uploadFile: function(fileContainer){
+ var id = this._handler.add(fileContainer);
+ var fileName = this._handler.getName(id);
+
+ if (this._options.onSubmit(id, fileName) !== false){
+ this._onSubmit(id, fileName);
+ }
+ },
+
+ _addToList: function(id, fileName){
+ var item = qq.toElement(this._options.fileTemplate);
+ item.qqFileId = id;
+
+ var fileElement = this._find(item, 'file');
+ qq.setText(fileElement, this._formatFileName(fileName));
+ this._find(item, 'size').style.display = 'none';
+
+ var nameElement = this._find(item, 'nameInput');
+ nameElement.value = this._formatFileName(fileName);
+ nameElement.id = id;
+
+ this._listElement.appendChild(item);
+ }
+
+});
+
+qq.FileUploaderExtended = function(o){
+ // call parent constructor
+ qq.FileUploaderBasic.apply(this, arguments);
+
+ qq.extend(this._options, {
+ element: null,
+ // if set, will be used instead of qq-upload-list in template
+ listElement: null,
+
+ template: '' +
+ '
Drop files here to upload
' +
+ '
Upload a file
' +
+ '
' +
+ '
' +
+ '
',
+
+ // template for one item in file list
+ fileTemplate: '' +
+ '' +
+ '' +
+ '' +
+ '' +
+ 'Cancel' +
+ 'Failed' +
+ '',
+
+ classes: {
+ // used to get elements from templates
+ button: 'qq-upload-button',
+ drop: 'qq-upload-drop-area',
+ dropActive: 'qq-upload-drop-area-active',
+ list: 'qq-upload-list',
+ nameInput: 'qq-upload-name-input',
+ file: 'qq-upload-file',
+
+ spinner: 'qq-upload-spinner',
+ size: 'qq-upload-size',
+ cancel: 'qq-upload-cancel',
+
+ // added to list item when upload completes
+ // used in css to hide progress spinner
+ success: 'qq-upload-success',
+ fail: 'qq-upload-fail'
+ }
+ });
+
+ qq.extend(this._options, o);
+
+ this._element = this._options.element;
+ this._element.innerHTML = this._options.template;
+ this._listElement = this._options.listElement || this._find(this._element, 'list');
+
+ this._classes = this._options.classes;
+
+ this._button = this._createUploadButton(this._find(this._element, 'button'));
+
+ this._bindCancelEvent();
+ this._bindUploadEvent();
+ this._setupDragDrop();
+};
+
+qq.extend(qq.FileUploaderExtended.prototype, qq.FileUploader.prototype);
+
+qq.extend(qq.FileUploaderExtended.prototype, {
+ _bindUploadEvent: function(){
+ var self = this,
+ list = this._listElement;
+
+ qq.attach(document.getElementById('mediamanager__upload_button'), 'click', function(e){
+ e = e || window.event;
+ var target = e.target || e.srcElement;
+ qq.preventDefault(e);
+ self._handler._options.onUpload();
+
+ });
+ }
+
+});
+
+qq.extend(qq.UploadHandlerForm.prototype, {
+ uploadAll: function(params){
+ this._uploadAll(params);
+ },
+
+ _uploadAll: function(params){
+ for (key in this._inputs) {
+ this.upload(key, params);
+ }
+
+ }
+});
+
+qq.extend(qq.UploadHandlerXhr.prototype, {
+ uploadAll: function(params){
+ this._uploadAll(params);
+ },
+
+ getName: function(id){
+ var file = this._files[id];
+ var name = document.getElementById(id);
+ if (name != null) {
+ return name.value;
+ } else {
+ if (file != null) {
+ // fix missing name in Safari 4
+ return file.fileName != null ? file.fileName : file.name;
+ } else {
+ return null;
+ }
+ }
+ },
+
+ getSize: function(id){
+ var file = this._files[id];
+ if (file == null) return null;
+ return file.fileSize != null ? file.fileSize : file.size;
+ },
+
+ _upload: function(id, params){
+ var file = this._files[id],
+ name = this.getName(id),
+ size = this.getSize(id);
+ if (name == null || size == null) return;
+
+ this._loaded[id] = 0;
+
+ var xhr = this._xhrs[id] = new XMLHttpRequest();
+ var self = this;
+
+ xhr.upload.onprogress = function(e){
+ if (e.lengthComputable){
+ self._loaded[id] = e.loaded;
+ self._options.onProgress(id, name, e.loaded, e.total);
+ }
+ };
+
+ xhr.onreadystatechange = function(){
+ if (xhr.readyState == 4){
+ self._onComplete(id, xhr);
+ }
+ };
+
+ // build query string
+ params = params || {};
+ params['qqfile'] = name;
+ var queryString = qq.obj2url(params, this._options.action);
+
+ xhr.open("POST", queryString, true);
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+ xhr.setRequestHeader("X-File-Name", encodeURIComponent(name));
+ xhr.setRequestHeader("Content-Type", "application/octet-stream");
+ xhr.send(file);
+ },
+
+ _uploadAll: function(params){
+ jQuery(".qq-upload-spinner-hidden").each(function (i) {
+ jQuery(this).addClass('qq-upload-spinner');
+ });
+ for (key in this._files) {
+ this.upload(key, params);
+ }
+
+ }
+});
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 26eb43fc3..5ba3b38be 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -950,7 +950,7 @@ function createUploader(){
var params = dw_mediamanager.form_params(jQuery('#dw__upload'))+'&call=mediaupload';
params = getUrlVars(params);
- var uploader = new qq.FileUploader({
+ var uploader = new qq.FileUploaderExtended({
element: document.getElementById('mediamanager__uploader'),
action: DOKU_BASE + 'lib/exe/ajax.php',
params: params
diff --git a/lib/tpl/default/fileuploader.css b/lib/tpl/default/fileuploader.css
index 0e3f111a9..56fcb01ed 100644
--- a/lib/tpl/default/fileuploader.css
+++ b/lib/tpl/default/fileuploader.css
@@ -2,7 +2,7 @@
.qq-upload-button {
display:block; /* or inline-block */
- width: 105px; padding: 7px 0; text-align:center;
+ width: 105px; padding: 7px 0; text-align:center;
background:#880000; border-bottom:1px solid #ddd;color:#fff;
}
.qq-upload-button-hover {background:#cc0000;}
@@ -10,7 +10,7 @@
.qq-upload-drop-area {
position:absolute; top:0; left:0; width:100%; height:100%; min-height: 70px; z-index:2;
- background:#FF9797; text-align:center;
+ background:#FF9797; text-align:center;
}
.qq-upload-drop-area span {
display:block; position:absolute; top: 50%; width:100%; margin-top:-8px; font-size:16px;
@@ -24,7 +24,7 @@
}
.qq-upload-file {}
-.qq-upload-spinner {display:inline-block; background: url("loading.gif"); width:15px; height:15px; vertical-align:text-bottom;}
+.qq-upload-spinner {display:inline-block; background: url("../../images/throbber.gif"); width:15px; height:15px; vertical-align:text-bottom;}
.qq-upload-size,.qq-upload-cancel {font-size:11px;}
.qq-upload-failed-text {display:none;}
--
cgit v1.2.3
From 92c93223d0fce2c5de1f4d3d134be56d1d9f3bc0 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Sun, 7 Aug 2011 15:12:12 +0300
Subject: issue #44 new fileuploader completely replaces the old one
---
lib/scripts/media.js | 59 +++++++++++++++++-----------------------------------
1 file changed, 19 insertions(+), 40 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 5ba3b38be..b4f1c0322 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -69,7 +69,6 @@ var dw_mediamanager = {
jQuery('#mediamanager__form_sort').find('input[type=submit]').hide();
dw_mediamanager.image_diff();
dw_mediamanager.init_ajax_uploader();
- createUploader();
// changing opened tab in the file list panel
jQuery('#mediamanager__layout_list').delegate('#mediamanager__tabs_files a', 'click', dw_mediamanager.list)
@@ -427,7 +426,6 @@ var dw_mediamanager = {
dw_mediamanager.set_filelist_view(dw_mediamanager.view, false);
dw_mediamanager.image_diff();
dw_mediamanager.init_ajax_uploader();
- createUploader();
},
'html'
);
@@ -635,23 +633,27 @@ var dw_mediamanager = {
});
},
+ params_toarray: function (str) {
+ var vars = [], hash;
+ var hashes = str.split('&');
+ for(var i = 0; i < hashes.length; i++) {
+ hash = hashes[i].split('=');
+ vars[hash[0]] = hash[1];
+ }
+ return vars;
+ },
+
init_ajax_uploader: function () {
- var $form = jQuery('#dw__upload');
- if(!$form.length) return;
+ if (!jQuery('#mediamanager__uploader').length) return;
- jQuery(document.createElement('img'))
- .attr('src', DOKU_BASE+'lib/images/multiupload.png')
- .attr('title', LANG.mu_btn)
- .attr('alt', LANG.mu_btn)
- .css('cursor', 'pointer')
- .click(
- function () {
- //$form.html('');
- $form.hide();
- jQuery('#mediamanager__uploader').show();
- }
- )
- .appendTo($form);
+ var params = dw_mediamanager.form_params(jQuery('#dw__upload'))+'&call=mediaupload';
+ params = dw_mediamanager.params_toarray(params);
+
+ var uploader = new qq.FileUploaderExtended({
+ element: document.getElementById('mediamanager__uploader'),
+ action: DOKU_BASE + 'lib/exe/ajax.php',
+ params: params
+ });
},
prepare_content: function ($content) {
@@ -934,29 +936,6 @@ function hasFlash(version){
return ver >= version;
}
-function getUrlVars(str) {
- var vars = [], hash;
- var hashes = str.split('&');
- for(var i = 0; i < hashes.length; i++) {
- hash = hashes[i].split('=');
- vars[hash[0]] = hash[1];
- }
- return vars;
-}
-
-function createUploader(){
- if (!jQuery('#dw__upload').length || !jQuery('#mediamanager__uploader').length) return;
-
- var params = dw_mediamanager.form_params(jQuery('#dw__upload'))+'&call=mediaupload';
- params = getUrlVars(params);
-
- var uploader = new qq.FileUploaderExtended({
- element: document.getElementById('mediamanager__uploader'),
- action: DOKU_BASE + 'lib/exe/ajax.php',
- params: params
- });
-}
-
jQuery(document).ready(function() {
dw_mediamanager.update_resizable();
dw_mediamanager.layout_width = jQuery("#mediamanager__layout").width();
--
cgit v1.2.3
From c73047afecf79721a2ee4d14c618f54259d25b9e Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Sun, 7 Aug 2011 22:11:25 +0300
Subject: issue #44 fileuploader.js semicolon added
---
lib/scripts/fileuploader.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'lib')
diff --git a/lib/scripts/fileuploader.js b/lib/scripts/fileuploader.js
index 5368d9739..e75b8d3a5 100644
--- a/lib/scripts/fileuploader.js
+++ b/lib/scripts/fileuploader.js
@@ -1136,7 +1136,7 @@ qq.UploadHandlerXhr.isSupported = function(){
};
// @inherits qq.UploadHandlerAbstract
-qq.extend(qq.UploadHandlerXhr.prototype, qq.UploadHandlerAbstract.prototype)
+qq.extend(qq.UploadHandlerXhr.prototype, qq.UploadHandlerAbstract.prototype);
qq.extend(qq.UploadHandlerXhr.prototype, {
/**
--
cgit v1.2.3
From f517998ad64483b6394211a971db2d3a660518c6 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Sun, 7 Aug 2011 22:14:10 +0300
Subject: issue #45 browser testing
---
lib/scripts/media.js | 6 ++++++
lib/tpl/default/mediamanager.css | 19 ++++++++++++++-----
2 files changed, 20 insertions(+), 5 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index b4f1c0322..4fc4155b2 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -546,6 +546,12 @@ var dw_mediamanager = {
$select.append(new Option(LANG.media_diff_portions, "portions"));
$label.append($select);
$form.append($label);
+
+ // for IE
+ var select = document.getElementById('mediamanager__difftype');
+ select.options[0].text = LANG.media_diff_both;
+ select.options[1].text = LANG.media_diff_opacity;
+ select.options[2].text = LANG.media_diff_portions;
},
/**
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index 8a42a9e35..bd9efdca1 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -124,6 +124,12 @@
float: right;
}
+* html #mediamanager__sort,
+*+html #mediamanager__sort {
+ position: relative;
+ margin-top: -18px;
+}
+
/* File list */
#mediamanager__file_list {
@@ -159,7 +165,6 @@
*+html .mediamanager-thumbs li {
display: inline;
- height: 130px;
}
.mediamanager-thumbs li .image,
@@ -174,8 +179,8 @@
display: none;
}
-.mediamanager-thumbs li .image div,
-.mediamanager-thumbs li .image0 div {
+.mediamanager-thumbs li .image span,
+.mediamanager-thumbs li .image0 span {
vertical-align: middle;
display: table-cell;
width: 100px;
@@ -188,6 +193,7 @@
.mediamanager-thumbs li .date {
display: block;
overflow: hidden;
+ width: 90px;
white-space: nowrap;
}
@@ -257,8 +263,8 @@
max-height: 16px;
}
-.mediamanager-list li .image div,
-.mediamanager-list li .image1 div {
+.mediamanager-list li .image span,
+.mediamanager-list li .image1 span {
vertical-align: middle;
text-align: center;
display: table-cell;
@@ -348,6 +354,9 @@ form.meta textarea.edit {
* html #mediamanager__diff_table li {
display: inline;
}
+*+html #mediamanager__diff_table li {
+ display: inline;
+}
/* Image diff */
--
cgit v1.2.3
From 6bdff0836f4bc1eee19aa8c30d03ba4bfc876733 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Mon, 8 Aug 2011 19:37:09 +0300
Subject: issue #44 overwrite checkbox added to uploader
---
lib/exe/ajax.php | 9 +++--
lib/scripts/fileuploaderextended.js | 81 +++++++++++++++++++++++++++++++++++++
2 files changed, 86 insertions(+), 4 deletions(-)
(limited to 'lib')
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index 391e951e5..7a4cea360 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -245,7 +245,7 @@ function ajax_mediadiff(){
if ($_REQUEST['image']) $image = cleanID($_REQUEST['image']);
$NS = $_POST['ns'];
$auth = auth_quickaclcheck("$ns:*");
- media_diff($image, $NS, $auth);
+ media_diff($image, $NS, $auth, true);
}
function ajax_mediaupload(){
@@ -259,7 +259,8 @@ function ajax_mediaupload(){
}
if($_FILES['qqfile']['tmp_name']){
- $id = $_FILES['qqfile']['name'];
+ $id = $_REQUEST['file_name'];
+ if (!$id) $id = $_FILES['qqfile']['name'];
$file = $_FILES['qqfile']['tmp_name'];
list($ext,$mime,$dl) = mimetype($id);
@@ -268,7 +269,7 @@ function ajax_mediaupload(){
'mime' => $mime,
'ext' => $ext),
$NS.':'.$id,
- false,
+ $_REQUEST['ow'],
$AUTH,
'move_uploaded_file'
);
@@ -296,7 +297,7 @@ function ajax_mediaupload(){
'mime' => $mime,
'ext' => $ext),
$NS.':'.$id,
- false,
+ (($_REQUEST['ow'] == 'true') ? true : false),
$AUTH,
'copy'
);
diff --git a/lib/scripts/fileuploaderextended.js b/lib/scripts/fileuploaderextended.js
index ba9158ea1..6eaa38ebc 100644
--- a/lib/scripts/fileuploaderextended.js
+++ b/lib/scripts/fileuploaderextended.js
@@ -77,6 +77,7 @@ qq.FileUploaderExtended = function(o){
'Drop files here to upload
' +
'Upload a file
' +
'' +
+ '' +
'' +
'',
@@ -139,6 +140,26 @@ qq.extend(qq.FileUploaderExtended.prototype, {
self._handler._options.onUpload();
});
+ },
+
+ _onComplete: function(id, fileName, result){
+ qq.FileUploaderBasic.prototype._onComplete.apply(this, arguments);
+
+ // mark completed
+ var item = this._getItemByFileId(id);
+ qq.remove(this._find(item, 'cancel'));
+ qq.remove(this._find(item, 'spinner'));
+
+ var nameInput = this._find(item, 'nameInput');
+ var fileElement = this._find(item, 'file');
+ qq.setText(fileElement, nameInput.value);
+ qq.remove(nameInput.parentNode);
+
+ if (result.success){
+ qq.addClass(item, this._classes.success);
+ } else {
+ qq.addClass(item, this._classes.fail);
+ }
}
});
@@ -148,11 +169,70 @@ qq.extend(qq.UploadHandlerForm.prototype, {
this._uploadAll(params);
},
+ getName: function(id){
+ var file = this._inputs[id];
+ var name = document.getElementById(id);
+ if (name != null) {
+ return name.value;
+ } else {
+ if (file != null) {
+ // get input value and remove path to normalize
+ return file.value.replace(/.*(\/|\\)/, "");
+ } else {
+ return null;
+ }
+ }
+ },
+
_uploadAll: function(params){
+ jQuery(".qq-upload-spinner-hidden").each(function (i) {
+ jQuery(this).addClass('qq-upload-spinner');
+ });
for (key in this._inputs) {
this.upload(key, params);
}
+ },
+
+ _upload: function(id, params){
+ var input = this._inputs[id];
+
+ if (!input){
+ throw new Error('file with passed id was not added, or already uploaded or cancelled');
+ }
+
+ var fileName = this.getName(id);
+
+ var iframe = this._createIframe(id);
+ var form = this._createForm(iframe, params);
+ form.appendChild(input);
+
+ var nameInput = qq.toElement('');
+ form.appendChild(nameInput);
+
+ var owCheckbox = document.getElementById('dw__ow').cloneNode(true);
+ form.appendChild(owCheckbox);
+
+ var self = this;
+ this._attachLoadEvent(iframe, function(){
+ self.log('iframe loaded');
+
+ var response = self._getIframeContentJSON(iframe);
+
+ self._options.onComplete(id, fileName, response);
+ self._dequeue(id);
+
+ delete self._inputs[id];
+ // timeout added to fix busy state in FF3.6
+ setTimeout(function(){
+ qq.remove(iframe);
+ }, 1);
+ });
+
+ form.submit();
+ qq.remove(form);
+
+ return id;
}
});
@@ -209,6 +289,7 @@ qq.extend(qq.UploadHandlerXhr.prototype, {
// build query string
params = params || {};
params['qqfile'] = name;
+ params['ow'] = document.getElementById('dw__ow').checked;
var queryString = qq.obj2url(params, this._options.action);
xhr.open("POST", queryString, true);
--
cgit v1.2.3
From 0eca67c2d107d04c48f193b1ff5c84653d064693 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Mon, 8 Aug 2011 19:57:26 +0300
Subject: issue #44 uploader css fix
---
lib/scripts/fileuploaderextended.js | 4 +-
lib/tpl/default/fileuploader.css | 96 ++++++++++++++++++++++++++++++-------
2 files changed, 82 insertions(+), 18 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/fileuploaderextended.js b/lib/scripts/fileuploaderextended.js
index 6eaa38ebc..cbe7304c2 100644
--- a/lib/scripts/fileuploaderextended.js
+++ b/lib/scripts/fileuploaderextended.js
@@ -78,13 +78,13 @@ qq.FileUploaderExtended = function(o){
'Upload a file
' +
'' +
'' +
- '' +
+ '' +
'',
// template for one item in file list
fileTemplate: '' +
'' +
- '' +
+ '' +
'' +
'' +
'Cancel' +
diff --git a/lib/tpl/default/fileuploader.css b/lib/tpl/default/fileuploader.css
index 56fcb01ed..9f5e30dab 100644
--- a/lib/tpl/default/fileuploader.css
+++ b/lib/tpl/default/fileuploader.css
@@ -1,31 +1,95 @@
-.qq-uploader { position:relative; width: 100%;}
+.qq-uploader {
+ position:relative;
+ width: 100%;
+}
.qq-upload-button {
display:block; /* or inline-block */
- width: 105px; padding: 7px 0; text-align:center;
- background:#880000; border-bottom:1px solid #ddd;color:#fff;
+ width: 105px;
+ padding: 7px 0;
+ text-align:center;
+ background:#880000;
+ border-bottom:1px solid #ddd;
+ color:#fff;
+}
+
+.qq-upload-button-hover {
+ background:#cc0000;
+}
+
+.qq-upload-button-focus {
+ outline:1px dotted black;
}
-.qq-upload-button-hover {background:#cc0000;}
-.qq-upload-button-focus {outline:1px dotted black;}
.qq-upload-drop-area {
- position:absolute; top:0; left:0; width:100%; height:100%; min-height: 70px; z-index:2;
- background:#FF9797; text-align:center;
+ position:absolute;
+ top:0;
+ left:0;
+ width:100%;
+ height:100%;
+ min-height: 70px;
+ z-index:2;
+ background:#FF9797;
+ text-align:center;
}
+
.qq-upload-drop-area span {
- display:block; position:absolute; top: 50%; width:100%; margin-top:-8px; font-size:16px;
+ display:block;
+ position:absolute;
+ top: 50%;
+ width:100%;
+ margin-top:-8px;
+ font-size:16px;
+}
+
+.qq-upload-drop-area-active {
+ background:#FF7171;
+}
+
+.qq-upload-list {
+ margin: 15px 35px !important;
+ padding: 0;
+ list-style: disc;
+ margin-top: 10px !important;
+}
+
+.qq-upload-list li {
+ margin: 0;
+ padding: 0;
+ line-height: 15px;
+ font-size: 12px;
+ margin-bottom: 5px;
}
-.qq-upload-drop-area-active {background:#FF7171;}
-.qq-upload-list {margin:15px 35px; padding:0; list-style:disc;}
-.qq-upload-list li { margin:0; padding:0; line-height:15px; font-size:12px;}
.qq-upload-file, .qq-upload-spinner, .qq-upload-size, .qq-upload-cancel, .qq-upload-failed-text {
margin-right: 7px;
}
-.qq-upload-file {}
-.qq-upload-spinner {display:inline-block; background: url("../../images/throbber.gif"); width:15px; height:15px; vertical-align:text-bottom;}
-.qq-upload-size,.qq-upload-cancel {font-size:11px;}
+.qq-upload-spinner {
+ display: inline-block;
+ background: url("../../images/throbber.gif");
+ width: 15px;
+ height: 15px;
+ vertical-align: text-bottom;
+}
+
+.qq-upload-size,.qq-upload-cancel {
+ font-size:11px;
+}
+
+.qq-upload-failed-text {
+ display:none;
+}
+
+.qq-upload-fail .qq-upload-failed-text {
+ display:inline;
+}
+
+.qq-upload-list li .qq-upload-file {
+ display: block;
+ font-weight: bold;
+}
-.qq-upload-failed-text {display:none;}
-.qq-upload-fail .qq-upload-failed-text {display:inline;}
\ No newline at end of file
+.qq-upload-list li .qq-upload-cancel {
+ padding-left: 10px;
+}
\ No newline at end of file
--
cgit v1.2.3
From 2d6cc64fdb73879f54aa25b2122f36631c654e3c Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Fri, 12 Aug 2011 12:50:34 +0300
Subject: issue #44, #52 media_upload reused, error handling
---
lib/exe/ajax.php | 63 +++++++------------------------------
lib/scripts/fileuploaderextended.js | 9 ++++--
2 files changed, 17 insertions(+), 55 deletions(-)
(limited to 'lib')
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index 7a4cea360..aa07fe7b0 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -249,65 +249,24 @@ function ajax_mediadiff(){
}
function ajax_mediaupload(){
- global $NS;
+ global $NS, $MSG;
+
$NS = $_REQUEST['ns'];
$AUTH = auth_quickaclcheck("$NS:*");
if($AUTH >= AUTH_UPLOAD) { io_createNamespace("$NS:xxx", 'media'); }
- if($_FILES['qqfile']['error']){
- unset($_FILES['qqfile']);
- }
-
- if($_FILES['qqfile']['tmp_name']){
- $id = $_REQUEST['file_name'];
- if (!$id) $id = $_FILES['qqfile']['name'];
- $file = $_FILES['qqfile']['tmp_name'];
- list($ext,$mime,$dl) = mimetype($id);
-
- $res = media_save(
- array('name' => $file,
- 'mime' => $mime,
- 'ext' => $ext),
- $NS.':'.$id,
- $_REQUEST['ow'],
- $AUTH,
- 'move_uploaded_file'
- );
- if (!is_array($res)) {
- $result = array('success'=>true);
- }
- }
+ if ($_FILES['qqfile']['error']) unset($_FILES['qqfile']);
+ if ($_FILES['qqfile']['tmp_name']) $res = media_upload($NS, $AUTH, $_FILES['qqfile']);
+ if (isset($_GET['qqfile'])) $res = media_upload_xhr($NS, $AUTH);
+ if ($res) $result = array('success'=>true);
- if (isset($_GET['qqfile'])) {
- $id = $_GET['qqfile'];
- list($ext,$mime,$dl) = mimetype($id);
- $input = fopen("php://input", "r");
- $temp = tmpfile();
- $realSize = stream_copy_to_stream($input, $temp);
- fclose($input);
- if ($realSize != (int)$_SERVER["CONTENT_LENGTH"]) return false;
- if (!($tmp = io_mktmpdir())) return false;
- $path = $tmp.'/'.$id;
- $target = fopen($path, "w");
- fseek($temp, 0, SEEK_SET);
- stream_copy_to_stream($temp, $target);
- fclose($target);
- $res = media_save(
- array('name' => $path,
- 'mime' => $mime,
- 'ext' => $ext),
- $NS.':'.$id,
- (($_REQUEST['ow'] == 'true') ? true : false),
- $AUTH,
- 'copy'
- );
- unlink($path);
- if ($tmp) dir_delete($tmp);
- if (!is_array($res)) {
- $result = array('success'=>true);
+ if (!$result) {
+ $error = '';
+ if (isset($MSG)) {
+ foreach($MSG as $msg) $error .= $msg['msg'];
}
+ $result = array('error'=> $msg['msg']);
}
- if (!$result) $result = array('error'=> 'Could not save uploaded file.');
echo htmlspecialchars(json_encode($result), ENT_NOQUOTES);
}
diff --git a/lib/scripts/fileuploaderextended.js b/lib/scripts/fileuploaderextended.js
index cbe7304c2..fd2104e8e 100644
--- a/lib/scripts/fileuploaderextended.js
+++ b/lib/scripts/fileuploaderextended.js
@@ -107,7 +107,8 @@ qq.FileUploaderExtended = function(o){
// added to list item when upload completes
// used in css to hide progress spinner
success: 'qq-upload-success',
- fail: 'qq-upload-fail'
+ fail: 'qq-upload-fail',
+ failedText : 'qq-upload-failed-text'
}
});
@@ -143,7 +144,7 @@ qq.extend(qq.FileUploaderExtended.prototype, {
},
_onComplete: function(id, fileName, result){
- qq.FileUploaderBasic.prototype._onComplete.apply(this, arguments);
+ this._filesInProgress--;
// mark completed
var item = this._getItemByFileId(id);
@@ -159,6 +160,8 @@ qq.extend(qq.FileUploaderExtended.prototype, {
qq.addClass(item, this._classes.success);
} else {
qq.addClass(item, this._classes.fail);
+ var fail = this._find(item, 'failedText');
+ qq.setText(fail, result.error);
}
}
@@ -207,7 +210,7 @@ qq.extend(qq.UploadHandlerForm.prototype, {
var form = this._createForm(iframe, params);
form.appendChild(input);
- var nameInput = qq.toElement('');
+ var nameInput = qq.toElement('');
form.appendChild(nameInput);
var owCheckbox = document.getElementById('dw__ow').cloneNode(true);
--
cgit v1.2.3
From 44d638d049d687159666813023108e0fa9f32181 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Fri, 12 Aug 2011 14:18:03 +0300
Subject: issue #50 partly styling the new uploader
---
lib/scripts/fileuploaderextended.js | 21 ++++++++++++---------
lib/tpl/default/fileuploader.css | 10 ++++++++--
2 files changed, 20 insertions(+), 11 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/fileuploaderextended.js b/lib/scripts/fileuploaderextended.js
index fd2104e8e..822c32958 100644
--- a/lib/scripts/fileuploaderextended.js
+++ b/lib/scripts/fileuploaderextended.js
@@ -74,20 +74,20 @@ qq.FileUploaderExtended = function(o){
listElement: null,
template: '' +
- '
Drop files here to upload
' +
- '
Upload a file
' +
+ '
' + LANG.media_drop + '
' +
+ '
' + LANG.media_select + '
' +
'
' +
- '
' +
- '
' +
+ '
' +
+ '
' +
'
',
// template for one item in file list
fileTemplate: '' +
- '' +
- '' +
+ '' +
+ '' +
'' +
'' +
- 'Cancel' +
+ '' + LANG.media_cancel + '' +
'Failed' +
'',
@@ -154,14 +154,17 @@ qq.extend(qq.FileUploaderExtended.prototype, {
var nameInput = this._find(item, 'nameInput');
var fileElement = this._find(item, 'file');
qq.setText(fileElement, nameInput.value);
- qq.remove(nameInput.parentNode);
+ qq.removeClass(fileElement, 'qq-upload-file-hidden');
+ qq.remove(nameInput);
+ jQuery('.qq-upload-button, #mediamanager__upload_button').remove();
+ jQuery('#dw__ow').parent().remove();
if (result.success){
qq.addClass(item, this._classes.success);
} else {
qq.addClass(item, this._classes.fail);
var fail = this._find(item, 'failedText');
- qq.setText(fail, result.error);
+ if (result.error) qq.setText(fail, result.error);
}
}
diff --git a/lib/tpl/default/fileuploader.css b/lib/tpl/default/fileuploader.css
index 9f5e30dab..bf187d3c0 100644
--- a/lib/tpl/default/fileuploader.css
+++ b/lib/tpl/default/fileuploader.css
@@ -47,10 +47,12 @@
}
.qq-upload-list {
- margin: 15px 35px !important;
+ margin: 0 !important;
padding: 0;
- list-style: disc;
+ list-style: none !important;
margin-top: 10px !important;
+ margin-bottom: 10px !important;
+ color: black !important;
}
.qq-upload-list li {
@@ -90,6 +92,10 @@
font-weight: bold;
}
+.qq-upload-file-hidden {
+ display:none !important;
+}
+
.qq-upload-list li .qq-upload-cancel {
padding-left: 10px;
}
\ No newline at end of file
--
cgit v1.2.3
From e9eba4b18be81444014e59c83ee6c5cf004a7ad7 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Fri, 12 Aug 2011 17:04:27 +0300
Subject: issue #51 link from detail view to fullscreen manager
---
lib/tpl/default/detail.php | 7 +++++++
1 file changed, 7 insertions(+)
(limited to 'lib')
diff --git a/lib/tpl/default/detail.php b/lib/tpl/default/detail.php
index f7bb37a25..84b659176 100644
--- a/lib/tpl/default/detail.php
+++ b/lib/tpl/default/detail.php
@@ -49,6 +49,13 @@ if (!defined('DOKU_INC')) die();
←
+ = AUTH_UPLOAD) {
+ echo ''.$lang['img_manager'].'';
+ }
+ ?>
Date: Mon, 15 Aug 2011 14:22:19 +0300
Subject: issue #50 styling the new uploader
---
lib/exe/ajax.php | 17 +++++--
lib/scripts/fileuploaderextended.js | 18 +++++---
lib/scripts/media.js | 5 +-
lib/tpl/default/_fileuploader.css | 91 +++++++++++++++++++++++++++++++++++++
lib/tpl/default/style.ini | 2 +-
5 files changed, 121 insertions(+), 12 deletions(-)
create mode 100644 lib/tpl/default/_fileuploader.css
(limited to 'lib')
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index aa07fe7b0..52131d864 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -256,16 +256,25 @@ function ajax_mediaupload(){
if($AUTH >= AUTH_UPLOAD) { io_createNamespace("$NS:xxx", 'media'); }
if ($_FILES['qqfile']['error']) unset($_FILES['qqfile']);
- if ($_FILES['qqfile']['tmp_name']) $res = media_upload($NS, $AUTH, $_FILES['qqfile']);
- if (isset($_GET['qqfile'])) $res = media_upload_xhr($NS, $AUTH);
- if ($res) $result = array('success'=>true);
+
+ if ($_FILES['qqfile']['tmp_name']) {
+ $res = media_upload($NS, $AUTH, $_FILES['qqfile']);
+ $id = ((empty($_POST['mediaid'])) ? $_FILES['qqfile']['name'] : $_POST['mediaid']);
+ }
+ if (isset($_GET['qqfile'])) {
+ $res = media_upload_xhr($NS, $AUTH);
+ $id = $_GET['qqfile'];
+ }
+
+ if ($res) $result = array('success' => true,
+ 'link' => media_managerURL(array('ns' => getNS($id), 'image' => $id), '&'));
if (!$result) {
$error = '';
if (isset($MSG)) {
foreach($MSG as $msg) $error .= $msg['msg'];
}
- $result = array('error'=> $msg['msg']);
+ $result = array('error' => $msg['msg']);
}
echo htmlspecialchars(json_encode($result), ENT_NOQUOTES);
}
diff --git a/lib/scripts/fileuploaderextended.js b/lib/scripts/fileuploaderextended.js
index 822c32958..de0bdaa3d 100644
--- a/lib/scripts/fileuploaderextended.js
+++ b/lib/scripts/fileuploaderextended.js
@@ -52,11 +52,11 @@ qq.extend(qq.FileUploader.prototype, {
item.qqFileId = id;
var fileElement = this._find(item, 'file');
- qq.setText(fileElement, this._formatFileName(fileName));
+ qq.setText(fileElement, fileName);
this._find(item, 'size').style.display = 'none';
var nameElement = this._find(item, 'nameInput');
- nameElement.value = this._formatFileName(fileName);
+ nameElement.value = fileName;
nameElement.id = id;
this._listElement.appendChild(item);
@@ -76,20 +76,20 @@ qq.FileUploaderExtended = function(o){
template: '' +
'
' + LANG.media_drop + '
' +
'
' + LANG.media_select + '
' +
- '
' +
+ '
' +
'
' +
'
' +
'
',
// template for one item in file list
- fileTemplate: '
' +
+ fileTemplate: '',
classes: {
// used to get elements from templates
@@ -140,6 +140,9 @@ qq.extend(qq.FileUploaderExtended.prototype, {
qq.preventDefault(e);
self._handler._options.onUpload();
+ jQuery(".qq-upload-name-input").each(function (i) {
+ jQuery(this).attr('disabled', 'disabled');
+ });
});
},
@@ -157,10 +160,13 @@ qq.extend(qq.FileUploaderExtended.prototype, {
qq.removeClass(fileElement, 'qq-upload-file-hidden');
qq.remove(nameInput);
jQuery('.qq-upload-button, #mediamanager__upload_button').remove();
- jQuery('#dw__ow').parent().remove();
+ jQuery('#dw__ow').parent().hide();
if (result.success){
qq.addClass(item, this._classes.success);
+ $link = '' + nameInput.value + '';
+ jQuery(fileElement).html($link);
+
} else {
qq.addClass(item, this._classes.fail);
var fail = this._find(item, 'failedText');
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 4fc4155b2..c1ff1f451 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -81,7 +81,9 @@ var dw_mediamanager = {
// "upload as" field autofill
.delegate('#upload__file', 'change', dw_mediamanager.suggest)
// sort type selection
- .delegate('#mediamanager__form_sort select', 'change', dw_mediamanager.list);
+ .delegate('#mediamanager__form_sort select', 'change', dw_mediamanager.list)
+ // uploaded images
+ .delegate('.qq-upload-file a', 'click', dw_mediamanager.details);
// changing opened tab in the file details panel
jQuery('#mediamanager__layout_detail').delegate('#mediamanager__tabs_details a', 'click', dw_mediamanager.details)
@@ -651,6 +653,7 @@ var dw_mediamanager = {
init_ajax_uploader: function () {
if (!jQuery('#mediamanager__uploader').length) return;
+ if (jQuery('.qq-upload-list').length) return;
var params = dw_mediamanager.form_params(jQuery('#dw__upload'))+'&call=mediaupload';
params = dw_mediamanager.params_toarray(params);
diff --git a/lib/tpl/default/_fileuploader.css b/lib/tpl/default/_fileuploader.css
new file mode 100644
index 000000000..07f3158a1
--- /dev/null
+++ b/lib/tpl/default/_fileuploader.css
@@ -0,0 +1,91 @@
+.qq-uploader {
+ position: relative;
+ width: 100%;
+}
+
+.qq-upload-button {
+ display: block;
+ width: 115px;
+ padding: 7px 0;
+ text-align: center;
+ background: __background_alt__;
+ border: 1px solid __border__;
+ color: __extern__;
+ font-weight: bold;
+ margin-bottom: 5px;
+}
+
+.qq-upload-button-hover {
+ background: __border__;
+ color: __background__;
+}
+
+.qq-upload-button-focus {
+ outline: 1px dotted black;
+}
+
+.qq-upload-drop-area {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ min-height: 70px;
+ z-index: 2;
+ background: __background_neu__;
+ text-align: center;
+}
+
+.qq-upload-drop-area span {
+ display:block;
+ position:absolute;
+ top: 50%;
+ width:100%;
+ margin-top:-8px;
+ font-size:16px;
+}
+
+.qq-upload-drop-area-active {
+ background: #DADADA;
+}
+
+.qq-upload-file, .qq-upload-spinner, .qq-upload-size, .qq-upload-cancel, .qq-upload-failed-text {
+ margin-right: 7px;
+}
+
+.qq-upload-spinner {
+ display: inline-block;
+ background: url("../../images/throbber.gif");
+ width: 15px;
+ height: 15px;
+ vertical-align: text-bottom;
+}
+
+.qq-upload-size,.qq-upload-cancel {
+ font-size:11px;
+}
+
+.qq-upload-failed-text {
+ display:none;
+}
+
+.qq-upload-fail .qq-upload-failed-text {
+ display:inline;
+}
+
+.qq-upload-file {
+ display: block;
+ font-weight: bold;
+}
+
+.qq-upload-file-hidden {
+ display:none;
+}
+
+.qq-upload-cancel {
+ padding-left: 10px;
+}
+
+.qq-uploader #dw__ow {
+ margin: 10px 0;
+}
diff --git a/lib/tpl/default/style.ini b/lib/tpl/default/style.ini
index e12ddbf57..05914012e 100644
--- a/lib/tpl/default/style.ini
+++ b/lib/tpl/default/style.ini
@@ -16,7 +16,7 @@ _admin.css = screen
_linkwiz.css = screen
_subscription.css = screen
mediamanager.css = screen
-fileuploader.css = screen
+_fileuploader.css = screen
rtl.css = rtl
print.css = print
--
cgit v1.2.3
From 5b9353fa4e818ffe50c9fbc1094b01fe30b96758 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Mon, 15 Aug 2011 16:29:14 +0300
Subject: mediamanager html bug fixes
---
lib/scripts/fileuploaderextended.js | 6 +++---
lib/tpl/default/mediamanager.css | 6 +++---
2 files changed, 6 insertions(+), 6 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/fileuploaderextended.js b/lib/scripts/fileuploaderextended.js
index de0bdaa3d..60a3427a8 100644
--- a/lib/scripts/fileuploaderextended.js
+++ b/lib/scripts/fileuploaderextended.js
@@ -57,7 +57,7 @@ qq.extend(qq.FileUploader.prototype, {
var nameElement = this._find(item, 'nameInput');
nameElement.value = fileName;
- nameElement.id = id;
+ nameElement.id = 'mediamanager__upload_item'+id;
this._listElement.appendChild(item);
}
@@ -183,7 +183,7 @@ qq.extend(qq.UploadHandlerForm.prototype, {
getName: function(id){
var file = this._inputs[id];
- var name = document.getElementById(id);
+ var name = document.getElementById('mediamanager__upload_item'+id);
if (name != null) {
return name.value;
} else {
@@ -255,7 +255,7 @@ qq.extend(qq.UploadHandlerXhr.prototype, {
getName: function(id){
var file = this._files[id];
- var name = document.getElementById(id);
+ var name = document.getElementById('mediamanager__upload_item'+id);
if (name != null) {
return name.value;
} else {
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index bd9efdca1..f6ad721e0 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -291,13 +291,13 @@
/* File preview */
-#mediamanager__preview,
-#mediamanager__preview_buttons {
+.mediamanager__preview,
+.mediamanager__preview_buttons {
text-align: center;
margin-bottom: 5px;
}
-#mediamanager__preview img {
+.mediamanager__preview img {
width: 99%;
}
--
cgit v1.2.3
From 32140a507cf5c3ab86367689ea9aa25063463e5a Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Mon, 15 Aug 2011 18:16:43 +0300
Subject: old fileuploader.css deleted
---
lib/tpl/default/fileuploader.css | 101 ---------------------------------------
1 file changed, 101 deletions(-)
delete mode 100644 lib/tpl/default/fileuploader.css
(limited to 'lib')
diff --git a/lib/tpl/default/fileuploader.css b/lib/tpl/default/fileuploader.css
deleted file mode 100644
index bf187d3c0..000000000
--- a/lib/tpl/default/fileuploader.css
+++ /dev/null
@@ -1,101 +0,0 @@
-.qq-uploader {
- position:relative;
- width: 100%;
-}
-
-.qq-upload-button {
- display:block; /* or inline-block */
- width: 105px;
- padding: 7px 0;
- text-align:center;
- background:#880000;
- border-bottom:1px solid #ddd;
- color:#fff;
-}
-
-.qq-upload-button-hover {
- background:#cc0000;
-}
-
-.qq-upload-button-focus {
- outline:1px dotted black;
-}
-
-.qq-upload-drop-area {
- position:absolute;
- top:0;
- left:0;
- width:100%;
- height:100%;
- min-height: 70px;
- z-index:2;
- background:#FF9797;
- text-align:center;
-}
-
-.qq-upload-drop-area span {
- display:block;
- position:absolute;
- top: 50%;
- width:100%;
- margin-top:-8px;
- font-size:16px;
-}
-
-.qq-upload-drop-area-active {
- background:#FF7171;
-}
-
-.qq-upload-list {
- margin: 0 !important;
- padding: 0;
- list-style: none !important;
- margin-top: 10px !important;
- margin-bottom: 10px !important;
- color: black !important;
-}
-
-.qq-upload-list li {
- margin: 0;
- padding: 0;
- line-height: 15px;
- font-size: 12px;
- margin-bottom: 5px;
-}
-
-.qq-upload-file, .qq-upload-spinner, .qq-upload-size, .qq-upload-cancel, .qq-upload-failed-text {
- margin-right: 7px;
-}
-
-.qq-upload-spinner {
- display: inline-block;
- background: url("../../images/throbber.gif");
- width: 15px;
- height: 15px;
- vertical-align: text-bottom;
-}
-
-.qq-upload-size,.qq-upload-cancel {
- font-size:11px;
-}
-
-.qq-upload-failed-text {
- display:none;
-}
-
-.qq-upload-fail .qq-upload-failed-text {
- display:inline;
-}
-
-.qq-upload-list li .qq-upload-file {
- display: block;
- font-weight: bold;
-}
-
-.qq-upload-file-hidden {
- display:none !important;
-}
-
-.qq-upload-list li .qq-upload-cancel {
- padding-left: 10px;
-}
\ No newline at end of file
--
cgit v1.2.3
From 7e6b49bbbfd05509233484c1cddc2352e9246b94 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Mon, 15 Aug 2011 19:30:48 +0300
Subject: media revisions form less/more recent buttons fix
---
lib/scripts/media.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index c1ff1f451..d5fdf1fdb 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -97,7 +97,9 @@ var dw_mediamanager = {
// delete button
.delegate('#mediamanager__btn_delete', 'submit', dw_mediamanager.details)
// "restore this version" button
- .delegate('#mediamanager__btn_restore', 'submit', dw_mediamanager.details);
+ .delegate('#mediamanager__btn_restore', 'submit', dw_mediamanager.details)
+ // less/more recent buttons in media revisions form
+ .delegate('.btn_newer, .btn_older', 'submit', dw_mediamanager.details);
},
--
cgit v1.2.3
From d1bde35aad17baac31ecd72079da42112288bbb5 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Thu, 18 Aug 2011 15:00:49 +0300
Subject: issue #51 detail.php p tag fixed
---
lib/tpl/default/detail.php | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
(limited to 'lib')
diff --git a/lib/tpl/default/detail.php b/lib/tpl/default/detail.php
index 84b659176..503c0ef71 100644
--- a/lib/tpl/default/detail.php
+++ b/lib/tpl/default/detail.php
@@ -49,13 +49,13 @@ if (!defined('DOKU_INC')) die();
←
- = AUTH_UPLOAD) {
- echo ''.$lang['img_manager'].'';
+ echo '
'.$lang['img_manager'].'
';
}
- ?>
+ ?>
Date: Thu, 18 Aug 2011 15:03:33 +0300
Subject: issue #50 styling uploader
---
lib/scripts/fileuploaderextended.js | 5 ++++-
lib/tpl/default/_fileuploader.css | 11 ++++++++++-
2 files changed, 14 insertions(+), 2 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/fileuploaderextended.js b/lib/scripts/fileuploaderextended.js
index 60a3427a8..36fc3ec63 100644
--- a/lib/scripts/fileuploaderextended.js
+++ b/lib/scripts/fileuploaderextended.js
@@ -56,6 +56,8 @@ qq.extend(qq.FileUploader.prototype, {
this._find(item, 'size').style.display = 'none';
var nameElement = this._find(item, 'nameInput');
+ fileName = fileName.toLowerCase();
+ fileName = fileName.replace(/([^a-z0-9_\.\-]+)/g, '_');
nameElement.value = fileName;
nameElement.id = 'mediamanager__upload_item'+id;
@@ -77,8 +79,9 @@ qq.FileUploaderExtended = function(o){
'' + LANG.media_drop + '
' +
'' + LANG.media_select + '
' +
'' +
+ '' +
'',
// template for one item in file list
diff --git a/lib/tpl/default/_fileuploader.css b/lib/tpl/default/_fileuploader.css
index 07f3158a1..e87ba94db 100644
--- a/lib/tpl/default/_fileuploader.css
+++ b/lib/tpl/default/_fileuploader.css
@@ -87,5 +87,14 @@
}
.qq-uploader #dw__ow {
- margin: 10px 0;
+ margin: 10px 3px -5px 10px;
}
+
+.qq-uploader .check {
+ line-height: 18px;
+}
+
+.qq-uploader #mediamanager__upload_button {
+ margin-top: -5px;
+ margin-bottom: 10px;
+}
\ No newline at end of file
--
cgit v1.2.3
From 96a7ba82ad21ad7bd7cd5f677d85042da7733605 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Fri, 19 Aug 2011 18:48:19 +0300
Subject: issue #56 ajax deleting images
---
lib/scripts/media.js | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index d5fdf1fdb..36dadf232 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -396,21 +396,11 @@ var dw_mediamanager = {
params = dw_mediamanager.form_params($link.parents('form'))+'&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('
');
-
- dw_mediamanager.update_content($content1, params1);
- }
+ dw_mediamanager.update_content($content, params, update_list);
},
- update_content: function ($content, params) {
+ update_content: function ($content, params, update_list) {
jQuery.post(
DOKU_BASE + 'lib/exe/ajax.php',
params,
@@ -430,6 +420,16 @@ var dw_mediamanager = {
dw_mediamanager.set_filelist_view(dw_mediamanager.view, false);
dw_mediamanager.image_diff();
dw_mediamanager.init_ajax_uploader();
+
+ 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('
');
+
+ dw_mediamanager.update_content($content1, params1);
+ }
},
'html'
);
--
cgit v1.2.3
From c472bad9de398442c30ec1410d07284f0db8b821 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Fri, 19 Aug 2011 20:56:43 +0300
Subject: issue #44 new uploader in the media popup
---
lib/exe/ajax.php | 4 +++-
lib/scripts/fileuploaderextended.js | 8 +++++++-
lib/scripts/media.js | 4 ++--
lib/tpl/default/_fileuploader.css | 32 +++++++++++++++++---------------
lib/tpl/default/media.css | 5 +++++
lib/tpl/default/mediamanager.css | 7 ++++++-
6 files changed, 40 insertions(+), 20 deletions(-)
(limited to 'lib')
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index 52131d864..d8754b875 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -265,9 +265,11 @@ function ajax_mediaupload(){
$res = media_upload_xhr($NS, $AUTH);
$id = $_GET['qqfile'];
}
+ $id = cleanID($id, false, true);
if ($res) $result = array('success' => true,
- 'link' => media_managerURL(array('ns' => getNS($id), 'image' => $id), '&'));
+ 'link' => media_managerURL(array('ns' => getNS($id), 'image' => $id), '&'),
+ 'id' => $id);
if (!$result) {
$error = '';
diff --git a/lib/scripts/fileuploaderextended.js b/lib/scripts/fileuploaderextended.js
index 36fc3ec63..f4a3219bb 100644
--- a/lib/scripts/fileuploaderextended.js
+++ b/lib/scripts/fileuploaderextended.js
@@ -167,7 +167,7 @@ qq.extend(qq.FileUploaderExtended.prototype, {
if (result.success){
qq.addClass(item, this._classes.success);
- $link = '' + nameInput.value + '';
+ $link = '' + nameInput.value + '';
jQuery(fileElement).html($link);
} else {
@@ -175,6 +175,12 @@ qq.extend(qq.FileUploaderExtended.prototype, {
var fail = this._find(item, 'failedText');
if (result.error) qq.setText(fail, result.error);
}
+
+ if (document.getElementById('media__content') && !document.getElementById('mediamanager__done_form')) {
+ var button = ''
+ jQuery('#mediamanager__uploader').append(button);
+ }
}
});
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 36dadf232..997321a65 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -43,7 +43,8 @@ var dw_mediamanager = {
.delegate('a.select', 'click', dw_mediamanager.select)
// Attach deletion confirmation dialog to the delete buttons
.delegate('#media__content a.btn_media_delete', 'click',
- dw_mediamanager.confirmattach);
+ dw_mediamanager.confirmattach)
+ .delegate('#mediamanager__done_form', 'submit', dw_mediamanager.list);
$tree.dw_tree({toggle_selector: 'img',
load_data: function (show_sublist, $clicky) {
@@ -670,7 +671,6 @@ var dw_mediamanager = {
prepare_content: function ($content) {
// hide syntax example
$content.find('div.example:visible').hide();
- dw_mediamanager.initFlashUpload();
},
/**
diff --git a/lib/tpl/default/_fileuploader.css b/lib/tpl/default/_fileuploader.css
index e87ba94db..0e53f8187 100644
--- a/lib/tpl/default/_fileuploader.css
+++ b/lib/tpl/default/_fileuploader.css
@@ -4,20 +4,18 @@
}
.qq-upload-button {
- display: block;
- width: 115px;
- padding: 7px 0;
- text-align: center;
- background: __background_alt__;
+ display: inline-block;
border: 1px solid __border__;
- color: __extern__;
- font-weight: bold;
+ color: __text__;
+ background-color: __background__;
+ vertical-align: middle;
+ text-decoration: none;
+ font-size: 100%;
+ cursor: pointer;
+ margin: 1px;
margin-bottom: 5px;
-}
-
-.qq-upload-button-hover {
- background: __border__;
- color: __background__;
+ padding: 0.125em 0.4em;
+ background: __background__ url(images/buttonshadow.png) repeat-x bottom;
}
.qq-upload-button-focus {
@@ -42,11 +40,11 @@
top: 50%;
width:100%;
margin-top:-8px;
- font-size:16px;
+ font-size: 120%;
}
.qq-upload-drop-area-active {
- background: #DADADA;
+ background: __background_alt__;
}
.qq-upload-file, .qq-upload-spinner, .qq-upload-size, .qq-upload-cancel, .qq-upload-failed-text {
@@ -62,7 +60,7 @@
}
.qq-upload-size,.qq-upload-cancel {
- font-size:11px;
+ font-size: 85%;
}
.qq-upload-failed-text {
@@ -97,4 +95,8 @@
.qq-uploader #mediamanager__upload_button {
margin-top: -5px;
margin-bottom: 10px;
+}
+
+.qq-uploader div.li {
+ margin-bottom: 5px;
}
\ No newline at end of file
diff --git a/lib/tpl/default/media.css b/lib/tpl/default/media.css
index 7b558a80b..b325a1ef6 100644
--- a/lib/tpl/default/media.css
+++ b/lib/tpl/default/media.css
@@ -151,6 +151,11 @@ it's dirty, so any "real" fixes are welcome */
border-bottom: solid 1px __border__;
padding: 0 0.5em 1em 0.5em;
}
+
+#media__content form#dw__upload {
+ border-bottom: 0;
+}
+
#media__content form#dw__upload fieldset {
padding: 0;
margin: 0;
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index f6ad721e0..ad371ee3d 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -289,6 +289,11 @@
padding-bottom: 0.5em;
}
+#media__content #mediamanager__uploader {
+ border-bottom: 1px solid #8CACBB;
+ padding-bottom: 0.5em;
+}
+
/* File preview */
.mediamanager__preview,
@@ -318,7 +323,7 @@ form.meta textarea.edit {
}
#mediamanager__details #page__revisions ul li div.li div {
- font-size: 12px;
+ font-size: 90%;
color: __text_neu__;
padding-left: 18px;
}
--
cgit v1.2.3
From 10799f9c522a9847ebf5f2f7c91d4af7f160e4b8 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Fri, 19 Aug 2011 21:11:04 +0300
Subject: issue #44 removing drop-area after upload
---
lib/scripts/fileuploaderextended.js | 1 +
1 file changed, 1 insertion(+)
(limited to 'lib')
diff --git a/lib/scripts/fileuploaderextended.js b/lib/scripts/fileuploaderextended.js
index f4a3219bb..005268bbb 100644
--- a/lib/scripts/fileuploaderextended.js
+++ b/lib/scripts/fileuploaderextended.js
@@ -164,6 +164,7 @@ qq.extend(qq.FileUploaderExtended.prototype, {
qq.remove(nameInput);
jQuery('.qq-upload-button, #mediamanager__upload_button').remove();
jQuery('#dw__ow').parent().hide();
+ jQuery('.qq-upload-drop-area').remove();
if (result.success){
qq.addClass(item, this._classes.success);
--
cgit v1.2.3
From b838050e5828b5cbf32b9e82ce11c9cc54592809 Mon Sep 17 00:00:00 2001
From: Piyush Mishra
Date: Sat, 20 Aug 2011 19:11:52 +0530
Subject: added new plugins config cascade and added plugin.info.txt
---
lib/plugins/acl/admin.php | 14 --------------
lib/plugins/acl/plugin.info.txt | 6 ++++++
lib/plugins/config/admin.php | 15 ---------------
lib/plugins/config/plugin.info.txt | 6 ++++++
lib/plugins/info/plugin.info.txt | 6 ++++++
lib/plugins/revert/admin.php | 14 --------------
lib/plugins/revert/plugin.info.txt | 6 ++++++
lib/plugins/usermanager/admin.php | 14 --------------
lib/plugins/usermanager/plugin.info.txt | 6 ++++++
9 files changed, 30 insertions(+), 57 deletions(-)
create mode 100644 lib/plugins/acl/plugin.info.txt
create mode 100644 lib/plugins/config/plugin.info.txt
create mode 100644 lib/plugins/info/plugin.info.txt
create mode 100644 lib/plugins/revert/plugin.info.txt
create mode 100644 lib/plugins/usermanager/plugin.info.txt
(limited to 'lib')
diff --git a/lib/plugins/acl/admin.php b/lib/plugins/acl/admin.php
index 53f6db0cc..a6b0624bc 100644
--- a/lib/plugins/acl/admin.php
+++ b/lib/plugins/acl/admin.php
@@ -30,20 +30,6 @@ class admin_plugin_acl extends DokuWiki_Admin_Plugin {
var $usersgroups = array();
var $specials = array();
- /**
- * return some info
- */
- function getInfo(){
- return array(
- 'author' => 'Andreas Gohr',
- 'email' => 'andi@splitbrain.org',
- 'date' => '2011-04-16',
- 'name' => 'ACL Manager',
- 'desc' => 'Manage Page Access Control Lists',
- 'url' => 'http://dokuwiki.org/plugin:acl',
- );
- }
-
/**
* return prompt for admin menu
*/
diff --git a/lib/plugins/acl/plugin.info.txt b/lib/plugins/acl/plugin.info.txt
new file mode 100644
index 000000000..f108a2390
--- /dev/null
+++ b/lib/plugins/acl/plugin.info.txt
@@ -0,0 +1,6 @@
+author Andreas Gohr
+email andi@splitbrain.org
+date 2011-04-16
+name ACL Manager
+desc Manage Page Access Control Lists
+url http://dokuwiki.org/plugin:acl
diff --git a/lib/plugins/config/admin.php b/lib/plugins/config/admin.php
index e24f3b87b..64906171d 100644
--- a/lib/plugins/config/admin.php
+++ b/lib/plugins/config/admin.php
@@ -32,21 +32,6 @@ class admin_plugin_config extends DokuWiki_Admin_Plugin {
var $_session_started = false;
var $_localised_prompts = false;
- /**
- * return some info
- */
- function getInfo(){
-
- return array(
- 'author' => 'Christopher Smith',
- 'email' => 'chris@jalakai.co.uk',
- 'date' => '2007-08-05',
- 'name' => 'Configuration Manager',
- 'desc' => "Manage Dokuwiki's Configuration Settings",
- 'url' => 'http://dokuwiki.org/plugin:config',
- );
- }
-
function getMenuSort() { return 100; }
/**
diff --git a/lib/plugins/config/plugin.info.txt b/lib/plugins/config/plugin.info.txt
new file mode 100644
index 000000000..ace4889b6
--- /dev/null
+++ b/lib/plugins/config/plugin.info.txt
@@ -0,0 +1,6 @@
+author Christopher Smith
+email chris@jalakai.co.uk
+date 2007-08-05
+name Configuration Manager
+desc Manage Dokuwiki's Configuration Settings
+url http://dokuwiki.org/plugin:config
diff --git a/lib/plugins/info/plugin.info.txt b/lib/plugins/info/plugin.info.txt
new file mode 100644
index 000000000..2432225f1
--- /dev/null
+++ b/lib/plugins/info/plugin.info.txt
@@ -0,0 +1,6 @@
+author Andreas Gohr
+email andi@splitbrain.org
+date 2008-09-12
+name Info Plugin
+desc Displays information about various DokuWiki internals
+url http://dokuwiki.org/plugin:info
diff --git a/lib/plugins/revert/admin.php b/lib/plugins/revert/admin.php
index e188e2488..2aaf1395f 100644
--- a/lib/plugins/revert/admin.php
+++ b/lib/plugins/revert/admin.php
@@ -20,20 +20,6 @@ class admin_plugin_revert extends DokuWiki_Admin_Plugin {
$this->setupLocale();
}
- /**
- * return some info
- */
- function getInfo(){
- return array(
- 'author' => 'Andreas Gohr',
- 'email' => 'andi@splitbrain.org',
- 'date' => '2008-12-10',
- 'name' => 'Revert Manager',
- 'desc' => 'Allows you to mass revert recent edits',
- 'url' => 'http://dokuwiki.org/plugin:revert',
- );
- }
-
/**
* access for managers
*/
diff --git a/lib/plugins/revert/plugin.info.txt b/lib/plugins/revert/plugin.info.txt
new file mode 100644
index 000000000..5bb6f3413
--- /dev/null
+++ b/lib/plugins/revert/plugin.info.txt
@@ -0,0 +1,6 @@
+author Andreas Gohr
+email andi@splitbrain.org
+date 2008-12-10
+name Revert Manager
+desc Allows you to mass revert recent edits
+url http://dokuwiki.org/plugin:revert
diff --git a/lib/plugins/usermanager/admin.php b/lib/plugins/usermanager/admin.php
index e40ee9b7e..8e90be093 100644
--- a/lib/plugins/usermanager/admin.php
+++ b/lib/plugins/usermanager/admin.php
@@ -51,20 +51,6 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
}
}
- /**
- * return some info
- */
- function getInfo(){
-
- return array(
- 'author' => 'Chris Smith',
- 'email' => 'chris@jalakai.co.uk',
- 'date' => '2008-09-17',
- 'name' => 'User Manager',
- 'desc' => 'Manage users '.$this->disabled,
- 'url' => 'http://dokuwiki.org/plugin:usermanager',
- );
- }
/**
* return prompt for admin menu
*/
diff --git a/lib/plugins/usermanager/plugin.info.txt b/lib/plugins/usermanager/plugin.info.txt
new file mode 100644
index 000000000..7ec5fafd5
--- /dev/null
+++ b/lib/plugins/usermanager/plugin.info.txt
@@ -0,0 +1,6 @@
+author Chris Smith
+email chris@jalakai.co.uk
+date 2008-09-17
+name User Manager
+desc Manage users
+url http://dokuwiki.org/plugin:usermanager
--
cgit v1.2.3
From 9de3b5710719658ef75740c0bd930423cc7c209c Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Sun, 21 Aug 2011 02:16:39 +0300
Subject: issue #44 uploader fixes, #45 browser testing
---
lib/exe/ajax.php | 6 +++---
lib/plugins/acl/script.js | 2 +-
lib/scripts/cookie.js | 2 +-
lib/scripts/fileuploaderextended.js | 20 +++++++++++++-------
lib/scripts/media.js | 37 ++++++++++++++++++++-----------------
lib/tpl/default/_fileuploader.css | 12 ++++++++----
lib/tpl/default/mediamanager.css | 7 +++++++
7 files changed, 53 insertions(+), 33 deletions(-)
(limited to 'lib')
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index d8754b875..7fcccd4d9 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -268,15 +268,15 @@ function ajax_mediaupload(){
$id = cleanID($id, false, true);
if ($res) $result = array('success' => true,
- 'link' => media_managerURL(array('ns' => getNS($id), 'image' => $id), '&'),
- 'id' => $id);
+ 'link' => media_managerURL(array('ns' => $NS, 'image' => $id), '&'),
+ 'id' => $NS.':'.$id, 'ns' => $NS);
if (!$result) {
$error = '';
if (isset($MSG)) {
foreach($MSG as $msg) $error .= $msg['msg'];
}
- $result = array('error' => $msg['msg']);
+ $result = array('error' => $msg['msg'], 'ns' => $NS);
}
echo htmlspecialchars(json_encode($result), ENT_NOQUOTES);
}
diff --git a/lib/plugins/acl/script.js b/lib/plugins/acl/script.js
index 5b6c9ce1b..a3dbbe0d2 100644
--- a/lib/plugins/acl/script.js
+++ b/lib/plugins/acl/script.js
@@ -45,7 +45,7 @@ acl = {
'acl_t': frm.elements['acl_t'].value,
'acl_w': frm.elements['acl_w'].value,
'sectok': frm.elements['sectok'].value,
- 'ajax': 'info',
+ 'ajax': 'info'
}
);
return false;
diff --git a/lib/scripts/cookie.js b/lib/scripts/cookie.js
index f7d9b5ffb..e7ba620c7 100644
--- a/lib/scripts/cookie.js
+++ b/lib/scripts/cookie.js
@@ -72,7 +72,7 @@ DokuCookie = {
expires: expires_,
path: path_,
domain: domain_,
- secure: secure_,
+ secure: secure_
};
jQuery.cookie(name, value, params);
diff --git a/lib/scripts/fileuploaderextended.js b/lib/scripts/fileuploaderextended.js
index 005268bbb..ed631a9ea 100644
--- a/lib/scripts/fileuploaderextended.js
+++ b/lib/scripts/fileuploaderextended.js
@@ -80,7 +80,7 @@ qq.FileUploaderExtended = function(o){
'' + LANG.media_select + '
' +
'' +
'' +
- '' +
+ '' +
'
' +
'',
@@ -163,7 +163,7 @@ qq.extend(qq.FileUploaderExtended.prototype, {
qq.removeClass(fileElement, 'qq-upload-file-hidden');
qq.remove(nameInput);
jQuery('.qq-upload-button, #mediamanager__upload_button').remove();
- jQuery('#dw__ow').parent().hide();
+ jQuery('.dw__ow').parent().hide();
jQuery('.qq-upload-drop-area').remove();
if (result.success){
@@ -178,8 +178,12 @@ qq.extend(qq.FileUploaderExtended.prototype, {
}
if (document.getElementById('media__content') && !document.getElementById('mediamanager__done_form')) {
- var button = ''
+ var action = document.location.href;
+ var i = action.indexOf('?');
+ if (i) action = action.substr(0, i);
+ var button = '';
jQuery('#mediamanager__uploader').append(button);
}
}
@@ -232,8 +236,10 @@ qq.extend(qq.UploadHandlerForm.prototype, {
var nameInput = qq.toElement('');
form.appendChild(nameInput);
- var owCheckbox = document.getElementById('dw__ow').cloneNode(true);
- form.appendChild(owCheckbox);
+ var checked = jQuery('.dw__ow').attr('checked');
+ var owCheckbox = jQuery('.dw__ow').clone();
+ owCheckbox.attr('checked', checked);
+ jQuery(form).append(owCheckbox);
var self = this;
this._attachLoadEvent(iframe, function(){
@@ -311,7 +317,7 @@ qq.extend(qq.UploadHandlerXhr.prototype, {
// build query string
params = params || {};
params['qqfile'] = name;
- params['ow'] = document.getElementById('dw__ow').checked;
+ params['ow'] = jQuery('.dw__ow').attr('checked');
var queryString = qq.obj2url(params, this._options.action);
xhr.open("POST", queryString, true);
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 997321a65..f345c3786 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -274,8 +274,6 @@ var dw_mediamanager = {
if (document.getElementById('media__content')) {
//popup
$content = jQuery('#media__content');
- $content.html('
');
-
} else {
//fullscreen media manager
$content = jQuery('#mediamanager__layout_list');
@@ -288,8 +286,6 @@ var dw_mediamanager = {
});
$link.addClass('selected');
}
-
- jQuery('.scroll-container', $content).html('
');
}
params = '';
@@ -309,6 +305,14 @@ var dw_mediamanager = {
// fetch the subtree
dw_mediamanager.update_content($content, params);
+ if (document.getElementById('media__content')) {
+ //popup
+ $content = jQuery('#media__content');
+ $content.html('
');
+ } else {
+ //fullscreen media manager
+ jQuery('.scroll-container', $content).html('
');
+ }
},
/**
@@ -381,12 +385,6 @@ var dw_mediamanager = {
if ($link[0].id == 'mediamanager__btn_restore' && !confirm(LANG['restore_confirm'])) return false;
$content = jQuery('#mediamanager__layout_detail');
- if (jQuery('.scroll-container', $content).length) {
- jQuery('.scroll-container', $content).html('
');
- } else {
- jQuery($content).html('
');
- }
-
params = '';
if ($link[0].search) {
@@ -399,6 +397,12 @@ var dw_mediamanager = {
update_list = ($link[0].id == 'mediamanager__btn_delete' || $link[0].id == 'mediamanager__btn_restore');
dw_mediamanager.update_content($content, params, update_list);
+
+ if (jQuery('.scroll-container', $content).length) {
+ jQuery('.scroll-container', $content).html('
');
+ } else {
+ jQuery($content).html('
');
+ }
},
update_content: function ($content, params, update_list) {
@@ -427,9 +431,8 @@ var dw_mediamanager = {
$link1 = jQuery('a.files');
params1 = $link1[0].search.substr(1)+'&call=medialist';
$content1 = jQuery('#mediamanager__layout_list');
- jQuery('.scroll-container', $content1).html('
');
-
dw_mediamanager.update_content($content1, params1);
+ jQuery('.scroll-container', $content1).html('
');
}
},
'html'
@@ -552,11 +555,11 @@ var dw_mediamanager = {
$label.append($select);
$form.append($label);
- // for IE
- var select = document.getElementById('mediamanager__difftype');
- select.options[0].text = LANG.media_diff_both;
- select.options[1].text = LANG.media_diff_opacity;
- select.options[2].text = LANG.media_diff_portions;
+ // for IE
+ var select = document.getElementById('mediamanager__difftype');
+ select.options[0].text = LANG.media_diff_both;
+ select.options[1].text = LANG.media_diff_opacity;
+ select.options[2].text = LANG.media_diff_portions;
},
/**
diff --git a/lib/tpl/default/_fileuploader.css b/lib/tpl/default/_fileuploader.css
index 0e53f8187..9e60393a0 100644
--- a/lib/tpl/default/_fileuploader.css
+++ b/lib/tpl/default/_fileuploader.css
@@ -8,7 +8,6 @@
border: 1px solid __border__;
color: __text__;
background-color: __background__;
- vertical-align: middle;
text-decoration: none;
font-size: 100%;
cursor: pointer;
@@ -18,6 +17,11 @@
background: __background__ url(images/buttonshadow.png) repeat-x bottom;
}
+* html .qq-upload-button,
+*+html .qq-upload-button {
+ display: inline;
+}
+
.qq-upload-button-focus {
outline: 1px dotted black;
}
@@ -84,8 +88,9 @@
padding-left: 10px;
}
-.qq-uploader #dw__ow {
- margin: 10px 3px -5px 10px;
+.qq-uploader .dw__ow {
+ margin-left: 10px;
+ margin-right: 3px;
}
.qq-uploader .check {
@@ -93,7 +98,6 @@
}
.qq-uploader #mediamanager__upload_button {
- margin-top: -5px;
margin-bottom: 10px;
}
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index ad371ee3d..245bb5550 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -22,6 +22,7 @@
padding: 0;
margin: 0;
text-align: left;
+ position: relative;
}
#mediamanager__layout .background-container {
@@ -359,10 +360,16 @@ form.meta textarea.edit {
* html #mediamanager__diff_table li {
display: inline;
}
+
*+html #mediamanager__diff_table li {
display: inline;
}
+/* For IE7 */
+*:first-child+html #mediamanager__diff_table li {
+ width: 45%;
+}
+
/* Image diff */
#mediamanager__layout dl.img_tags dd.highlighted{
--
cgit v1.2.3
From 035e07f1301d5d7a13de017640d80db14d300ac3 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Wed, 24 Aug 2011 22:34:06 +0300
Subject: issue #57, function names, params, html fixes
---
lib/exe/ajax.php | 6 +++---
lib/exe/css.php | 4 ++--
lib/tpl/default/mediamanager.css | 2 +-
3 files changed, 6 insertions(+), 6 deletions(-)
(limited to 'lib')
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index 7fcccd4d9..a6e45c4de 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -209,7 +209,7 @@ function ajax_medialist(){
$NS = $_POST['ns'];
if ($_POST['do'] == 'media') {
- tpl_fileList();
+ tpl_mediaFileList();
} else {
tpl_mediaContent(true);
}
@@ -232,7 +232,7 @@ function ajax_mediadetails(){
if (isset($REV) && !$JUMPTO) $rev = $REV;
html_msgarea();
- tpl_fileDetails($image, $rev);
+ tpl_mediaFileDetails($image, $rev);
}
/**
@@ -268,7 +268,7 @@ function ajax_mediaupload(){
$id = cleanID($id, false, true);
if ($res) $result = array('success' => true,
- 'link' => media_managerURL(array('ns' => $NS, 'image' => $id), '&'),
+ 'link' => media_managerURL(array('ns' => $NS, 'image' => $NS.':'.$id), '&'),
'id' => $NS.':'.$id, 'ns' => $NS);
if (!$result) {
diff --git a/lib/exe/css.php b/lib/exe/css.php
index 8f86f2433..81f47d8fa 100644
--- a/lib/exe/css.php
+++ b/lib/exe/css.php
@@ -189,7 +189,7 @@ function css_interwiki(){
function css_filetypes(){
// default style
- echo 'a.mediafile {';
+ echo '.mediafile {';
echo ' background: transparent url('.DOKU_BASE.'lib/images/fileicons/file.png) 0px 1px no-repeat;';
echo ' padding-left: 18px;';
echo ' padding-bottom: 1px;';
@@ -212,7 +212,7 @@ function css_filetypes(){
}
foreach($exts as $ext=>$type){
$class = preg_replace('/[^_\-a-z0-9]+/','_',$ext);
- echo "a.mf_$class {";
+ echo ".mf_$class {";
echo ' background-image: url('.DOKU_BASE.'lib/images/fileicons/'.$ext.$type.')';
echo '}';
}
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index 245bb5550..16982d98d 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -291,7 +291,7 @@
}
#media__content #mediamanager__uploader {
- border-bottom: 1px solid #8CACBB;
+ border-bottom: 1px solid __border__;
padding-bottom: 0.5em;
}
--
cgit v1.2.3
From 87deddfa454164964c2fb71481cf480b3d2d92df Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Sat, 27 Aug 2011 00:59:47 +0300
Subject: issue #54 listview switch/sorting on search
---
lib/scripts/cookie.js | 4 ++--
lib/scripts/media.js | 2 ++
2 files changed, 4 insertions(+), 2 deletions(-)
(limited to 'lib')
diff --git a/lib/scripts/cookie.js b/lib/scripts/cookie.js
index 3f3375fa7..4dd77beea 100644
--- a/lib/scripts/cookie.js
+++ b/lib/scripts/cookie.js
@@ -24,8 +24,8 @@ DokuCookie = {
this.data[key] = val;
//save the whole data array
- jQuery.each(this.data, function (val, key) {
- if (this.data.hasOwnProperty(key)) {
+ jQuery.each(this.data, function (key, val) {
+ if (DokuCookie.data.hasOwnProperty(key)) {
text += '#'+encodeURIComponent(key)+'#'+encodeURIComponent(val);
}
});
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 7103727c5..e48c9c1b0 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -299,6 +299,8 @@ var dw_mediamanager = {
if ($link.parents('form')[0].id == 'mediamanager__form_sort') {
DokuCookie.setValue('sort', $link[0].value);
+ params += '&q=' + jQuery('#mediamanager__sort_textfield').val();
+ params += '&mediado=searchlist';
}
}
--
cgit v1.2.3
From 30fd72fbc3c8bd3fbcae4f7041aa0e001a719c6a Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Fri, 2 Sep 2011 14:50:19 +0300
Subject: issue #47 Changes to old media manager popup: removing edit and
delete functionality
---
lib/exe/ajax.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'lib')
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index a6e45c4de..4f627e995 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -268,7 +268,7 @@ function ajax_mediaupload(){
$id = cleanID($id, false, true);
if ($res) $result = array('success' => true,
- 'link' => media_managerURL(array('ns' => $NS, 'image' => $NS.':'.$id), '&'),
+ 'link' => media_managerURL(array('ns' => $NS.':'.getNS($id), 'image' => $NS.':'.$id), '&'),
'id' => $NS.':'.$id, 'ns' => $NS);
if (!$result) {
--
cgit v1.2.3
From 69b29ddf0b274b494a4ded27e96cf57c8370876b Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva
Date: Fri, 2 Sep 2011 20:31:05 +0300
Subject: mediamanager window resize fix
---
lib/scripts/media.js | 14 ++++++++++++++
1 file changed, 14 insertions(+)
(limited to 'lib')
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index e48c9c1b0..f4064efd5 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -26,6 +26,7 @@ var dw_mediamanager = {
view: false,
layout_width: 0,
+ layout_height: 0,
init: function () {
var $content, $tree;
@@ -480,6 +481,18 @@ var dw_mediamanager = {
jQuery(this).width(w);
});
+ var windowHeight = jQuery(window).height();
+ var height = windowHeight - 300;
+ if (layout_height < height) {
+ layout_height = height;
+ jQuery('#mediamanager__layout .scroll-container').each(function (i) {
+ jQuery(this).height(height);
+ });
+ $resizable.each(function() {
+ jQuery(this).height(height+100);
+ });
+ }
+
dw_mediamanager.opacity_slider();
dw_mediamanager.portions_slider();
},
@@ -526,6 +539,7 @@ var dw_mediamanager = {
var windowHeight = jQuery(window).height();
var height = windowHeight - 300;
+ layout_height = height;
jQuery('#mediamanager__layout .scroll-container').each(function (i) {
jQuery(this).height(height);
});
--
cgit v1.2.3
From ba6c070edd92ca0fc8a6ee85d51769d64a19ee7c Mon Sep 17 00:00:00 2001
From: Adrian Lang
Date: Sun, 4 Sep 2011 13:52:43 +0200
Subject: tmp
---
lib/exe/js.php | 1 +
lib/scripts/compatibility.js | 2 +-
lib/scripts/edit.js | 221 ++++++++++++++++++++-----------------------
lib/scripts/index.js | 3 -
lib/scripts/linkwiz.js | 4 -
lib/scripts/media.js | 3 -
lib/scripts/qsearch.js | 3 -
lib/scripts/script.js | 5 +-
lib/scripts/toolbar.js | 35 +++----
lib/scripts/tree.js | 3 -
lib/styles/screen.css | 5 +
11 files changed, 124 insertions(+), 161 deletions(-)
(limited to 'lib')
diff --git a/lib/exe/js.php b/lib/exe/js.php
index e96d45ee6..d52fe3607 100644
--- a/lib/exe/js.php
+++ b/lib/exe/js.php
@@ -86,6 +86,7 @@ function js_out(){
// add some global variables
print "var DOKU_BASE = '".DOKU_BASE."';";
print "var DOKU_TPL = '".DOKU_TPL."';";
+ // FIXME: Move those to JSINFO
print "var DOKU_UHN = ".((int) useHeading('navigation')).";";
print "var DOKU_UHC = ".((int) useHeading('content')).";";
diff --git a/lib/scripts/compatibility.js b/lib/scripts/compatibility.js
index 39f703c71..3b027f016 100644
--- a/lib/scripts/compatibility.js
+++ b/lib/scripts/compatibility.js
@@ -38,7 +38,7 @@ function DEPRECATED_WRAP(func, context) {
return function () {
DEPRECATED();
return func.apply(context || this, arguments);
- }
+ };
}
/**
diff --git a/lib/scripts/edit.js b/lib/scripts/edit.js
index 816568e92..fe8e4eb78 100644
--- a/lib/scripts/edit.js
+++ b/lib/scripts/edit.js
@@ -14,38 +14,36 @@
* @author Michal Rezler
*/
function createToolButton(icon,label,key,id,classname){
- var $ = jQuery;
- var btn = $('