OSDN Git Service

Merge branch 'skinnable-master'
[nucleus-jp/nucleus-next.git] / nucleus / bookmarklet.php
index 89ccdfb..836b920 100644 (file)
@@ -25,41 +25,64 @@ $CONF['UsingAdminArea'] = 1;
 // include all classes and config data
 include('../config.php');
 
-$action = requestVar('action');
-
-if ( $action == 'contextmenucode' )
+<<<<<<< HEAD
+=======
+// get skin object
+$skinid = $member->bookmarklet;
+if ( !Skin::existsID($skinid) )
 {
-       bm_doContextMenuCode();
-       exit;
+       $skinid = $CONF['BookmarkletSkin'];
+       if ( !Skin::existsID($skinid) )
+       {
+               sendContentType('text/html');
+               echo _ERROR_SKIN;
+               exit;
+       }
 }
+$skin =& $manager->getSkin($skinid, 'AdminActions', 'AdminSkin');
 
+>>>>>>> skinnable-master
+// check logged-in or pass through
+$action = requestVar('action');
 if ( !$member->isLoggedIn() )
 {
-       bm_loginAndPassThrough();
+<<<<<<< HEAD
+       bm_loginAndPassThrough($action);
+=======
+       bm_loginAndPassThrough($skin, $action);
+>>>>>>> skinnable-master
        exit;
 }
-
-// on successfull login
-if ( ($action == 'login') && ($member->isLoggedIn()) )
+else if ( $action == 'login')
 {
        $action = requestVar('nextaction');
 }
 
-if ($action == '') {
+$action = strtolower($action);
+
+if ( $action == 'contextmenucode' )
+{
+       bm_doContextMenuCode();
+       exit;
+}
+else if ( $action == '' )
+{
        $action = 'add';
 }
 
+<<<<<<< HEAD
+// send HTTP 1.1 message header for Content-Type
 sendContentType('text/html', 'bookmarklet-' . $action);
 
+=======
+>>>>>>> skinnable-master
 // check ticket
-$action = strtolower($action);
 $aActionsNotToCheck = array('login', 'add', 'edit');
-
 if ( !in_array($action, $aActionsNotToCheck) )
 {
        if ( !$manager->checkTicket() )
        {
-               bm_doError(_ERROR_BADTICKET);
+               bm_doError($skin, _ERROR_BADTICKET);
        }
 }
 
@@ -68,32 +91,32 @@ switch ( $action )
 {
        // adds the item for real
        case 'additem':
-               bm_doAddItem();
+               bm_doAddItem($skin);
                break;
        
        // shows the edit item form
        case 'edit':
-               bm_doEditForm();
+               bm_doEditForm($skin);
                break;
        
        // edits the item for real
        case 'edititem':
-               bm_doEditItem();
+               bm_doEditItem($skin);
                break;
        
        // on login, 'action' gets changed to 'nextaction'
        case 'login':
-               bm_doError('Something went wrong');
+               bm_doError($skin, 'Something went wrong');
                break;
        
        // shows the fill in form
        case 'add':
        default:
-               bm_doShowForm();
+               bm_doShowForm($skin);
                break;
 }
 
-function bm_doAddItem()
+function bm_doAddItem($skin)
 {
        global $member, $manager, $CONF;
        
@@ -102,7 +125,7 @@ function bm_doAddItem()
        
        if ( $result['status'] == 'error' )
        {
-               bm_doError($result['message']);
+               bm_doError($skin, $result['message']);
        }
        
        $blogid = getBlogIDFromItemID($result['itemid']);
@@ -119,10 +142,16 @@ function bm_doAddItem()
                $extrahead = '';
        }
        
+<<<<<<< HEAD
        bm_message(_ITEM_ADDED, _ITEM_ADDED, $message,$extrahead);
+=======
+       bm_message($skin, _ITEM_ADDED, $message,$extrahead);
+>>>>>>> skinnable-master
+       
+       return;
 }
 
