--- /dev/null
+<?php\r
+/**\r
+ * ImprovedMedia plugin for Nucleus CMS\r
+ * Version 3.0.1 for PHP5\r
+ * Written By Mocchi, Feb.28, 2010\r
+ * \r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 3\r
+ * of the License, or (at your option) any later version.\r
+ */\r
+\r
+class NP_ImprovedMedia extends NucleusPlugin {\r
+ // private\r
+ private $baseUrl = ''; //string\r
+ // private\r
+ private $blog = FALSE; //object\r
+ // private\r
+ private $blogid = 1; //integer\r
+ \r
+ // public\r
+ public function __construct() {\r
+ global $CONF;\r
+ $this->baseUrl = str_replace($CONF['AdminURL'], '', $this->getAdminURL());\r
+ self::setBlogObject();\r
+ return;\r
+ }\r
+ \r
+ // public\r
+ public function getName() { return 'ImprovedMedia'; }\r
+ // public\r
+ public function getAuthor() { return 'Mocchi'; }\r
+ // public\r
+ public function getURL() { return 'http://japan.nucleuscms.org/wiki/plugins:improvedmedia'; }\r
+ // public\r
+ public function getVersion() { return '3.0.1 for PHP5'; }\r
+ // public\r
+ public function getMinNucleusVersion() { return 223; }\r
+ // public\r
+ public function getDescription() { return _IM_DESCRIPTION; }\r
+ \r
+ // public\r
+ public function supportsFeature($what) {\r
+ global $CONF;\r
+ switch($what) {\r
+ case 'HelpPage':\r
+ case 'SqlTablePrefix':\r
+ return 1;\r
+ default:\r
+ return 0;\r
+ }\r
+ }\r
+ \r
+ // public\r
+ public function init() {\r
+ $language = preg_replace( '#[/|\\\\]#', '', getLanguageName());\r
+ if(file_exists($this->getDirectory() .'lang/' . $language.'.php'))\r
+ include_once($this->getDirectory() . 'lang/' . $language.'.php');\r
+ else\r
+ include_once($this->getDirectory() . 'lang/english.php');\r
+ \r
+ if($this->getOption('IM_EACHBLOGDIR') == 'yes')\r
+ self::setDirectories();\r
+ \r
+ return;\r
+ }\r
+ \r
+ // public\r
+ public function install() {\r
+ $this->createOption('IM_PRIVATE', _IM_OPTION_PRIVATE , 'yesno', 'yes');\r
+ $this->createOption('IM_ITEMDISPLAY', _IM_OPTION_ITEMDISPLAY , 'text', '10', 'datatype=numerical' );\r
+ $this->createOption('IM_GREYBOX', _IM_OPTION_GREYBOX , 'yesno', 'no');\r
+ $this->createOption('IM_EACHBLOGDIR', _IM_OPTION_EACHBLOGDIR , 'yesno', 'no');\r
+ return;\r
+ }\r
+ \r
+ // public\r
+ public function unInstall() {\r
+ $this->deleteOption('IM_PRIVATE');\r
+ $this->deleteOption('IM_ITEMDISPLAY');\r
+ $this->deleteOption('IM_GREYBOX');\r
+ $this->deleteOption('IM_EACHBLOGDIR');\r
+ return;\r
+ }\r
+ \r
+ // public\r
+ public function getEventList() {\r
+ return array('InitSkinParse', 'AdminPrePageHead', 'BookmarkletExtraHead');\r
+ }\r
+ \r
+ // public\r
+ public function doAction($type) {\r
+ global $DIR_LIBS;\r
+ if(!class_exists('MEDIA', FALSE))\r
+ include($DIR_LIBS . 'MEDIA.php');\r
+ if(!class_exists('MEDIA_VARIABLES', FALSE))\r
+ include($this->getDirectory() . 'MEDIA_VARIABLES.php');\r
+ if(!class_exists('MEDIA_CONTROL', FALSE))\r
+ include($this->getDirectory() . 'MEDIA_CONTROL.php');\r
+ \r
+ new MEDIA_CONTROL($this);\r
+ exit;\r
+ }\r
+ \r
+ // public\r
+ public function doSkinVar($data, $place) {\r
+ global $CONF, $member;\r
+ if($member->isLoggedIn()) {\r
+ if($this->getOption('IM_GREYBOX') == 'yes') {\r
+ switch($place) {\r
+ case 'head':\r
+ echo '<script type="text/javascript">' . "\n" .\r
+ '<!--' . "\n" . \r
+ ' var GB_ROOT_DIR = "' . $CONF['AdminURL'] . $this->baseUrl . 'greybox/";' . "\n" .\r
+ '// -->' . "\n" .\r
+ '</script>' . "\n" .\r
+ '<script type="text/javascript" src="' . $CONF['AdminURL'] . $this->baseUrl . 'greybox/AJS.js"></script>' . "\n" .\r
+ '<script type="text/javascript" src="' . $CONF['AdminURL'] . $this->baseUrl . 'greybox/AJS_fx.js"></script>' . "\n" .\r
+ '<script type="text/javascript" src="' . $CONF['AdminURL'] . $this->baseUrl . 'greybox/gb_scripts.js"></script>' . "\n".\r
+ '<link href="' . $CONF['AdminURL'] . $this->baseUrl . 'greybox/gb_styles.css" rel="stylesheet" type="text/css" />' . "\n";\r
+ break;\r
+ case 'anchor':\r
+ echo '<a href="' . $CONF['ActionURL'] . '?action=plugin&name=ImprovedMedia&astool=1&blogid=' . $this->blogid . '" onclick="GB_showCenter(\'Media Control' . _IM_HEADER_TEXT . '\',this.href,540,600); return false;">' . _IM_ANCHOR_TEXT . '</a>';\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ } else {\r
+ if($place == 'anchor') {\r
+ echo '<a href="' . $CONF['ActionURL'] . '?action=plugin&name=ImprovedMedia&astool=1&blogid=' . $this->blogid . '" onclick="window.open(this.href , \'MediaControl\' , \'width=600 , height=600, scrollbars=1\'); return false;">' . _IM_ANCHOR_TEXT . '</a>';\r
+ }\r
+ }\r
+ }\r
+ return;\r
+ }\r
+ \r
+ // public\r
+ public function event_InitSkinParse(&$data) {\r
+ return;\r
+ }\r
+ \r
+ // public\r
+ public function event_BookmarkletExtraHead(&$data) {\r
+ self::addHeader($data['extrahead']);\r
+ return;\r
+ }\r
+ \r
+ // public\r
+ public function event_AdminPrePageHead(&$data) {\r
+ if(($data['action'] == 'createitem') || ($data['action'] == 'itemedit'))\r
+ self::addHeader($data['extrahead']);\r
+ return;\r
+ }\r
+ \r
+ // private\r
+ private function addHeader(&$extrahead) {\r
+ global $CONF;\r
+ \r
+ if($this->getOption('IM_GREYBOX') == 'yes') {\r
+ $extrahead .= '<script type="text/javascript">' ."\n" .\r
+ '<!--' ."\n".\r
+ 'function addMedia() {' ."\n".\r
+ ' GB_showCenter(\'Media Control' . _IM_HEADER_TEXT . '\',\'' . $CONF['ActionURL'] . '?action=plugin&name=ImprovedMedia&mode=upload_select&astool=0&blogid=' . $this->blogid . '\',540,600);' . "\n" .\r
+ '}' . "\n";\r
+ } else {\r
+ $extrahead .= '<script type="text/javascript">' ."\n" .\r
+ '<!--' ."\n".\r
+ 'function addMedia() {' ."\n".\r
+ ' window.open(\'' . $CONF['ActionURL'] . '?action=plugin&name=ImprovedMedia&mode=upload_select&astool=0&blogid=' . $this->blogid . '\' , \'MediaControl\' , \'width=600 , height=600, scrollbars=1\');' . "\n" .\r
+ '}' . "\n";\r
+ }\r
+ $extrahead .= 'function includeImage(collection, filename, type, width, height, text) {' . "\n" .\r
+ ' var fullName;' . "\n" .\r
+ ' if(isNaN(collection) || (nucleusAuthorId != collection)) {' . "\n" .\r
+ ' fullName = collection + \'/\' + filename;' . "\n" .\r
+ ' } else {' . "\n" .\r
+ ' fullName = filename;' . "\n" .\r
+ ' }' . "\n" .\r
+ ' var replaceBy;' . "\n" .\r
+ ' switch(type) {' . "\n" .\r
+ ' case \'popup\':' . "\n" .\r
+ ' replaceBy = \'<%popup(\' + fullName + \'|\'+width+\'|\'+height+\'|\' + text +\')%>\';' . "\n" .\r
+ ' break;' . "\n" .\r
+ ' case \'inline\':' . "\n" .\r
+ ' default:' . "\n" .\r
+ ' replaceBy = \'<%image(\' + fullName + \'|\'+width+\'|\'+height+\'|\' + text +\')%>\';' . "\n" .\r
+ ' }' . "\n" .\r
+ ' insertAtCaret(replaceBy);' . "\n" .\r
+ ' updAllPreviews();' . "\n" .\r
+ '}' . "\n" .\r
+ '' . "\n" .\r
+ 'function includeOtherMedia(collection, filename, text) {' . "\n" .\r
+ ' var fullName;' . "\n" .\r
+ ' if(isNaN(collection) || (nucleusAuthorId != collection)) {' . "\n" .\r
+ ' fullName = collection + \'/\' + filename;' . "\n" .\r
+ ' } else {' . "\n" .\r
+ ' fullName = filename;' . "\n" .\r
+ ' }' . "\n" .\r
+ ' var replaceBy = \'<%media(\' + fullName + \'|\' + text +\')%>\';' . "\n" .\r
+ ' insertAtCaret(replaceBy);' . "\n" .\r
+ ' updAllPreviews();' . "\n" .\r
+ '}' .\r
+ '// -->' ."\n".\r
+ '</script>'."\n";\r
+ \r
+ if($this->getOption('IM_GREYBOX') == 'yes') {\r
+ $extrahead .= '<script type="text/javascript">' . "\n" .\r
+ '<!--' . "\n" .\r
+ ' var GB_ROOT_DIR = "' . $CONF['AdminURL'] . $this->baseUrl . 'greybox/";' . "\n" .\r
+ '// -->' . "\n" .\r
+ '</script>' . "\n" .\r
+ '<script type="text/javascript" src="' . $CONF['AdminURL'] . $this->baseUrl . 'greybox/AJS.js"></script>' . "\n" .\r
+ '<script type="text/javascript" src="' . $CONF['AdminURL'] . $this->baseUrl . 'greybox/AJS_fx.js"></script>' . "\n" .\r
+ '<script type="text/javascript" src="' . $CONF['AdminURL'] . $this->baseUrl . 'greybox/gb_scripts.js"></script>' . "\n" .\r
+ '<link href="' . $CONF['AdminURL'] . $this->baseUrl . 'greybox/gb_styles.css" rel="stylesheet" type="text/css" />' . "\n";\r
+ }\r
+ return;\r
+ }\r
+ \r
+ // private\r
+ private function setBlogObject() {\r
+ global $manager, $blog;\r
+ \r
+ $blogid = intRequestVar('blogid');\r
+ $itemid = intRequestVar('itemid');\r
+ \r
+ if($blog) {\r
+ $this->blog =& $blog;\r
+ $this->blogid =& $blog->getID();\r
+ return;\r
+ }\r
+ \r
+ if($blogid && $manager->existsBlogID($blogid)) {\r
+ $this->blog =& $manager->getBlog($blogid);\r
+ $this->blogid =& $this->blog->getID();\r
+ return;\r
+ }\r
+ \r
+ if($itemid && $manager->existsItem($itemid, 1, 1)) {\r
+ $this->blog =& $manager->getBlog(getBlogIDFromItemID($itemid));\r
+ $this->blogid =& $this->blog->getID();\r
+ return;\r
+ }\r
+ }\r
+ \r
+ // private\r
+ private function setDirectories() {\r
+ global $DIR_MEDIA, $CONF;\r
+ \r
+ if(!$this->blog)\r
+ return;\r
+ \r
+ $blog =& $this->blog;\r
+ $bshortname =& $blog->getShortName();\r
+ \r
+ if($this->blogid !== 1) {\r
+ $DIR_MEDIA = preg_replace('#(.+)/(.+)?/$#',"$1/$bshortname/$2/",$DIR_MEDIA);\r
+ $CONF['MediaURL'] = preg_replace( '#(.+)/(.+)?/$#' , "$1/$bshortname/$2/" , $CONF['MediaURL'] );\r
+ }\r
+ return;\r
+ }\r
+ \r
+ // public\r
+ public function & getBlog() {\r
+ return $this->blog;\r
+ }\r
+ \r
+ // public\r
+ public function & getBlogid() {\r
+ return $this->blogid;\r
+ }\r
+ \r
+ // public\r
+ public function getBaseURL() {\r
+ return $this->baseUrl;\r
+ }\r
+}\r
+?>
\ No newline at end of file