【php开源代码栏目提醒】:网学会员在php开源代码频道为大家收集整理了bookmarklet.php提供大家参考,希望对大家有所帮助!
<?php
/*
* Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
* Copyright (C) 2002-2005 The Nucleus Group
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* (see nucleus/documentation/index.html#license for more info)
*/
/**
* This script allows adding items to Nucleus through bookmarklets. The member must be logged in
* in order to use this.
*
* @license http://nucleuscms.org/license.txt GNU General Public License
* @copyright Copyright (C) 2002-2005 The Nucleus Group
* @version $Id: bookmarklet.php 776 2005-08-21 09:46:00Z $
*/
// bookmarklet is part of admin area (might need XML-RPC)
$CONF = array();
$CONF['UsingAdminArea'] = 1;
// include all classes and config data
include('../config.php');
$action = requestVar('action');
if ($action == 'contextmenucode') {
bm_doContextMenuCode();
exit;
}
if (!$member->isLoggedIn()) {
bm_loginAndPassThrough();
exit;
}
// on successfull login
if (($action == 'login') && ($member->isLoggedIn()))
$action = requestVar('nextaction');
if ($action == '')
$action = 'add';
sendContentType('application/xhtml+xml', 'bookmarklet-'.$action);
// check ticket
$action = strtolower($action);
$aActionsNotToCheck = array('login', 'add', 'edit');
if (!in_array($action, $aActionsNotToCheck))
{
if (!$manager->checkTicket())
bm_doError(_ERROR_BADTICKET);
}
// find out what to do
switch ($action) {
case 'additem':
bm_doAddItem(); // adds the item for real
break;
case 'edit':
bm_doEditForm(); // shows the edit item form
break;
case 'edititem': // edits the item for real
bm_doEditItem();
break;
case 'login': // on login, 'action' gets changed to 'nextaction'
bm_doError('Something went wrong');
break;
case 'add':
default:
bm_doShowForm(); // shows the fill in form
break;
}
function bm_doAddItem() {
global $member, $manager, $CONF;
$manager->loadClass('ITEM');
$result = ITEM::createFromRequest();
if ($result['status'] == 'error')
bm_doError($result['message']);
$blogid = getBlogIDFromItemID($result['itemid']);
$blog =& $manager->getBlog($blogid);
if ($result['status'] == 'newcategory') {
$message = 'Item was added, and a new category was created. <a href="index.php?action=categoryedit&blogid='.$blogid.'&catid='.$result['catid'].'" onclick="if (event && 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>';
$extrahead = '';
} elseif ((postVar('actiontype') == 'addnow') && $blog->pingUserland()) {
$message = 'Item was added successfully. Now pinging weblogs.com. Please hold on... (can take a while)';
$pingUrl = $manager->addTicketToUrl($CONF['AdminURL'] . 'index.php?action=sendping&blogid=' . intval($blogid));
$extrahead = '<meta http-equiv="refresh" content="1; url=' . htmlspecialchars($pingUrl). '" />';
} else {
$message = _ITEM_ADDED;
$extrahead = '';
}
bm_message(_ITEM_ADDED, _ITEM_ADDED, $message,$extrahead);
}
function bm_doEditItem() {
global $member, $manager, $CONF;
$itemid = intRequestVar('itemid');
$catid = postVar('catid');
// only allow if user is allowed to alter item
if (!$member->canUpdateItem($itemid, $catid))
bm_doError(_ERROR_DISALLOWED);
$body = postVar('body');
$title = postVar('title');
$more = postVar('more');
$closed = intPostVar('closed');
$actiontype = postVar('actiontype');
// redirect to admin area on delete (has delete confirmation)
if ($actiontype == 'delete') {
redirect('index.php?action=itemdelete&itemid='.$itemid);
exit;
}
// create new category if needed (only on edit/changedate)
if (strstr($catid,'newcat')) {
// get blogid
list($blogid) = sscanf($catid,"newcat-%d");
// create
$blog =& $manager->getBlog($blogid);
$catid = $blog->createNewCategory();
// show error when sth goes wrong
if (!$catid)
bm_doError('Could not create new category');
}
// only edit action is allowed for bookmarklet edit
switch ($actiontype) {
case 'changedate':
$publish = 1;
$wasdraft = 0;
$timestamp = mktime(postVar('hour'), postVar('minutes'), 0, postVar('month'), postVar('day'), postVar('year'));
break;
case 'edit':
$publish = 1;
$wasdraft = 0;
$timestamp = 0;
break;
default:
bm_doError('Something went wrong');
}
// update item for real
ITEM::update($itemid, $catid, $title, $body, $more, $closed, $wasdraft, $publish, $timestamp);
// show success message
if ($catid != intPostVar('catid'))
bm_message(_ITEM_UPDATED, _ITEM_UPDATED, 'Item was added, and a new category was created. <a href="index.php?action=categoryedit&blogid='.$blog->getID().'&catid='.$catid.'" onclick="if (event && 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>', '');
else
bm_message(_ITEM_UPDATED, _ITEM_UPDATED, _ITEM_UPDATED, '');
}
function bm_loginAndPassThrough() {
$blogid = intRequestVar('blogid');
$log_text = requestVar('logtext');
$log_link = requestVar('loglink');
$log_linktitle = requestVar('loglinktitle');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Nucleus</title>
<?php bm_style(); ?>
</head>
<body>
<h1><?php echo _LOGIN_PLEASE?></h1>
<form method="post" action="bookmarklet.php">
<p>
<input name="action" value="login" type="hidden" />
<input name="blogid" value="<?php echo htmlspecialchars($blogid) ?>" type="hidden" />
<input name="logtext" value="<?php echo htmlspecialchars($log_text) ?>" type="hidden" />
<input name="loglink" value="<?php echo htmlspecialchars($log_link) ?>" type="hidden" />
<input name="loglinktitle" value="<?php echo htmlspecialchars($log_linktitle) ?>" type="hidden" />
<?php echo _LOGINFORM_NAME?>:
<br /><input name="login" />
<br /><?php echo _LOGINFORM_PWD?>:
<br /><input name="password" type="password" />
<br /><br />
<br /><input type="submit" value="<?php echo _LOGIN?>" />
</p>
</form>
<p><a href="bookmarklet.php" onclick="window.close();"><?php echo _POPUP_CLOSE?></a></p>
</body>
</html>
<?php
}
function bm_doShowForm() {
global $member;
$blogid = intRequestVar('blogid');
$log_text = trim(requestVar('logtext'));
$log_link = requestVar('lo
上一篇:
bookmark.lib.php
下一篇:
她要是喜欢我