-function bm_doEditItem()
+function bm_doEditItem($skin)
 {
        global $member, $manager, $CONF;
        
@@ -132,7 +161,7 @@ function bm_doEditItem()
        // only allow if user is allowed to alter item
        if ( !$member->canUpdateItem($itemid, $catid) )
        {
-               bm_doError(_ERROR_DISALLOWED);
+               bm_doError($skin, _ERROR_DISALLOWED);
        }
        
        $body = postVar('body');
@@ -150,7 +179,7 @@ function bm_doEditItem()
        }
        
        // create new category if needed (only on edit/changedate)
-       if ( strstr($catid,'newcat') )
+       if ( i18n::strpos($catid,'newcat') === 0 )
        {
                // get blogid
                list($blogid) = sscanf($catid, "newcat-%d");
@@ -162,7 +191,7 @@ function bm_doEditItem()
                // show error when sth goes wrong
                if ( !$catid )
                {
-                       bm_doError('Could not create new category');
+                       bm_doError($skin, 'Could not create new category');
                }
        }
        
@@ -185,7 +214,7 @@ function bm_doEditItem()
                        $timestamp = 0;
                        break;
                default:
-                       bm_doError('Something went wrong');
+                       bm_doError($skin, 'Something went wrong');
        }
        
        // update item for real
@@ -196,81 +225,113 @@ function bm_doEditItem()
                Item::delete($draftid);
        }
        
-       // show success message
-       if ( $catid != intPostVar('catid') )
+       if ( $result['status'] == 'newcategory' )
        {
-               bm_message(_ITEM_UPDATED, _ITEM_UPDATED, 'Item was added, and a new category was created. <a href="index.php?action=categoryedit&amp;blogid=' . $blog->getID() . '&amp;catid=' . $catid . '" onclick="if (event &amp;&amp; event.preventDefault) event.preventDefault(); window.open(this.href); return false;" title="Opens in new window">Click here to edit the name and description of the category.</a>', '');
+               $href           = "index.php?action=categoryedit&amp;blogid={$blogid}&amp;catid={$result['catid']}";
+               $onclick        = 'if (event &amp;&amp; event.preventDefault) event.preventDefault(); window.open(this.href); return false;';
+               $title          = _BOOKMARKLET_NEW_WINDOW;
+               $aTag           = " <a href=\"{$href}\" onclick=\"{$onclick}\" title=\"{$title}\">";
+               $message        = _BOOKMARKLET_NEW_CATEGORY . $aTag . _BOOKMARKLET_NEW_CATEGORY_EDIT . '</a>';
        }
        else
        {
-               bm_message(_ITEM_UPDATED, _ITEM_UPDATED, _ITEM_UPDATED, '');
+               $message = _ITEM_ADDED;
        }
+       
+<<<<<<< HEAD
+       return;
 }
 
