summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--inc/html.php3
-rw-r--r--inc/template.php83
-rw-r--r--media.php116
-rw-r--r--tpl/default/design.css5
-rw-r--r--tpl/default/media.php62
5 files changed, 172 insertions, 97 deletions
diff --git a/inc/html.php b/inc/html.php
index 85e3189ea..df3f446b5 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -293,6 +293,7 @@ function html_btn($name,$id,$akey,$params,$method='get'){
/**
* Check for the given permission or prints an error
*
+ * @deprecated
* @author Andreas Gohr <andi@splitbrain.org>
*/
function html_acl($perm){
@@ -596,7 +597,7 @@ function html_search(){
print '</div>';
}
}else{
- print '<div align="center">'.$lang['nothingfound'].'</div>';
+ print '<div class="nothing">'.$lang['nothingfound'].'</div>';
}
//hide progressbar
diff --git a/inc/template.php b/inc/template.php
index 233ded96b..d52d5c7a0 100644
--- a/inc/template.php
+++ b/inc/template.php
@@ -96,6 +96,9 @@ function tpl_content(){
case 'register':
html_register();
break;
+ case 'denied':
+ print parsedLocale('denied');
+ break;
default:
msg("Failed to handle command: ".hsc($ACT),-1);
}
@@ -307,4 +310,84 @@ function tpl_pageinfo(){
}
}
+/**
+ * Print a list of namespaces containing media files
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function tpl_medianamespaces(){
+ global $conf;
+
+ $data = array();
+ search($data,$conf['mediadir'],'search_namespaces',array());
+ print html_buildlist($data,'idx',media_html_list_namespaces);
+}
+
+/**
+ * Print a list of mediafiles in the current namespace
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function tpl_mediafilelist(){
+ global $conf;
+ global $lang;
+ global $NS;
+ $dir = utf8_encodeFN(str_replace(':','/',$NS));
+
+ $data = array();
+ search($data,$conf['mediadir'],'search_media',array(),$dir);
+
+ if(!count($data)){
+ ptln('<div class="nothing">'.$lang['nothingfound'].'<div>');
+ return;
+ }
+
+ ptln('<ul>',2);
+ foreach($data as $item){
+ ptln('<li>',4);
+ ptln('<a href="javascript:mediaSelect(\''.$item['id'].'\')">'.
+ utf8_decodeFN($item['file']).
+ '</a>',6);
+ if($item['isimg']){
+ ptln('('.$item['info'][0].'&#215;'.$item['info'][1].
+ ' '.filesize_h($item['size']).')<br />',6);
+
+ # build thumbnail
+ $link=array();
+ $link['name']=$item['id'];
+ if($item['info'][0]>120) $link['name'] .= '?120';
+ $link = format_link_media($link);
+ ptln($link['name'],6);
+
+ }else{
+ ptln ('('.filesize_h($item['size']).')',6);
+ }
+ ptln('</li>',4);
+ }
+ ptln('</ul>',2);
+}
+
+/**
+ * Print the media upload form if permissions are correct
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function tpl_mediauploadform(){
+ global $NS;
+ global $UPLOADOK;
+ global $lang;
+
+ if(!$UPLOADOK) return;
+
+ ptln('<form action="'.$_SERVER['PHP_SELF'].'" name="upload"'.
+ ' method="post" enctype="multipart/form-data">',2);
+ ptln($lang['txt_upload'].':<br />',4);
+ ptln('<input type="file" name="upload" class="edit" onchange="suggestWikiname();" />',4);
+ ptln('<input type="hidden" name="ns" value="'.hsc($NS).'" /><br />',4);
+ ptln($lang['txt_filename'].'<br />',4);
+ ptln('<input type="text" name="id" class="edit" />',4);
+ ptln('<input type="submit" class="button" value="'.$lang['btn_upload'].'" accesskey="s" />',4);
+ ptln('</form>',2);
+}
+
?>
diff --git a/media.php b/media.php
index 7d67f971e..10e0b36b9 100644
--- a/media.php
+++ b/media.php
@@ -7,6 +7,7 @@
require_once(DOKU_INC.'inc/html.php');
require_once(DOKU_INC.'inc/search.php');
require_once(DOKU_INC.'inc/format.php');
+ require_once(DOKU_INC.'inc/template.php');
require_once(DOKU_INC.'inc/auth.php');
header('Content-Type: text/html; charset='.$lang['encoding']);
@@ -14,48 +15,34 @@
$NS = $_REQUEST['ns'];
$NS = cleanID($NS);
+ //check upload permissions
if(auth_quickaclcheck("$NS:*") >= AUTH_UPLOAD){
- $uploadok = true;
+ $UPLOADOK = true;
//create the given namespace (just for beautification)
$mdir = $conf['mediadir'].'/'.utf8_encodeFN(str_replace(':','/',$NS));
io_makeFileDir("$mdir/xxx");
}else{
- $uploadok = false;
+ $UPLOADOK = false;
}
- if($_FILES['upload']['tmp_name'] && $uploadok){
+ if($_FILES['upload']['tmp_name'] && $UPLOADOK){
media_upload($NS);
}
- //start output
- html_head();
-?>
-<body>
- <?html_msgarea()?>
- <h1><?=$lang['mediaselect']?></h1>
-
- <div class="mediaselect">
- <div class="mediaselect-left">
- <?=media_html_namespaces()?>
- </div>
- <div class="mediaselect-right">
- <?
- print media_html_media($NS);
- if($uploadok){
- print media_html_uploadform($NS);
- }
- ?>
- </div>
- </div>
+ //start output and load template
+ header('Content-Type: text/html; charset=utf-8');
+ include(DOKU_INC.'tpl/'.$conf['template'].'/media.php');
-</body>
-</html>
-<?
//restore old umask
umask($conf['oldumask']);
/**********************************************/
+/**
+ * Handles Mediafile uploads
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
function media_upload($NS){
global $conf;
global $lang;
@@ -86,76 +73,13 @@ function media_upload($NS){
return false;
}
-function media_html_uploadform($ns){
- global $lang;
-?>
- <div class="uploadform">
- <form action="<?=$_SERVER['PHP_SELF']?>" name="upload" method="post" enctype="multipart/form-data">
- <?=$lang['txt_upload']?>:<br />
- <input type="file" name="upload" class="edit" onchange="suggestWikiname();" />
- <input type="hidden" name="ns" value="<?=htmlspecialchars($ns)?>" /><br />
- <?=$lang['txt_filename']?>:<br />
- <input type="text" name="id" class="edit" />
- <input type="submit" class="button" value="<?=$lang['btn_upload']?>" accesskey="s" />
- </form>
- </div>
-<?
-}
-
-function media_html_media($ns){
- global $conf;
- global $lang;
- $dir = utf8_encodeFN(str_replace(':','/',$ns));
-
- print '<b>'.$lang['mediafiles'].'</b>';
- print ' <code>'.$ns.':</code>';
-
- $data = array();
- search($data,$conf['mediadir'],'search_media',array(),$dir);
-
- if(!count($data)){
- print '<div style="text-align:center; margin:2em;">';
- print $lang['nothingfound'];
- print '</div>';
- return;
- }
-
- print '<ul>';
- foreach($data as $item){
- print '<li>';
- print '<a href="javascript:mediaSelect(\''.$item['id'].'\')">';
- print utf8_decodeFN($item['file']);
- print '</a>';
- if($item['isimg']){
- print ' ('.$item['info'][0].'&#215;'.$item['info'][1];
- print ' '.filesize_h($item['size']).')<br />';
-
- # build thumbnail
- $link=array();
- $link['name']=$item['id'];
- if($item['info'][0]>120) $link['name'] .= '?120';
- $link = format_link_media($link);
- print $link['name'];
-
- }else{
- print ' ('.filesize_h($item['size']).')';
- }
- print '</li>';
- }
- print '</ul>';
-}
-
-function media_html_namespaces(){
- global $conf;
- global $lang;
-
- $data = array();
- #add default namespace
- print '<b><a href="'.DOKU_BASE.'media.php?ns=">'.$lang['namespaces'].'</a></b>';
- search($data,$conf['mediadir'],'search_namespaces',array());
- print html_buildlist($data,'idx',media_html_list_namespaces);
-}
-
+/**
+ * Userfunction for html_buildlist
+ *
+ * Prints available media namespaces
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
function media_html_list_namespaces($item){
$ret = '';
$ret .= '<a href="'.DOKU_BASE.'media.php?ns='.idfilter($item['id']).'" class="idx_dir">';
diff --git a/tpl/default/design.css b/tpl/default/design.css
index 2a428a1e5..2bf7903ea 100644
--- a/tpl/default/design.css
+++ b/tpl/default/design.css
@@ -42,6 +42,11 @@ hr {
height: 0px;
}
+div.nothing {
+ text-align:center;
+ margin: 2em;
+}
+
/* ---------------- forms ------------------------ */
form {
diff --git a/tpl/default/media.php b/tpl/default/media.php
new file mode 100644
index 000000000..6509bdb5a
--- /dev/null
+++ b/tpl/default/media.php
@@ -0,0 +1,62 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<?
+/**
+ * DokuWiki Default Template
+ *
+ * This is the template for the media selection popup.
+ *
+ * You should leave the doctype at the very top - It should
+ * always be the very first line of a document.
+ *
+ * @link http://wiki.splitbrain.org/wiki:tpl:templates
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+?>
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?=$conf['lang']?>" lang="<?=$conf['lang']?>" dir="ltr">
+<head>
+ <title><?=hsc($lang['mediaselect'])?> [<?=hsc($conf['title'])?>]</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <?tpl_metaheaders()?>
+
+ <link rel="shortcut icon" href="<?=DOKU_BASE?>images/favicon.ico" />
+ <link rel="stylesheet" media="screen" type="text/css" href="<?=DOKU_TPL?>layout.css" />
+ <link rel="stylesheet" media="screen" type="text/css" href="<?=DOKU_TPL?>design.css" />
+
+ <!--[if gte IE 5]>
+ <style type="text/css">
+ /* that IE 5+ conditional comment makes this only visible in IE 5+ */
+ /* IE bugfix for transparent PNGs */
+ img { behavior: url("<?=DOKU_BASE?>/pngbehavior.htc"); }
+ </style>
+ <![endif]-->
+</head>
+
+<body>
+<div class="dokuwiki">
+ <?html_msgarea()?>
+
+ <h1><?=hsc($lang['mediaselect'])?></h1>
+
+ <div class="mediaselect">
+
+ <div class="mediaselect-left">
+ <b><a href="<?=DOKU_BASE?>/media.php?ns="><?=hsc($lang['namespaces'])?></a></b>
+
+ <?tpl_medianamespaces()?>
+ </div>
+
+ <div class="mediaselect-right">
+ <b>Available files in</b> <code><?=hsc($NS)?>:</code>
+
+ <?tpl_mediafilelist()?>
+
+ <div class="uploadform">
+ <?tpl_mediauploadform()?>
+ </div>
+ </div>
+
+ </div>
+
+</div>
+</body>