]> git.mjollnir.org Git - s9y.git/commitdiff
Refresh media frame tree when directory was deleted
authorgarvinhicking <garvinhicking>
Thu, 17 Aug 2006 13:20:01 +0000 (13:20 +0000)
committergarvinhicking <garvinhicking>
Thu, 17 Aug 2006 13:20:01 +0000 (13:20 +0000)
serendipity_admin_image_selector.php
templates/default/admin/media_choose.tpl [new file with mode: 0644]

index 9708d74b787b21d816b1de5f5591b2374590a898..ff11530ee9ce380edf71159842f0bd4b596cc0c8 100644 (file)
@@ -10,7 +10,7 @@ if (IN_serendipity !== true) {
 
 header('Content-Type: text/html; charset=' . LANG_CHARSET);
 
-if ($_SESSION['serendipityAuthedUser'] !== true)  {
+if ($_SESSION['serendipityAuthedUser'] !== true && $serendipity['GET']['step'] != 'showItem')  {
     die(HAVE_TO_BE_LOGGED_ON);
 }
 
@@ -22,265 +22,286 @@ if (!isset($serendipity['GET']['step'])) {
     $serendipity['GET']['step']        = (isset($serendipity['POST']['step'])        ? $serendipity['POST']['step']        : '');
 }
 
-function ifRemember($name, $value, $isDefault = false, $att = 'checked') {
-    global $serendipity;
-    
-    if (!is_array($serendipity['COOKIE']) && !$isDefault) {
-        return false;
-    }
-    
-    if ((!is_array($serendipity['COOKIE']) && $isDefault) || 
-        (!isset($serendipity['COOKIE']['serendipity_' . $name]) && $isDefault) ||
-        (isset($serendipity['COOKIE']['serendipity_' . $name]) && $serendipity['COOKIE']['serendipity_' . $name] == $value)) {
-
-        return " $att=\"$att\" ";
-    }
+if (empty($serendipity['GET']['step']) && isset($serendipity['GET']['adminAction'])) {
+    $serendipity['GET']['step'] = $serendipity['GET']['adminAction'];
 }
-?>
-<html>
-    <head>
-        <title><?php echo SELECT_FILE; ?></title>
-        <meta http-equiv="Content-Type" content="text/html; charset=<?php echo LANG_CHARSET; ?>" />
-        <link rel="stylesheet" type="text/css" href="<?php echo serendipity_rewriteURL('serendipity_admin.css'); ?>" />
-    </head>
-
-    <script type="text/javascript">
-        function SetCookie(name, value) {
-            var today  = new Date();
-            var expire = new Date();
-            expire.setTime(today.getTime() + (60*60*24*30));
-            document.cookie = 'serendipity[' + name + ']='+escape(value) + ';expires=' + expire.toGMTString();
-        }
 
-        function rememberOptions() {
-            el = document.getElementById('imageForm');
-            for (i = 0; i < el.elements.length; i++) {
-                elname = new String(el.elements[i].name);
-                elname = elname.replace(/\[/g, '_');
-                elname = elname.replace(/\]/g, '');
-                
-                if (el.elements[i].type == 'radio') {
-                    if (el.elements[i].checked) {
-                        SetCookie(elname, el.elements[i].value);
-                    }
-                } else if (typeof(el.elements[i].options) == 'object') {
-                    SetCookie(elname, el.elements[i].options[el.elements[i].selectedIndex].value);
-                }
-            }
-        }
-    </script>
-<body id="serendipityAdminBodyImageSelector">
+serendipity_smarty_init();
+if (empty($serendipity['GET']['step']) && $serendipity['GET']['page'] < 1) {
+    $media = array(
+        'GET_STRING' => serendipity_build_query($_GET),
+        'frameset'   => true
+    );
+    $serendipity['smarty']->assign_by_ref('media', $media);
+    $serendipity['smarty']->display(serendipity_getTemplateFile('admin/media_choose.tpl', 'serendipityPath'));
+    return;
+}
+
+$import_vars = $serendipity['GET'];
+unset($import_vars['step']);
+unset($import_vars['only_path']);
+
+$showFile = 'admin/media_choose.tpl';
+$body_id = 'serendipityAdminBodyImageSelector';
+if ($serendipity['GET']['step'] === 'tree') {
+    $body_id = 'serendipityAdminBodyImageSelectorTree';
+}
+
+$media = array(
+    'body_id'    => $body_id,
+    'only_path'  => $serendipity['GET']['only_path'],
+    'css'        => serendipity_rewriteURL('serendipity_admin.css'),
+    'css_tree'   => serendipity_getTemplateFile('treeview/tree.css'),
+    'css_front'  => serendipity_rewriteURL('serendipity.css'),
+    'token_url'  => serendipity_setFormToken('url'),
+    'imgID'      => (int)$serendipity['GET']['image'],
+    'from'       => $serendipity['GET']['from'],
+    'GET_STRING' => serendipity_build_query($import_vars, 'serendipity', '&'),
+    'paths'      => serendipity_getMediaPaths()
+);
 
-<div class="serendipityAdminContent">
-<?php
 switch ($serendipity['GET']['step']) {
     case '1':
         if (isset($serendipity['GET']['adminAction'])) { // Embedded upload form
+            if (!empty($serendipity['POST']['textarea'])) {
+                $serendipity['GET']['textarea'] = $serendipity['POST']['textarea'];
+            }
+
+            if (!empty($serendipity['POST']['htmltarget'])) {
+                $serendipity['GET']['htmltarget'] = $serendipity['POST']['htmltarget'];
+            }
+
+            if (!empty($serendipity['POST']['filename_only'])) {
+                $serendipity['GET']['filename_only'] = $serendipity['POST']['filename_only'];
+            }
+
+            $image_selector_addvars = array(
+                'step'          => 1,
+                'textarea'      => (!empty($serendipity['GET']['textarea'])      ? $serendipity['GET']['textarea']      : ''),
+                'htmltarget'    => (!empty($serendipity['GET']['htmltarget'])    ? $serendipity['GET']['htmltarget']    : ''),
+                'filename_only' => (!empty($serendipity['GET']['filename_only']) ? $serendipity['GET']['filename_only'] : '')
+            );
+
             switch ($serendipity['GET']['adminAction']) {
                 case 'addSelect':
-                    $image_selector_addvars = array(
-                        'step'          => 1,
-                        'textarea'      => (!empty($serendipity['GET']['textarea'])      ? $serendipity['GET']['textarea']      : ''),
-                        'htmltarget'    => (!empty($serendipity['GET']['htmltarget'])    ? $serendipity['GET']['htmltarget']    : ''),
-                        'filename_only' => (!empty($serendipity['GET']['filename_only']) ? $serendipity['GET']['filename_only'] : '')
-                    );
+                    $media['case'] = 'external';
+                    ob_start();
                     include S9Y_INCLUDE_PATH . 'include/admin/images.inc.php';
+                    $media['external'] = ob_get_contents();
+                    ob_end_clean();
                     break 2;
 
                 case 'add':
+                    $media['case'] = 'external';
+                    ob_start();
                     include S9Y_INCLUDE_PATH . 'include/admin/images.inc.php';
-                    if (isset($created_thumbnail) && is_array($created_thumbnail)) {
-                        $serendipity['GET']['image'] = (int)$image_id; // $image_id is passed from images.inc.php
-
-                        if (!empty($serendipity['POST']['htmltarget'])) {
-                            $serendipity['GET']['htmltarget'] = $serendipity['POST']['htmltarget'];
-                        }
-
-                        if (!empty($serendipity['POST']['filename_only'])) {
-                            $serendipity['GET']['filename_only'] = $serendipity['POST']['filename_only'];
-                        }
-
-                        if (!empty($serendipity['POST']['textarea'])) {
-                            $serendipity['GET']['textarea'] = $serendipity['POST']['textarea'];
-                        }
+                    $media['external'] = ob_get_contents();
+                    ob_end_clean();
+                    if (isset($created_thumbnail) && isset($image_id)) {
+                        $serendipity['GET']['image'] = $media['imgID'] = (int)$image_id; // $image_id is passed from images.inc.php
                         break;
                     } else {
                         break 2;
                     }
             }
         }
+        $media['case'] = 'choose';
 
         $file           = serendipity_fetchImageFromDatabase($serendipity['GET']['image']);
+        $media['file'] = &$file;
         if (!is_array($file)) {
-            echo PERM_DENIED;
+            $media['perm_denied'] = true;
             break;
         }
-        $file['imgsrc'] = $serendipity['serendipityHTTPPath'] . $serendipity['uploadHTTPPath'] . $file['path'] . $file['name'] . (!empty($file['thumbnail_name']) ? '.' . $file['thumbnail_name'] : '') . '.' . $file['extension'];
-        if ($file['hotlink']) {
-            $imgName    = $file['path'];
-        } else {
-            $imgName    = $serendipity['serendipityHTTPPath'] . $serendipity['uploadHTTPPath'] . $file['path'] . $file['name'] .'.'. $file['extension'];
+
+        serendipity_prepareMedia($file);
+
+        $media['file']['props'] =& serendipity_fetchMediaProperties((int)$serendipity['GET']['image']);
+        serendipity_plugin_api::hook_event('media_getproperties_cached', $media['file']['props']['base_metadata'], $media['file']['realfile']);
+
+        if ($file['is_image']) {
+            $file['finishJSFunction'] = $file['origfinishJSFunction'] = 'serendipity_imageSelector_done(\'' . htmlspecialchars($serendipity['GET']['textarea']) . '\')';
+
+            if (!empty($serendipity['GET']['filename_only']) && $serendipity['GET']['filename_only'] !== 'true') {
+                $file['fast_select'] = true;
+            }
         }
+        break;
 
-        $thumbbasename  = $file['path'] . $file['name'] . (!empty($file['thumbnail_name']) ? '.' . $file['thumbnail_name'] : '') . '.' . $file['extension'];
+    case 'directoryDoCreate':    
+    case 'directoryDoDelete':        
+        $is_created = true;        
+        if ($serendipity['GET']['step'] == 'directoryDoDelete') {
+            $is_deleted = true;        
+        }
+    case 'directoryCreate':    
+        $serendipity['GET']['adminAction'] = $serendipity['GET']['step'];
+        $media['case'] = 'external';
+        ob_start();
+        include S9Y_INCLUDE_PATH . 'include/admin/images.inc.php';
+        if ($is_created || $is_deleted) {
+            $media['is_created'] = $is_created;
+            $media['is_deleted'] = $is_deleted;
+            $media['new_dir']    = $new_dir;
+        }
+        $media['external'] = ob_get_contents();
+        ob_end_clean();
+        break;
 
-        if ($file['hotlink']) {
-            $thumbName  = $file['path'];
-        } else {
-            $thumbName  = $serendipity['serendipityHTTPPath'] . $serendipity['uploadHTTPPath'] . $thumbbasename;
+    case 'tree':
+        $media['case']  = 'tree';
+        break;
+
+    case 'showItem':
+        serendipity_plugin_api::hook_event('frontend_media_showitem_init', $media);
+
+        if ($media['perm_denied']) {
+            break;
         }
-        $thumbsize     = @getimagesize($serendipity['serendipityPath'] . $serendipity['uploadPath'] . $thumbbasename);
-        $is_image      = serendipity_isImage($file, true);
-?>
-<script type="text/javascript" language="JavaScript" src="<?php echo $serendipity['serendipityHTTPPath']; ?>serendipity_define.js.php"></script>
-<script type="text/javascript" language="Javascript" src="<?php echo $serendipity['serendipityHTTPPath']; ?>serendipity_editor.js"></script>
-
-<div>
-<?php
-        if (!file_exists($file['imgsrc']) && $is_image) {
-
-            $dimWidth  = $file['dimensions_width'];
-            $dimHeight = $file['dimensions_height'];
-
-            if ($file['hotlink']) {
-                $thumbDim    = @serendipity_calculate_aspect_size($dimWidth, $dimHeight, $serendipity['thumbSize']);
-                $thumbWidth  = $thumbDim[0];
-                $thumbHeight = $thumbDim[1];
-                $imgsrc      = $file['path'];
-            } else {
-                $thumbWidth  = $thumbsize[0];
-                $thumbHeight = $thumbsize[1];
-                $imgsrc      = $file['imgsrc'];
+        $media['case'] = 'showitem';
+        $file          = serendipity_fetchImageFromDatabase((int)$serendipity['GET']['image']);
+        $media['file'] = &$file;
+        $keywords = $dprops = '';
+
+        if (!is_array($file)) {
+            $media['perm_denied'] = true;
+            break;
+        }
+
+        serendipity_prepareMedia($file);
+
+        $showfile = null;
+        if (($serendipity['GET']['resizeWidth'] || $serendipity['GET']['resizeHeight']) && $serendipity['dynamicResize'] && $media['file']['is_image']) {
+            $width  = (int)$serendipity['GET']['resizeWidth'];
+            $height = (int)$serendipity['GET']['resizeHeight'];
+            if (empty($width)) {
+                $width = NULL;
+            }
+            if (empty($height)) {
+                $height = NULL;
             }
-            $file['finishJSFunction'] = 'serendipity_imageSelector_done(\'' . htmlspecialchars($serendipity['GET']['textarea']) . '\')';
-            serendipity_plugin_api::hook_event('frontend_image_selector', $file);
-?>
-    <img align="right" src="<?php echo $imgsrc; ?>">
-    <h1><?php printf(YOU_CHOSE, $file['name']); ?></h1>
-    <p>
-        <form action="#" method="GET" id="imageForm" name="serendipity[selForm]" onsubmit="serendipity_imageSelector_done()">
-            <div>
-                <?php serendipity_plugin_api::hook_event('frontend_image_selector_hiddenfields', $file); ?>
-                <input type="hidden" name="imgThumbWidth"  value="<?php echo $thumbWidth; ?>" />
-                <input type="hidden" name="imgThumbHeight" value="<?php echo $thumbHeight; ?>" />
-                <input type="hidden" name="imgWidth"  value="<?php echo $dimWidth; ?>" />
-                <input type="hidden" name="imgHeight" value="<?php echo $dimHeight; ?>" />
-                <input type="hidden" name="imgID" value="<?php echo (int)$serendipity['GET']['image']; ?>" />
-                <input type="hidden" name="imgName"   value="<?php echo $imgName; ?>" />
-                <input type="hidden" name="thumbName" value="<?php echo $thumbName; ?>" />
-                <input type="hidden" name="hotlink" value="<?php echo $file['hotlink']; ?>" />
-                <?php if (!empty($serendipity['GET']['htmltarget'])) { ?>
-                <input type="hidden" name="serendipity[htmltarget]" value="<?php echo htmlspecialchars($serendipity['GET']['htmltarget']); ?>" />
-                <?php } ?>
-                <?php if (!empty($serendipity['GET']['filename_only'])) { ?>
-                <input type="hidden" name="serendipity[filename_only]" value="<?php echo htmlspecialchars($serendipity['GET']['filename_only']); ?>" />
-                <?php } ?>
-
-                <b><?php echo IMAGE_SIZE; ?>:</b>
-                <br />
-                <input id="radio_link_no" type="radio" name="serendipity[linkThumbnail]" value="no" <?php echo ifRemember('linkThumbnail', 'no', true); ?> /><label for="radio_link_no"><?php echo I_WANT_THUMB; ?></label><br />
-                <input id="radio_link_yes" type="radio" name="serendipity[linkThumbnail]" value="yes" <?php echo ifRemember('linkThumbnail', 'yes'); ?> /><label for="radio_link_yes"><?php echo I_WANT_BIG_IMAGE; ?></label><br />
-                <?php serendipity_plugin_api::hook_event('frontend_image_selector_imagesize', $file); ?>
-                <br />
-
-                <?php if (empty($serendipity['GET']['filename_only']) || $serendipity['GET']['filename_only'] != 'true') { ?>
-                <b><?php echo IMAGE_ALIGNMENT; ?>:</b>
-                <br />
-                <input type="radio" name="serendipity[align]" <?php echo ifRemember('align', ''); ?>      value="" />                       <img src="<?php echo serendipity_getTemplateFile('img/img_align_top.png') ?>"   vspace="5" /><br />
-                <input type="radio" name="serendipity[align]" <?php echo ifRemember('align', 'left', true); ?>  value="left" /> <img src="<?php echo serendipity_getTemplateFile('img/img_align_left.png') ?>"  vspace="5" /><br />
-                <input type="radio" name="serendipity[align]" <?php echo ifRemember('align', 'right'); ?> value="right" />                  <img src="<?php echo serendipity_getTemplateFile('img/img_align_right.png') ?>" vspace="5" /><br />
-                <?php serendipity_plugin_api::hook_event('frontend_image_selector_imagealign', $file); ?>
-                <br />
-
-                <b><?php echo IMAGE_AS_A_LINK; ?>:</b>
-                <br />
-                <input id="radio_islink_yes" type="radio" name="serendipity[isLink]" value="yes" <?php echo ifRemember('isLink', 'yes', true); ?> /><label for="radio_islink_yes"> <?php echo I_WANT_NO_LINK; ?></label><br />
-                <input id="radio_islink_no"  type="radio" name="serendipity[isLink]" value="no" <?php  echo ifRemember('isLink', 'no'); ?> /><label for="radio_islink_no"> <?php echo I_WANT_IT_TO_LINK; ?></label>
-                <?php if ($file['hotlink']) { ?>
-                <input type="text"  name="serendipity[url]" size="30" value="<?php echo $file['path']; ?>" /><br />
-                <?php } else { ?>
-                <input type="text"  name="serendipity[url]" size="30" value="<?php echo $serendipity['serendipityHTTPPath'] . $serendipity['uploadHTTPPath'] . $file['path'] . $file['name'] .'.'. $file['extension']; ?>" /><br />
-                <?php } ?>
-                <?php serendipity_plugin_api::hook_event('frontend_image_selector_imagelink', $file); ?>
-                <br />
-
-                <b><?php echo COMMENT; ?>:</b>
-                <br />
-                <textarea id="serendipity_imagecomment" name="serendipity[imagecomment]" rows="5" cols="40"></textarea>
-                <?php serendipity_plugin_api::hook_event('frontend_image_selector_imagecomment', $file); ?>
-                <br />
-                <?php } ?>
-
-                <?php serendipity_plugin_api::hook_event('frontend_image_selector_more', $file); ?>
-
-                <input type="button" value="<?php echo BACK; ?>" onclick="history.go(-1);" />
-                <input type="button" value="<?php echo DONE; ?>" onclick="rememberOptions(); <?php echo $file['finishJSFunction']; ?>" />
-                <?php serendipity_plugin_api::hook_event('frontend_image_selector_submit', $file); ?>
-            </div>
-        </form>
-    </p>
-<?php
-    } else {
-        // What to do if file is no image.
-        // For the future, maybe allow the user to add title/link description and target window
 
-        if (!empty($serendipity['GET']['filename_only'])) {
-?>
-    <script type="text/javascript">
-        <?php serendipity_plugin_api::hook_event('frontend_image_add_filenameonly', $serendipity); ?>
-        self.opener.serendipity_imageSelector_addToElement('<?php echo htmlspecialchars($imgName); ?>', '<?php echo htmlspecialchars($serendipity['GET']['htmltarget']); ?>');
-        self.close();
-    </script>
-<?php
+            $showfile = $serendipity['serendipityPath'] . PATH_SMARTY_COMPILE . '/mediacache/cache_img' . (int)$serendipity['GET']['image'] . '_' . $width . '_' . $height;
+
+            if (!file_exists($showfile)) {
+                serendipity_makeThumbnail(
+                    $media['file']['realname'],
+                    $media['file']['path'],
+                    array(
+                        'width'  => $width,
+                        'height' => $height
+                    ),
+                    $showfile,
+                    true
+                );
+            }
+        }
+
+        $hit = serendipity_db_query("SELECT id
+                                       FROM {$serendipity['dbPrefix']}references
+                                      WHERE link = '" . serendipity_db_escape_string($_SERVER['HTTP_REFERER']) . "'
+                                        AND entry_id = " . (int)$serendipity['GET']['image'] . "
+                                        AND type = 'media'", true, 'assoc');
+        if (!is_array($hit) || !isset($hit['id'])) {
+            serendipity_db_query("INSERT INTO {$serendipity['dbPrefix']}references
+                                              (entry_id, link, name, type)
+                                       VALUES (" . (int)$serendipity['GET']['image'] . ", '" . serendipity_db_escape_string($_SERVER['HTTP_REFERER']) . "', 1, 'media')");
         } else {
-?>
-    <script type="text/javascript">
-    block = '<a href="<?php echo htmlspecialchars($imgName); ?>" title="<?php echo htmlspecialchars($file['name'] . '.' . $file['extension']); ?>" target="_blank"><?php echo htmlspecialchars($file['name'] . '.' . $file['extension']); ?></a>';
-    <?php serendipity_plugin_api::hook_event('frontend_image_add_unknown', $serendipity); ?>
-    if (self.opener.editorref) {
-        self.opener.editorref.surroundHTML(block, '');
-    } else {
-        self.opener.serendipity_imageSelector_addToBody(block, '<?php echo $serendipity['GET']['textarea']; ?>');
-    }
-    self.close();
-    </script>
-<?php
+            serendipity_db_query("UPDATE {$serendipity['dbPrefix']}references
+                                     SET name = name + 1
+                                   WHERE id   = " . (int)$hit['id']);
+        }
+
+        $curl = ($_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . ($_SERVER['HTTP_PORT'] != 80 ? ':' . $_SERVER['HTTP_PORT'] : '');
+        switch($serendipity['GET']['show']) {
+            case 'redirect':
+                header('Location: ' . $curl . $file['links']['imagelinkurl']);
+                exit;
+                break;
+
+            case 'redirectThumb':
+                header('Location: ' . $curl . $file['show_thumb']);
+                exit;
+                break;
+
+            case 'full':
+                $showfile = $file['realfile'];
+                break;
+
+            case 'thumb':
+                $showfile = $file['location'];
+                break;
         }
-    }
-    break;
 
+        if (!empty($showfile) && file_exists($showfile)) {
+            header('Content-Type: ' . $file['displaymime']);
+            header('Content-Length: ' . filesize($showfile));
+            header('Content-Disposition: ' . ($serendipity['GET']['disposition'] == 'attachment' ? 'attachment' : 'inline') . '; filename=' . basename($showfile));
+            $fp = fopen($showfile, 'rb');
+            fpassthru($fp);
+            exit;
+        }
+
+        $media['file']['props'] =& serendipity_fetchMediaProperties((int)$serendipity['GET']['image']);
+        serendipity_plugin_api::hook_event('media_getproperties_cached', $media['file']['props']['base_metadata'], $media['file']['realfile']);
+
+        serendipity_parseMediaProperties($keywords, $dprops, $media['file'], $media['file']['props'], 0, false);
+        serendipity_plugin_api::hook_event('frontend_media_showitem', $media);
+        if ($media['perm_denied']) {
+            unset($media['file']);
+            unset($file);
+        }
+        $showFile = 'admin/media_showitem.tpl';
+        break;
+
+    case 'start':
+        $media['case'] = 'start';
+        break;
+
+    case 'default':
     default:
+        if (!empty($serendipity['GET']['adminAction']) && $serendipity['GET']['adminModule'] == 'images' && $serendipity['GET']['adminAction'] != 'default') {
+            // Might need to set $serendipity['adminFile_redirect'] here.
+            $serendipity['adminFile']          = 'serendipity_admin_image_selector.php';
+            ob_start();
+            include S9Y_INCLUDE_PATH . 'include/admin/images.inc.php';
+            $media['external'] = ob_get_contents();
+            $media['case'] = 'external';
+            ob_end_clean();
+            break;
+        }
+
+        $media['case'] = 'default';
         $add_url = '';
         if (!empty($serendipity['GET']['htmltarget'])) {
-            $add_url .= '&amp;serendipity[htmltarget]=' . $serendipity['GET']['htmltarget'];
+            $add_url .= '&amp;serendipity[htmltarget]=' . htmlspecialchars($serendipity['GET']['htmltarget']);
         }
 
         if (!empty($serendipity['GET']['filename_only'])) {
-            $add_url .= '&amp;serendipity[filename_only]=' . $serendipity['GET']['filename_only'];
+            $add_url .= '&amp;serendipity[filename_only]=' . htmlspecialchars($serendipity['GET']['filename_only']);
         }
-?>
-    <h1><?php echo SELECT_FILE; ?></h1>
-    <h2><?php echo CLICK_FILE_TO_INSERT; ?></h2>
-    <br />
 
-    <?php
         if (!isset($serendipity['thumbPerPage2'])) {
             $serendipity['thumbPerPage2'] = 3;
         }
 
-        serendipity_displayImageList(
+        ob_start();
+        $block = serendipity_displayImageList(
           isset($serendipity['GET']['page'])   ? $serendipity['GET']['page']   : 1,
           $serendipity['thumbPerPage2'],
-          false,
+          ($serendipity['showMediaToolbar'] ? true : false),
           '?serendipity[step]=1' . $add_url . '&amp;serendipity[textarea]='. $serendipity['GET']['textarea'],
-          true
+          true,
+          null,
+          false
         );
+        $media['external'] = ob_get_contents();
+        ob_end_clean();
+        serendipity_smarty_fetch('MEDIA_LIST', $block);
 }
-?>
 
-</div>
-</body>
-</html>
+$media = array_merge($serendipity['GET'], $media);
+$serendipity['smarty']->assign_by_ref('media', $media);
+$serendipity['smarty']->display(serendipity_getTemplateFile($showFile, 'serendipityPath'));
 
-<?php
-/* vim: set sts=4 ts=4 expandtab : */
+/* vim: set sts=4 ts=4 expandtab : */
\ No newline at end of file
diff --git a/templates/default/admin/media_choose.tpl b/templates/default/admin/media_choose.tpl
new file mode 100644 (file)
index 0000000..5b7cf47
--- /dev/null
@@ -0,0 +1,344 @@
+<html>
+    <head>
+        <title>{$CONST.SERENDIPITY_ADMIN_SUITE}: {$CONST.SELECT_FILE}</title>
+        <meta http-equiv="Content-Type" content="text/html; charset={$CONST.LANG_CHARSET}" />
+        <link rel="stylesheet" type="text/css" href="{$media.css}" />
+        <link rel="stylesheet" type="text/css" href="{$media.css_tree}" />
+        <link rel="stylesheet" type="text/css" href="{$media.css_imgedit}" />
+
+        {if $media.is_imgedit}
+        <style type="text/css">
+        #outer {ldelim}
+            left: {$imgedit.zoombox_padding}px;
+        {rdelim}
+
+        #overlay {ldelim}
+            clip: rect({$imgedit.overlay_clip_top} {$imgedit.overlay_clip_right} {$imgedit.overlay_clip_bottom} {$imgedit.overlay_clip_left});
+        {rdelim}
+
+        #harea {ldelim}
+            left: {$imgedit.zoombox_x}px;
+            top: {$imgedit.zoombox_y}px;
+            visibility: {$imgedit.harea_visibility};
+        {rdelim}
+
+        #varea {ldelim}
+            left: {$imgedit.zoombox_x}px;
+            top: {$imgedit.zoombox_y}px;
+            visibility: {$imgedit.varea_visibility};
+        {rdelim}
+
+        #zoom {ldelim}
+            width: {$imgedit.zoombox_width}px;
+        {rdelim}
+
+        #scaletext {ldelim}
+            visibility: {$imgedit.scale_visibility};
+        {rdelim}
+
+        #outer {ldelim}
+            width:                       {$imgedit.img_width}px;
+            height:                      {$imgedit.img_height}px;
+            border:                      1px solid red;
+            position:                    relative;
+            display:                     block;
+        {rdelim}
+
+
+        </style>
+        <script type="text/javascript" src="bundled-libs/dragdrop.js" ></script>
+        <script type="text/javascript" src="bundled-libs/imgedit.js" ></script>
+        {/if}
+
+        <script type="text/javascript" src="bundled-libs/YahooUI/treeview/YAHOO.js"></script>
+        <script type="text/javascript" src="bundled-libs/YahooUI/treeview/treeview.js" ></script>
+    </head>
+
+    <script type="text/javascript">
+        function addLoadEvent(func) {ldelim}
+          var oldonload = window.onload;
+          if (typeof window.onload != 'function') {ldelim}
+            window.onload = func;
+          {rdelim} else {ldelim}
+            window.onload = function() {ldelim}
+              oldonload();
+              func();
+            {rdelim}
+          {rdelim}
+        {rdelim}
+
+        function SetCookie(name, value) {ldelim}
+            var today  = new Date();
+            var expire = new Date();
+            expire.setTime(today.getTime() + (60*60*24*30));
+            document.cookie = 'serendipity[' + name + ']='+escape(value) + ';expires=' + expire.toGMTString();
+        {rdelim}
+
+        function rememberOptions() {ldelim}
+            el = document.getElementById('imageForm');
+            for (i = 0; i < el.elements.length; i++) {ldelim}
+                elname = new String(el.elements[i].name);
+                elname = elname.replace(/\[/g, '_');
+                elname = elname.replace(/\]/g, '');
+
+                if (el.elements[i].type == 'radio') {ldelim}
+                    if (el.elements[i].checked) {ldelim}
+                        SetCookie(elname, el.elements[i].value);
+                    {rdelim}
+                {rdelim} else if (typeof(el.elements[i].options) == 'object') {ldelim}
+                    SetCookie(elname, el.elements[i].options[el.elements[i].selectedIndex].value);
+                {rdelim}
+            {rdelim}
+        {rdelim}
+
+{if $media.only_path}
+        if (parent.frames && parent.frames['tree']) {ldelim}
+            parent.frames['tree'].document.getElementById('newdirlink').href =
+                parent.frames['tree'].basenewdirurl +
+                "{$media.only_path|@escape}"
+        {rdelim}
+{/if}
+
+{if $media.case == 'default'}
+        function rename(id, fname) {ldelim}
+            if (newname = prompt('{$CONST.ENTER_NEW_NAME}' + fname, fname)) {ldelim}
+                newloc = '?{$media.token_url}&serendipity[adminModule]=images&serendipity[adminAction]=rename&serendipity[fid]='+ escape(id) + '&serendipity[newname]='+ escape(newname);
+                location.href=newloc;
+            }
+        {rdelim}
+{/if}
+
+{if $media.case == 'tree'}
+    var toggle_state = 'expand';
+    function treeToggleAll() {ldelim}
+        if (toggle_state == 'expand') {ldelim}
+            toggle_state = 'collapse';
+            tree.expandAll();
+        {rdelim} else {ldelim}
+            toggle_state = 'expand';
+            tree.collapseAll();
+            coreNode.expand();
+        {rdelim}
+    {rdelim}
+{/if}
+    </script>
+
+{if $media.frameset}
+    <frameset id="media_frame" cols="20%,*">
+        <frame id="media_frame_tree" frameborder="0" name="tree" scrolling="auto" src="{$serendipityHTTPPath}serendipity_admin_image_selector.php?{$media.GET_STRING}&amp;serendipity[step]=tree" />
+        <frame id="media_frame_main" frameborder="0" name="media" src="{$serendipityHTTPPath}serendipity_admin_image_selector.php?{$media.GET_STRING}&amp;serendipity[step]=default" />
+    </frameset>
+    </html>
+{else}
+<body id="{$media.body_id}">
+
+<div class="serendipityAdminContent">
+{if $media.case == 'external'}
+
+    <!-- EXTERNAL MEDIA START -->
+    {if $media.is_created OR $media.is_deleted}
+    <script type="text/javascript">
+    if (parent.frames['tree']) {ldelim}
+        parent.frames['tree'].location.href  = parent.frames['tree'].location.href;
+        parent.frames['media'].location.href = '{$serendipityHTTPPath}serendipity_admin_image_selector.php?serendipity[step]=default&serendipity[only_path]={$media.new_dir}';
+    {rdelim}
+    </script>
+    {/if}
+    {$media.external}
+
+    {if $media.is_imgedit}
+    {$IMGEDIT}
+    {/if}
+
+    <!-- EXTERNAL MEDIA END -->
+
+{elseif $media.case == 'default'}
+
+    <!-- MEDIA MANAGER START -->
+    <h1>{$CONST.SELECT_FILE}</h1>
+    <h2>{$CONST.CLICK_FILE_TO_INSERT}</h2>
+    <br />
+    {$media.external}
+    {$MEDIA_LIST}
+    <!-- MEDIA MANAGER END -->
+
+{elseif $media.case == 'choose'}
+
+    {if $perm_denied}
+        {$CONST.PERM_DENIED}
+    {else}
+
+    <!-- MEDIA SELECTION START -->
+    {$media.external}
+    <script type="text/javascript" language="JavaScript" src="{$serendipityHTTPPath}serendipity_define.js.php"></script>
+    <script type="text/javascript" language="Javascript" src="{$serendipityHTTPPath}serendipity_editor.js"></script>
+    <div>
+    {if $media.file.is_image}
+        {serendipity_hookPlugin hook="frontend_image_selector" eventData=$media.file hookAll=true}
+        <img align="right" src="{$media.file.imgsrc}" />
+        <h1>{$CONST.YOU_CHOSE|@sprintf:$media.file.realname}</h1>
+        <p>
+            <form action="#" method="GET" id="imageForm" name="serendipity[selForm]" onsubmit="serendipity_imageSelector_done()">
+                <div>
+                    {serendipity_hookPlugin hookAll=true hook='frontend_image_selector_hiddenfields' eventData=$media.file}
+                    <input type="hidden" name="imgThumbWidth"  value="{$media.file.thumbWidth}" />
+                    <input type="hidden" name="imgThumbHeight" value="{$media.file.thumbHeight}" />
+                    <input type="hidden" name="imgWidth"  value="{$media.file.dimensions_width}" />
+                    <input type="hidden" name="imgHeight" value="{$media.file.dimensions_height}" />
+                    <input type="hidden" name="imgID" value="{$media.imgID}" />
+                    <input type="hidden" name="baseURL" value="{$serendipityBaseURL}" />
+                    <input type="hidden" name="indexFile" value="{$serendipityIndexFile}" />
+                    <input type="hidden" name="imgName"   value="{$media.file.full_file}" />
+                    <input type="hidden" name="thumbName" value="{$media.file.show_thumb}" />
+                    <input type="hidden" name="hotlink" value="{$media.file.hotlink}" />
+                    {if $media.htmltarget}
+                    <input type="hidden" name="serendipity[htmltarget]" value="{$media.htmltarget|@escape}" />
+                    {/if}
+                    {if $media.filename_only}
+                    <input type="hidden" name="serendipity[filename_only]" value="{$media.filename_only|@escape}" />
+                    {/if}
+
+                    {if $media.file.fast_select}
+                    <script type="text/javascript">
+                        {serendipity_hookPlugin hookAll=true hook='frontend_image_add_filenameonly' eventData=$media.file}
+                        serendipity_imageSelector_done('{$media.textarea|@escape}');
+                    </script>
+                    {else}
+                    <b>{$CONST.IMAGE_SIZE}:</b>
+                    <br />
+                    <input id="radio_link_no" type="radio"  name="serendipity[linkThumbnail]" value="no" {'linkThumbnail'|@ifRemember:'no':true} /><label for="radio_link_no">{$CONST.I_WANT_THUMB}</label><br />
+                    <input id="radio_link_yes" type="radio" name="serendipity[linkThumbnail]" value="yes" {'linkThumbnail'|@ifRemember:'yes'} /><label for="radio_link_yes">{$CONST.I_WANT_BIG_IMAGE}</label><br />
+                    {serendipity_hookPlugin hookAll=true hook='frontend_image_selector_imagesize' eventData=$media.file}
+                    <br />
+
+                    {if NOT $media.filename_only}
+                    <b>{$CONST.IMAGE_ALIGNMENT}:</b>
+                    <br />
+                    <input type="radio" name="serendipity[align]" {'align'|@ifRemember:''}           value="" />     <img src="{serendipity_getFile file='img/img_align_top.png'}"   vspace="5" /><br />
+                    <input type="radio" name="serendipity[align]" {'align'|@ifRemember:'left':true}  value="left" /> <img src="{serendipity_getFile file='img/img_align_left.png'}"  vspace="5" /><br />
+                    <input type="radio" name="serendipity[align]" {'align'|@ifRemember:'right'}      value="right" /><img src="{serendipity_getFile file='img/img_align_right.png'}" vspace="5" /><br />
+                    {serendipity_hookPlugin hookAll=true hook='frontend_image_selector_imagealign' eventData=$media.file}
+                    <br />
+
+                    <b>{$CONST.IMAGE_AS_A_LINK}:</b>
+                    <br />
+                    <input id="radio_islink_yes" type="radio" name="serendipity[isLink]" value="yes" {'isLink'|@ifRemember:'yes':true} /><label for="radio_islink_yes"> {$CONST.I_WANT_NO_LINK}</label><br />
+                    <input id="radio_islink_no"  type="radio" name="serendipity[isLink]" value="no"  {'isLink'|@ifRemember:'no'} /><label for="radio_islink_no"> {$CONST.I_WANT_IT_TO_LINK}</label>
+                    {if $media.file.hotlink}
+                    <input type="text"  name="serendipity[url]" size="30" value="{$media.file.path}" /><br />
+                    {else}
+                        {serendipity_hookPlugin hookAll=true hook='frontend_image_selector_link_url' eventData=$media.file.links}
+                        <input type="text"  name="serendipity[url]" size="30" value="{$media.file.links.imagelinkurl}" /><br />
+                    {/if}
+
+                    <label id="select_image_target">{$CONST.MEDIA_TARGET}</label>
+                        <select name="serendipity[target]" id="select_image_target">
+                            <option value="none"   {'target'|@ifRemember:'none':false:'selected'}>{$CONST.NONE}</option>
+                            <option value="js"     {'target'|@ifRemember:'js':false:'selected'}>{$CONST.MEDIA_TARGET_JS}</option>
+                            <option value="plugin" {'target'|@ifRemember:'plugin':false:'selected'}>{$CONST.MEDIA_ENTRY}</option>
+                            <option value="_blank" {'target'|@ifRemember:'_blank':false:'selected'}>{$CONST.MEDIA_TARGET_BLANK}</option>
+                        </select>
+                    <br />
+
+                    {serendipity_hookPlugin hookAll=true hook='frontend_image_selector_imagelink2' eventData=$media.file}
+                    <br />
+
+                    <b>{$CONST.COMMENT}:</b>
+                    <br />
+                    <textarea id="serendipity_imagecomment" name="serendipity[imagecomment]" rows="5" cols="40">{$media.file.props.base_property.COMMENT1|@escape}</textarea>
+                    {serendipity_hookPlugin hookAll=true hook='frontend_image_selector_imagecomment' eventData=$media.file}
+                    <br />
+                    {/if}
+
+                    {serendipity_hookPlugin hookAll=true hook='frontend_image_selector_more' eventData=$media.file}
+
+                    <input type="button" value="{$CONST.BACK}" onclick="history.go(-1);" />
+                    <input type="button" value="{$CONST.DONE}" onclick="rememberOptions(); {$media.file.origfinishJSFunction}" />
+                    {serendipity_hookPlugin hookAll=true hook='frontend_image_selector_submit' eventData=$media.file}
+                {/if}
+            </div>
+        </form>
+    </p>
+    {else}
+        {if $media.filename_only}
+        <script type="text/javascript">
+            {serendipity_hookPlugin hookAll=true hook='frontend_image_add_filenameonly' eventData=$media}
+            parent.self.opener.serendipity_imageSelector_addToElement('{$media.file.full_file|escape}', '{$media.htmltarget|@escape}');
+            parent.self.close();
+        </script>
+        {else}
+        <script type="text/javascript">
+            block = '<a href="{$media.file.full_file}" title="{$media.file.realname|@escape}" target="_blank">{$media.file.realname|@escape}</a>';
+            {serendipity_hookPlugin hookAll=true hook='frontend_image_add_unknown' eventData=$media}
+            if (parent.self.opener.editorref) {ldelim}
+                parent.self.opener.editorref.surroundHTML(block, '');
+            {rdelim} else {ldelim}
+                parent.self.opener.serendipity_imageSelector_addToBody(block, '{$media.textarea}');
+            {rdelim}
+            parent.self.close();
+        </script>
+        {/if}
+    {/if}
+    {/if}
+{elseif $media.case == 'tree'}
+    <div id="content">
+        <form name="mainForm" action="javscript:;">
+            <div class="newsItem">
+                <div id="expandcontractdiv">
+                    <a href="javascript:treeToggleAll()">{$CONST.TOGGLE_ALL}</a>
+                </div>
+                <div id="treeDiv1"></div>
+            </div>
+        </form>
+    </div>
+
+    <div id="footerContainer">
+        <div id="footer">
+            <p><a id="newdirlink" target="media" class="serendipityPrettyButton" href="{$serendipityHTTPPath}serendipity_admin_image_selector.php?serendipity[step]=directoryCreate">{$CONST.WORD_NEW}</a></p>
+            <p><a id="managedirlink" target="media" class="serendipityPrettyButton" href="{$serendipityHTTPPath}serendipity_admin_image_selector.php?serendipity[step]=default&amp;serendipity[adminModule]=images&amp;serendipity[adminAction]=directorySelect">{$CONST.MANAGE_DIRECTORIES}</a></p>
+        </div>
+    </div>
+
+    <script type="text/javascript">
+       var tree;
+       var nodes = new Array();
+       var nodeIndex;
+       var coreNode = '';
+       var last_path = '';
+       var last_node = new Array();
+       var baseurl       = '{$serendipityHTTPPath}serendipity_admin_image_selector.php?{$media.GET_STRING}&amp;serendipity[step]=default&amp;serendipity[only_path]=';
+    var basenewdirurl = '{$serendipityHTTPPath}serendipity_admin_image_selector.php?{$media.GET_STRING}&amp;serendipity[step]=directoryCreate&amp;&amp;serendipity[only_path]=';
+
+       function treeInit() {ldelim}
+               tree = new YAHOO.widget.TreeView("treeDiv1");
+               tree.onExpand = function(node) {ldelim}
+                   document.getElementById('newdirlink').href = basenewdirurl + node.data.relpath;
+               {rdelim};
+
+        coreNode          = new YAHOO.widget.TextNode("{$CONST.MEDIA}", tree.getRoot(), false);
+               coreNode.href     = baseurl;
+               coreNode.target   = 'media';
+        coreNode.expanded = true;
+        {foreach from=$media.paths item="item" key="id"}
+        mydir = {ldelim} id: "{$id}", label: "{$item.name}", target : "media", href: baseurl + "{$item.relpath}", relpath: "{$item.relpath}" {rdelim};
+        {if $item.depth == 1}
+        tmpNode = new YAHOO.widget.TextNode(mydir, coreNode, false);
+        {else}
+        if (last_node[{$item.depth}-1]) {ldelim}
+            tmpNode = new YAHOO.widget.TextNode(mydir, last_node[{$item.depth} - 1], false);
+        {rdelim} else {ldelim}
+            tmpNode = new YAHOO.widget.TextNode(mydir, coreNode, false);
+        {rdelim}
+        {/if}
+        last_node[{$item.depth}] = tmpNode;
+        {/foreach}
+               tree.draw();
+       {rdelim}
+
+    addLoadEvent(treeInit);
+    </script>
+{/if}
+</div>
+</body>
+</html>
+{/if}
\ No newline at end of file