-function bm_loginAndPassThrough()
+function bm_loginAndPassThrough($action='add')
+=======
+       // show success message
+       bm_message($skin, _ITEM_ADDED, $message, '');
+       return;
+}
+
+function bm_loginAndPassThrough($skin, $action='add')
+>>>>>>> skinnable-master
 {
+       /*
+        * TODO: これを出力させる
        $blogid = intRequestVar('blogid');
+       $itemid = intRequestVar('itemid');
        $log_text = requestVar('logtext');
        $log_link = requestVar('loglink');
        $log_linktitle = requestVar('loglinktitle');
        
+<<<<<<< HEAD
        echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
        echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n";
        echo "<head>\n";
-       echo "<title>Nucleus</title>\n";
+       echo "<title>Nucleus CMS Bookmarklet</title>\n";
        
        bm_style();
        
        echo "</head>\n";
        echo "<body>\n";
        echo '<h1>' . _LOGIN_PLEASE . "</h1>\n";
-       
        echo "<form method=\"post\" action=\"bookmarklet.php\">\n";
-       echo "<dl>\n";
-       echo '<dt>' . _LOGINFORM_NAME . "</dt>\n";
-       echo "<dd><input type=\"text\" name=\"login\" value=\"\" /></dd>\n";
-       echo '<dt>' . _LOGINFORM_PWD . ":</dt>\n";
-       echo "<input type=\"password\" name=\"password\" value=\"\" /></dd>\n";
-       echo "</dl>\n";
        echo "<p>\n";
-       echo '<input type=\"hidden\" name="blogid" value="' . Entity::hsc($blogid). '" />' . "\n";
-       echo '<input type=\"hidden\" name="logtext" value="' . Entity::hsc($log_text) . '" />' . "\n";
-       echo '<input type=\"hidden\" name="loglink" value="' . Entity::hsc($log_link) . '" />' . "\n";
-       echo '<input type=\"hidden\" name="loglinktitle" value="' . Entity::hsc($log_linktitle) . '" />' . "\n";
+       echo _LOGINFORM_NAME . "<input type=\"text\" name=\"login\" value=\"\" /><br />\n";
+       echo _LOGINFORM_PWD . "<input type=\"password\" name=\"password\" value=\"\" /><br />\n";
+=======
+>>>>>>> skinnable-master
+       echo '<input type="hidden" name="blogid" value="' . Entity::hsc($blogid). '" />' . "\n";
+       echo '<input type="hidden" name="itemid" value="' . Entity::hsc($itemid). '" />' . "\n";
+       echo '<input type="hidden" name="logtext" value="' . Entity::hsc($log_text) . '" />' . "\n";
+       echo '<input type="hidden" name="loglink" value="' . Entity::hsc($log_link) . '" />' . "\n";
+       echo '<input type="hidden" name="loglinktitle" value="' . Entity::hsc($log_linktitle) . '" />' . "\n";
+       echo "<input type=\"hidden\" name=\"nextaction\" value=\"{$action}\" />\n";
+<<<<<<< HEAD
        echo '<button type="submit" name="action" value="login">' . _LOGIN . "</button>\n";
        echo "</p>\n";
        echo "</form>\n";
-       echo '<p><a href=\"bookmarklet.php\" onclick=\"window.close();\">' . _POPUP_CLOSE . "</a></p>\n";
+       echo '<p><a href="bookmarklet.php" onclick="window.close();">' . _POPUP_CLOSE . "</a></p>\n";
        echo "</body>\n";
        echo "</html>\n";
+=======
+       */
+       
+       $skin->parse('showlogin');
+>>>>>>> skinnable-master
+       
        return;
 }
 
