OSDN Git Service

MERGE: リビジョン1799。bookmarklet.phpでnextactionが動作しないバグの修正
authorsakamocchi <o-takashi@sakamocchi.jp>
Mon, 30 Apr 2012 13:20:35 +0000 (22:20 +0900)
committersakamocchi <o-takashi@sakamocchi.jp>
Mon, 30 Apr 2012 14:05:53 +0000 (23:05 +0900)
再ログインを促された場合、その時に要求したactionがnextactionに引き継がれず、常にアイテム追加となるバグの修正。

Revision 1799:
FIX: bookmarklet.php cannot keep previous action when
loginAndPassThrough().
http://nucleuscms.svn.sourceforge.net/viewvc/nucleuscms?view=revision&revision=1799

nucleus/bookmarklet.php

index 2901f43..ce4f953 100644 (file)
@@ -25,36 +25,35 @@ $CONF['UsingAdminArea'] = 1;
 // include all classes and config data
 include('../config.php');
 
 // include all classes and config data
 include('../config.php');
 
+// check logged-in or pass through
 $action = requestVar('action');
 $action = requestVar('action');
-
-if ( $action == 'contextmenucode' )
-{
-       bm_doContextMenuCode();
-       exit;
-}
-
 if ( !$member->isLoggedIn() )
 {
 if ( !$member->isLoggedIn() )
 {
-       bm_loginAndPassThrough();
+       bm_loginAndPassThrough($action);
        exit;
 }
        exit;
 }
-
-// on successfull login
-if ( ($action == 'login') && ($member->isLoggedIn()) )
+else if ( $action == 'login')
 {
        $action = requestVar('nextaction');
 }
 
 {
        $action = requestVar('nextaction');
 }
 
-if ($action == '') {
+$action = strtolower($action);
+
+if ( $action == 'contextmenucode' )
+{
+       bm_doContextMenuCode();
+       exit;
+}
+else if ( $action == '' )
+{
        $action = 'add';
 }
 
        $action = 'add';
 }
 
+// send HTTP 1.1 message header for Content-Type
 sendContentType('text/html', 'bookmarklet-' . $action);
 
 // check ticket
 sendContentType('text/html', 'bookmarklet-' . $action);
 
 // check ticket
-$action = strtolower($action);
 $aActionsNotToCheck = array('login', 'add', 'edit');
 $aActionsNotToCheck = array('login', 'add', 'edit');
-
 if ( !in_array($action, $aActionsNotToCheck) )
 {
        if ( !$manager->checkTicket() )
 if ( !in_array($action, $aActionsNotToCheck) )
 {
        if ( !$manager->checkTicket() )
@@ -120,6 +119,8 @@ function bm_doAddItem()
        }
        
        bm_message(_ITEM_ADDED, _ITEM_ADDED, $message,$extrahead);
        }
        
        bm_message(_ITEM_ADDED, _ITEM_ADDED, $message,$extrahead);
+       
+       return;
 }
 
 function bm_doEditItem()
 }
 
 function bm_doEditItem()
@@ -205,44 +206,45 @@ function bm_doEditItem()
        {
                bm_message(_ITEM_UPDATED, _ITEM_UPDATED, _ITEM_UPDATED, '');
        }
        {
                bm_message(_ITEM_UPDATED, _ITEM_UPDATED, _ITEM_UPDATED, '');
        }
+       
+       return;
 }
 
 }
 
-function bm_loginAndPassThrough()
+function bm_loginAndPassThrough($action='add')
 {
        $blogid = intRequestVar('blogid');
 {
        $blogid = intRequestVar('blogid');
-       $log_text = requestVar('logtext');
-       $log_link = requestVar('loglink');
-       $log_linktitle = requestVar('loglinktitle');
+       $itemid = intRequestVar('itemid');
+       $log_text               = requestVar('logtext');
+       $log_link               = requestVar('loglink');
+       $log_linktitle  = requestVar('loglinktitle');
        
        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 "<!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";
        
        bm_style();
        
        echo "</head>\n";
        echo "<body>\n";
        echo '<h1>' . _LOGIN_PLEASE . "</h1>\n";
-       
        echo "<form method=\"post\" action=\"bookmarklet.php\">\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 "<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";
+       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";
        echo '<button type="submit" name="action" value="login">' . _LOGIN . "</button>\n";
        echo "</p>\n";
        echo "</form>\n";
        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";
        echo "</body>\n";
        echo "</html>\n";
+       
        return;
 }
 
        return;
 }
 
@@ -250,10 +252,10 @@ function bm_doShowForm()
 {
        global $member;
        
 {
        global $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) )
        {
        
        if ( !Blog::existsID($blogid) )
        {
@@ -287,6 +289,7 @@ function bm_doShowForm()
        
        $factory = new PageFactory($blogid);
        $factory->createAddForm('bookmarklet', $item);
        
        $factory = new PageFactory($blogid);
        $factory->createAddForm('bookmarklet', $item);
+       
        return;
 }
 
        return;
 }
 
@@ -319,6 +322,7 @@ function bm_doEditForm()
        
        $formfactory = new PageFactory($blog->getID() );
        $formfactory->createEditForm('bookmarklet', $item);
        
        $formfactory = new PageFactory($blog->getID() );
        $formfactory->createEditForm('bookmarklet', $item);
+       
        return;
 }
 
        return;
 }
 
@@ -345,27 +349,31 @@ 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";
        echo '<p><a href="bookmarklet.php" onclick="window.close();window.opener.location.reload();">' . _POPUP_CLOSE . "</a></p>\n";
        echo "</body>\n";
        echo "</html>\n";
+       
        return;
 }
 
 function bm_style()
 {
        return;
 }
 
 function bm_style()
 {
-       echo '<link rel="stylesheet" type="text/css" href="styles/bookmarklet.css" />' . "\n";
-       echo '<link rel="stylesheet" type="text/css" href="styles/addedit.css" />' . "\n";
+       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;
        
        $blogid = (integer) intGetVar('blogid');
        
        echo "<script type=\"text/javascript\" defer=\"defer\">\n";
 {
        global $CONF;
        
        $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";
        echo "</script>\n";
-}
+}
\ No newline at end of file