-function bm_doShowForm()
+function bm_doShowForm($skin)
 {
-       global $member;
+       global $manager, $member;
        
-       $blogid = intRequestVar('blogid');
-       $log_text = trim(requestVar('logtext'));
-       $log_link = requestVar('loglink');
-       $log_linktitle = requestVar('loglinktitle');
+       $blogid                 = intRequestVar('blogid');
+       $log_text               = trim(requestVar('logtext'));
+       $log_link               = requestVar('loglink');
+       $log_linktitle  = requestVar('loglinktitle');
        
        if ( !Blog::existsID($blogid) )
        {
-               bm_doError(_ERROR_NOSUCHBLOG);
+               bm_doError($skin, _ERROR_NOSUCHBLOG);
+       }
+<<<<<<< HEAD
+       else
+       {
+               $blog =& $manager->getBlog($blogid);
        }
        
        if ( !$member->isTeamMember($blogid) )
+=======
+       else if ( !$member->isTeamMember($blogid) )
+>>>>>>> skinnable-master
        {
-               bm_doError(_ERROR_NOTONTEAM);
+               bm_doError($skin, _ERROR_NOTONTEAM);
        }
        
+       $blog =& $manager->getBlog($blogid);
+       
        $logje = '';
        
        if ( $log_text )
        {
-               $log_text = preg_replace("/%u([0-9a-f]{3,4})/i","&#x$1;",urldecode($log_text));
-               $log_text = html_entity_decode($log_text, null, i18n::get_current_charset());
                $logje .= '<blockquote><div>"' . Entity::hsc($log_text) . '"</div></blockquote>' . "\n";
        }
        
@@ -278,26 +339,54 @@ function bm_doShowForm()
        {
                $log_linktitle = $log_link;
        }
-       else
-       {
-               $log_linktitle = preg_replace("/%u([0-9a-f]{3,4})/i","&#x$1;",urldecode($log_linktitle));
-               $log_linktitle = html_entity_decode($log_linktitle, null, i18n::get_current_charset());
-       }
        
        if ( $log_link )
        {
                $logje .= '<a href="' . Entity::hsc($log_link) . '">' . Entity::hsc($log_linktitle) . '</a>';
        }
        
+<<<<<<< HEAD
+       $variables = array();
+       $variables['body'] = $logje;
+       $variables['title'] = Entity::hsc($log_linktitle);
+       
+       $handler = new PageFactory($blog);
+       $handler->setVariables($variables);
+       
+       $contents = $handler->getTemplateFor('bookmarklet', 'add');
+       $manager->notify('PreAddItemForm', array('contents' => &$contents, 'blog' => &$blog));
+       
+       $parser = new Parser($handler);
+       $parser->parse($contents);
+       
+=======
+       $item = array();
        $item['body'] = $logje;
        $item['title'] = Entity::hsc($log_linktitle);
        
-       $factory = new PageFactory($blogid);
-       $factory->createAddForm('bookmarklet', $item);
+       $data = array(
+               'blog'          => &$blog,
+               'item'          => &$item,
+               'contents'      => &$item
+       );
+       $manager->notify('PreAddItemForm', $data);
+       
+       if ( $blog->convertBreaks() )
+       {
+               $item['body'] = removeBreaks($item['body']);
+       }
+       
+       Admin::$blog = &$blog;
+       Admin::$contents = &$item;
+       
+       Admin::$action = 'createitem';
+       $skin->parse('createitem');
+       
+>>>>>>> skinnable-master
        return;
 }
 
-function bm_doEditForm()
+function bm_doEditForm($skin)
 {
        global $member, $manager;
        
@@ -305,38 +394,66 @@ function bm_doEditForm()
        
        if ( !$manager->existsItem($itemid, 0, 0) )
        {
-               bm_doError(_ERROR_NOSUCHITEM);
+               bm_doError($skin, _ERROR_NOSUCHITEM);
        }
-       
-       if ( !$member->canAlterItem($itemid) )
+       else if ( !$member->canAlterItem($itemid) )
        {
-               bm_doError(_ERROR_DISALLOWED);
+               bm_doError($skin, _ERROR_DISALLOWED);
        }
        
-       $item =& $manager->getItem($itemid, 1, 1);
+<<<<<<< HEAD
+       $variables =& $manager->getItem($itemid, 1, 1);
+=======
+>>>>>>> skinnable-master
        $blog =& $manager->getBlog(getBlogIDFromItemID($itemid) );
+       $item =& $manager->getItem($itemid, 1, 1);
        
-       $manager->notify('PrepareItemForEdit', array('item' => &$item) );
+<<<<<<< HEAD
+       $manager->notify('PrepareItemForEdit', array('item' => &$variables) );
+=======
+       $data = array(
+               'blog' => &$blog,
+               'item' => &$item
+       );
+       $manager->notify('PrepareItemForEdit', $data);
+>>>>>>> skinnable-master
        
        if ( $blog->convertBreaks() )
        {
-               $item['body'] = removeBreaks($item['body']);
-               $item['more'] = removeBreaks($item['more']);
+               $variables['body'] = removeBreaks($variables['body']);
+               $variables['more'] = removeBreaks($variables['more']);
        }
        
-       $formfactory = new PageFactory($blog->getID() );
-       $formfactory->createEditForm('bookmarklet', $item);
+<<<<<<< HEAD
+       $handler = new PageFactory($blog);
+       $handler->setVariables($variables);
+       
+       $contents = $handler->getTemplateFor('bookmarklet', 'edit');
+       
+       $parser = new Parser($handler);
+       $parser->parse($contents);
+       
        return;
 }
+=======
+       Admin::$blog = &$blog;
+       Admin::$contents = &$item;
+       
+       Admin::$action = 'itemedit';
+       $skin->parse('itemedit');
+       
+       return;}
+>>>>>>> skinnable-master
 
-function bm_doError($msg)
+function bm_doError($skin, $msg)
 {
-       bm_message(_ERROR, _ERRORMSG, $msg);
+       bm_message($skin, _ERRORMSG, $msg);
        die;
 }
 
-function bm_message($title, $head, $msg, $extrahead = '')
+function bm_message($skin, $title, $msg, $extrahead = '')
 {
+<<<<<<< HEAD
        echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
        echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n";
        echo "<head>\n";
@@ -352,27 +469,40 @@ function bm_message($title, $head, $msg, $extrahead = '')
        echo '<p><a href="bookmarklet.php" onclick="window.close();window.opener.location.reload();">' . _POPUP_CLOSE . "</a></p>\n";
        echo "</body>\n";
        echo "</html>\n";
+=======
+       Admin::$extrahead = $extrahead;
+       Admin::$headMess = $msg;
+       $skin->parse('adminerrorpage');
+>>>>>>> skinnable-master
+       
        return;
 }
 
-function bm_style()
+function bm_doContextMenuCode($width=600, $height=500)
 {
-       echo '<link rel="stylesheet" type="text/css" href="styles/bookmarklet.css" />' . "\n";
-       echo '<link rel="stylesheet" type="text/css" href="styles/addedit.css" />' . "\n";
+<<<<<<< HEAD
+       echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"styles/bookmarklet.css\" />\n";
+       echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"styles/addedit.css\" />\n";
+       return;
 }
 
-function bm_doContextMenuCode()
+function bm_doContextMenuCode($width=600, $height=500)
 {
        global $CONF;
        
+=======
+       global $CONF;   
+>>>>>>> skinnable-master
        $blogid = (integer) intGetVar('blogid');
        
        echo "<script type=\"text/javascript\" defer=\"defer\">\n";
-       echo "  doc = external.menuArguments.document;\n";
-       echo "  lt = escape(doc.selection.createRange().text);\n";
-       echo "  loglink = escape(external.menuArguments.location.href);\n";
-       echo "  loglinktitle = escape(doc.title);\n";
-       echo "  wingm = window.open('{$CONF['AdminURL']}bookmarklet.php?blogid={$blogid}&logtext=' + lt + '&loglink=' + loglink + '&loglinktitle=' + loglinktitle, 'nucleusbm', 'scrollbars=yes,width=600,height=500,left=10,top=10,status=yes,resizable=yes')\n";
-       echo "  wingm.focus()\n";
+       echo "<![CDATA[\n";
+       echo " doc = external.menuArguments.document;\n";
+       echo " lt = encodeURIComponent(doc.selection.createRange().text);\n";
+       echo " loglink = encodeURIComponent(external.menuArguments.location.href);\n";
+       echo " loglinktitle = encodeURIComponent(doc.title);\n";
+       echo " wingm = window.open('{$CONF['AdminURL']}bookmarklet.php?blogid={$blogid}&logtext=' + lt + '&loglink=' + loglink + '&loglinktitle=' + loglinktitle, 'nucleusbm', 'scrollbars=yes,width={$width},height={$height},left=10,top=10,status=yes,resizable=yes')\n";
+       echo " wingm.focus()\n";
+       echo "]]>\n";
        echo "</script>\n";
-}
+}
\ No newline at end of file