From: <al...@us...> - 2008-08-19 22:32:32
|
Revision: 611 http://sciret.svn.sourceforge.net/sciret/?rev=611&view=rev Author: alpeb Date: 2008-08-19 22:32:30 +0000 (Tue, 19 Aug 2008) Log Message: ----------- removed code dealing with MySQL versions lower than 4.1. We'll just not support them anymore Modified Paths: -------------- trunk/templates/InstallOk.tpl trunk/views/InstallOk.php Modified: trunk/templates/InstallOk.tpl =================================================================== --- trunk/templates/InstallOk.tpl 2008-08-19 22:31:12 UTC (rev 610) +++ trunk/templates/InstallOk.tpl 2008-08-19 22:32:30 UTC (rev 611) @@ -14,15 +14,6 @@ <tr> <td style="text-align:center">[l]Installation was successful![/l]<br /> [l]The superadministrator user was created, with the username 'admin' and password 'admin'[/l]<br /> - <!-- BEGIN setEncodingHelp_block --> - <br /> - <div style="color:red; font-weight:bold; text-align:left"> - [l]Your database version is lower than 4.1. To have proper support for non Western European languages, make sure to have this settings in your mysql configuration file:[/l]<br /><br /> - character_set_client = UTF8;<br /> - character_set_results = UTF8;<br /> - character_set_connection = UTF8;<br /> - </div> - <!-- END setEncodingHelp_block --> </td> </tr> <tr> Modified: trunk/views/InstallOk.php =================================================================== --- trunk/views/InstallOk.php 2008-08-19 22:31:12 UTC (rev 610) +++ trunk/views/InstallOk.php 2008-08-19 22:32:30 UTC (rev 611) @@ -15,19 +15,11 @@ function dispatch() { $this->tpl->set_file('main', 'InstallOk.tpl'); - $this->tpl->set_block('main', 'setEncodingHelp_block', 'setEncodingHelp'); $this->tpl->set_var(array( 'LOGIN_URL' => 'http://'.$_SERVER['HTTP_HOST'].substr($_SERVER['REQUEST_URI'], 0, strrpos($_SERVER['REQUEST_URI'], '/')).'/login.php', 'PUBLIC_URL' => 'http://'.$_SERVER['HTTP_HOST'].substr($_SERVER['REQUEST_URI'], 0, strrpos($_SERVER['REQUEST_URI'], '/')), )); - $db =& DB::DBFactory(DB_ENGINE, DB_HOST, DB_USER, DB_PASSWORD); - if ($db->isLowerThan41()) { - $this->tpl->parse('setEncodingHelp', 'setEncodingHelp_block'); - } else { - $this->tpl->set_var('setEncodingHelp', ''); - } - $this->tpl->pparse('out', 'main'); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <al...@us...> - 2008-08-19 22:33:27
|
Revision: 612 http://sciret.svn.sourceforge.net/sciret/?rev=612&view=rev Author: alpeb Date: 2008-08-19 22:33:25 +0000 (Tue, 19 Aug 2008) Log Message: ----------- replaced config.ini with config.ini.php to avoid access Added Paths: ----------- trunk/config.ini.php Removed Paths: ------------- trunk/config.ini Deleted: trunk/config.ini =================================================================== --- trunk/config.ini 2008-08-19 22:32:30 UTC (rev 611) +++ trunk/config.ini 2008-08-19 22:33:25 UTC (rev 612) @@ -1,10 +0,0 @@ -[general] -slowdown_secs = 0 -language_default = "English" - -[database] -adapter = pdo_mysql -params.host = localhost -params.dbname = monkeys -params.username = root -params.password = Added: trunk/config.ini.php =================================================================== --- trunk/config.ini.php (rev 0) +++ trunk/config.ini.php 2008-08-19 22:33:25 UTC (rev 612) @@ -0,0 +1,27 @@ +<?php + + return array ( + 'environment' => + array ( + 'production' => false, + 'loglevel' => 0, + ), + 'general' => + array ( + 'slowdown_secs' => 0, + 'language_default' => 'English', + ), + 'database' => + array ( + 'adapter' => 'pdo_mysql', + 'params' => + array ( + 'host' => 'localhost', + 'dbname' => 'sciret_trunk', + 'username' => 'root', + 'password' => '', + ), + ), +); + +?> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <al...@us...> - 2008-08-19 22:36:51
|
Revision: 615 http://sciret.svn.sourceforge.net/sciret/?rev=615&view=rev Author: alpeb Date: 2008-08-19 22:36:48 +0000 (Tue, 19 Aug 2008) Log Message: ----------- More changes to use the Zend_Db abstraction, and updated the Zend Framework. Also added a logging facility. Modified Paths: -------------- trunk/actions/Install.php trunk/index.php Property Changed: ---------------- trunk/libs/ Modified: trunk/actions/Install.php =================================================================== --- trunk/actions/Install.php 2008-08-19 22:35:40 UTC (rev 614) +++ trunk/actions/Install.php 2008-08-19 22:36:48 UTC (rev 615) @@ -12,6 +12,7 @@ class Install extends Action { var $db; + var $config; function dispatch() { @@ -19,32 +20,49 @@ $_GET['step'] = 0; } + $this->config = Zend_Registry::get('config'); + switch ($_GET['step']) { case 0: Library::redirect(Library::getLink(array('view' => 'InstallEnterCredentials'))); break; case 1: - $this->db =& DB::DBFactory(DB_ENGINE, $_POST['host'], $_POST['username'], $_POST['password'], true); - if (!$this->db->connect()) { + $this->config->database->params->driver_options = array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true); + $this->config->database->params->host = $_POST['host']; + $this->config->database->params->dbname = null; + $this->config->database->params->username = $_POST['username']; + $this->config->database->params->password = $_POST['password']; + $this->db = Zend_Db::factory($this->config->database); + try { + $this->db->getConnection(); + } catch (Zend_Db_Adapter_Exception $e) { Library::redirect(Library::getLink(array('view' => 'InstallEnterCredentials', 'error' => urlencode($this->user->lang('Couldn\'t connect to database, please check your credentials.'))))); } $errors = array(); if (!$this->_isConfigWritable()) { - $errors[] = $this->user->lang('The config.php file must be writable'); + $errors[] = $this->user->lang('The config.ini.php file must be writable'); } if (!$this->_areUploadDirsWritable()) { $errors[] = $this->user->lang('All directories under the "uploads" and "uploads/editor" directories must be writable'); } - if ($this->db->isLowerThan41()) { + if ($this->_DBIsLowerThan41()) { $errors[] = $this->user->lang('You need a MySQL version no lower than 4.1'); } - if (!$this->db->selectDb($_POST['database'])) { - if (!$result = $this->db->createDB($_POST['database'])) { + $this->config->database->params->dbname = $_POST['database']; + $this->db = Zend_Db::factory($this->config->database); + try { + $this->db->getConnection(); + } catch (Zend_Db_Adapter_Exception $e) { + try { + $this->config->database->params->dbname = null; + // it looks like the following call attempts to create the DB + $this->db = Zend_Db::factory($this->config->database); + $this->db->getConnection(); + $stmt = $this->db->query("CREATE DATABASE `".$_POST['database']."`"); + } catch (Zend_Db_Adapter_Exception $e) { $errors[] = $this->user->lang('Couldn\'t create database. Please create it manually and try again.'); - } else { - $this->db->selectDb($_POST['database']); } } @@ -52,7 +70,14 @@ Library::redirect(Library::getLink(array('view' => 'InstallEnterCredentials', 'error' => urlencode(implode('<br />', $errors))))); } - $this->_writeConfig(DB_ENGINE, $_POST['host'], $_POST['database'], $_POST['username'], $_POST['password']); + $this->_writeConfig( $this->config, + $_POST['host'], + $_POST['database'], + $_POST['username'], + $_POST['password']); + + // finally, connect with all the parameters set + $this->db = Zend_Db::factory($this->config->database); $this->_runSQLFILE('final.sql'); if (isset($_POST['demodata']) && $_POST['demodata']) { $this->_runSQLFILE('sampleData.sql'); @@ -63,28 +88,17 @@ } // @access private - function _writeConfig($dbEngine, $dbHost, $dbName, $dbUserName, $dbPassword) { - $dbEngine = addslashes($dbEngine); - $dbHost = addslashes($dbHost); - $dbUserName = addslashes($dbUserName); - $dbPassword = addslashes($dbPassword); - $configStr = <<<ALP -<?php + function _writeConfig($config, $dbHost, $dbName, $dbUserName, $dbPassword) { + $config->database->params->host = $dbHost; + $config->database->params->dbname = $dbName; + $config->database->params->username = $dbUserName; + $config->database->params->password = $dbPassword; + $this->config = clone $config; + unset($config->database->params->driver_options); -define('DB_ENGINE', '$dbEngine'); -define('DB_HOST', '$dbHost'); -define('DB_NAME', '$dbName'); -define('DB_USER', '$dbUserName'); -define('DB_PASSWORD', '$dbPassword'); + $configStr = "<?php\n\n return " . var_export($config->toArray(), true) . ";\n\n?>"; -define('LANGUAGE_DEFAULT', 'English'); - -// set to > 0 to simulate latency -define('SLOWDOWN_SECS', 0); - -?> -ALP; - $fp = fopen(dirname(__FILE__).'/../config.php', 'w'); + $fp = fopen(dirname(__FILE__).'/../config.ini.php', 'w'); fwrite($fp, $configStr); fclose($fp); } @@ -104,7 +118,10 @@ $query .= $line; if ((substr($line, -1, 1) == ';' || feof($fp)) && $query != '') { - $this->db->query($query); + // I had to resort to a direct call because regexes inside the Zend Framework are segfaulting with the long queries in sampleData.sql + //$this->db->query($query); + $this->db->getConnection()->query($query); + $query = ''; } } @@ -113,7 +130,7 @@ function _isConfigWritable() { // is_writable() not working under windows - if (!$fp = @fopen(dirname(__FILE__).'/../config.php', 'a')) { + if (!$fp = @fopen(dirname(__FILE__).'/../config.ini.php', 'a')) { return false; } fclose($fp); @@ -135,6 +152,12 @@ return true; } + + private function _DBIsLowerThan41() { + $stmt = $this->db->query("SHOW VARIABLES LIKE 'version'"); + $row = $stmt->fetch(); + return (!$row['Value'] || preg_match('/^([0-3]\.|4\.0)/',$row['Value'])); + } } ?> Modified: trunk/index.php =================================================================== --- trunk/index.php 2008-08-19 22:35:40 UTC (rev 614) +++ trunk/index.php 2008-08-19 22:36:48 UTC (rev 615) @@ -9,6 +9,8 @@ * @packager TheGang */ +define('APP_DIR', dirname(__FILE__)); + // ERROR HANDLING error_reporting(E_ALL); ini_set('display_errors', 1); @@ -29,9 +31,27 @@ $times = explode(' ', microtime()); $GLOBALS['startTime'] = $times[0] + $times[1]; -$config = new Zend_Config_Ini(dirname(__FILE__). '/config.ini', null, array('allowModifications' => true)); +// use a config.ini.php with an array instead of a cleaner .ini file, because for an easy installation all files +// go under the web root, and a .ini file would be browsable +$config = new Zend_Config(require dirname(__FILE__). '/config.ini.php', array('allowModifications' => true)); Zend_Registry::set('config', $config); +/************************** +/* LOGGER +/**************************/ +$logger = new Zend_Log(); +if ($config->environment->loglevel > 0) { + $logger->addWriter(new Zend_Log_Writer_Stream(APP_DIR . '/log.txt')); + $logger->addFilter(new Zend_Log_Filter_Priority((int)$config->environment->loglevel)); +} +Zend_Registry::set('logger', $logger); + +$logger->log('REQUESTED URI: ' . $_SERVER['REQUEST_URI'], Zend_Log::INFO); + +if (isset($_POST) && $_POST) { + $logger->log('POST payload: ' . print_r($_POST, 1), Zend_Log::INFO); +} + require 'flowMap.php'; // MAGIC_QUOTES HANDLING Property changes on: trunk/libs ___________________________________________________________________ Modified: svn:externals - Zend http://framework.zend.com/svn/framework/standard/tags/release-1.5.2/library/Zend + Zend http://framework.zend.com/svn/framework/standard/tags/release-1.5.3/library/Zend This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <re...@us...> - 2008-08-22 16:34:37
|
Revision: 621 http://sciret.svn.sourceforge.net/sciret/?rev=621&view=rev Author: reinerj Date: 2008-08-22 16:34:32 +0000 (Fri, 22 Aug 2008) Log Message: ----------- Sciret have a new owner, Keyboard Monkeys Modified Paths: -------------- trunk/flowMap.php trunk/index.php trunk/models/ArticleGateway.php trunk/models/ArticleIterator.php trunk/models/Category.php trunk/models/CategoryGateway.php trunk/models/Comment.php trunk/models/Configuration.php trunk/models/Favorite.php trunk/models/FavoriteGateway.php trunk/models/File.php trunk/models/History.php trunk/models/HistoryGateway.php trunk/models/Link.php trunk/models/Question.php trunk/models/QuestionGateway.php trunk/models/QuestionIterator.php trunk/models/Todo.php trunk/models/TodoGateway.php trunk/models/User.php trunk/models/UserGateway.php Modified: trunk/flowMap.php =================================================================== --- trunk/flowMap.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/flowMap.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ define('VIEW_DEFAULT', 'MainView'); Modified: trunk/index.php =================================================================== --- trunk/index.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/index.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ define('APP_DIR', dirname(__FILE__)); Modified: trunk/models/ArticleGateway.php =================================================================== --- trunk/models/ArticleGateway.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/models/ArticleGateway.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0.4 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ define('EXCERPT_LENGTH', 300); Modified: trunk/models/ArticleIterator.php =================================================================== --- trunk/models/ArticleIterator.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/models/ArticleIterator.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ class ArticleIterator { Modified: trunk/models/Category.php =================================================================== --- trunk/models/Category.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/models/Category.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ class Category { Modified: trunk/models/CategoryGateway.php =================================================================== --- trunk/models/CategoryGateway.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/models/CategoryGateway.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ class CategoryGateway { Modified: trunk/models/Comment.php =================================================================== --- trunk/models/Comment.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/models/Comment.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ class Comment { Modified: trunk/models/Configuration.php =================================================================== --- trunk/models/Configuration.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/models/Configuration.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ class Configuration { Modified: trunk/models/Favorite.php =================================================================== --- trunk/models/Favorite.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/models/Favorite.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ define('FAVORITE_TYPE_ARTICLE', 1); Modified: trunk/models/FavoriteGateway.php =================================================================== --- trunk/models/FavoriteGateway.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/models/FavoriteGateway.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ class FavoriteGateway { Modified: trunk/models/File.php =================================================================== --- trunk/models/File.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/models/File.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ class File { Modified: trunk/models/History.php =================================================================== --- trunk/models/History.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/models/History.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ class History { Modified: trunk/models/HistoryGateway.php =================================================================== --- trunk/models/HistoryGateway.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/models/HistoryGateway.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ class HistoryGateway { Modified: trunk/models/Link.php =================================================================== --- trunk/models/Link.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/models/Link.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ class Link { Modified: trunk/models/Question.php =================================================================== --- trunk/models/Question.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/models/Question.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ class Question { Modified: trunk/models/QuestionGateway.php =================================================================== --- trunk/models/QuestionGateway.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/models/QuestionGateway.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ class QuestionGateway { Modified: trunk/models/QuestionIterator.php =================================================================== --- trunk/models/QuestionIterator.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/models/QuestionIterator.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ class QuestionIterator { Modified: trunk/models/Todo.php =================================================================== --- trunk/models/Todo.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/models/Todo.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.1 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ define('TODO_STATUS_PENDING', 0); Modified: trunk/models/TodoGateway.php =================================================================== --- trunk/models/TodoGateway.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/models/TodoGateway.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.1 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require_once 'models/Todo.php'; Modified: trunk/models/User.php =================================================================== --- trunk/models/User.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/models/User.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0.4 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ class User { Modified: trunk/models/UserGateway.php =================================================================== --- trunk/models/UserGateway.php 2008-08-22 16:28:34 UTC (rev 620) +++ trunk/models/UserGateway.php 2008-08-22 16:34:32 UTC (rev 621) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0 +* @since Sciret 1.2 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require_once 'models/User.php'; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <al...@us...> - 2008-08-24 19:14:09
|
Revision: 626 http://sciret.svn.sourceforge.net/sciret/?rev=626&view=rev Author: alpeb Date: 2008-08-24 19:14:05 +0000 (Sun, 24 Aug 2008) Log Message: ----------- Patch #1900432: alphabetically list icon names order in the Edit/Add Category view Modified Paths: -------------- trunk/templates/EditArticle.tpl trunk/templates/head.tpl Added Paths: ----------- trunk/actions/UploadImage.php Added: trunk/actions/UploadImage.php =================================================================== --- trunk/actions/UploadImage.php (rev 0) +++ trunk/actions/UploadImage.php 2008-08-24 19:14:05 UTC (rev 626) @@ -0,0 +1,25 @@ +<?php + +/* +* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License +* @author Alejandro Pedraza +* @since Sciret 1.0 +* @package Sciret +* @packager TheGang +*/ + +class UploadImage extends Action +{ + + function dispatch() + { + header("content-type: text/html"); // the return type must be text/html + if (!@move_uploaded_file($_FILES['image']['tmp_name'], + realpath(dirname(__FILE__).'/../uploads/editor/Image').'/'.$_FILES['image']['name'])) { + die("{status:'Problem uploading file'}"); + } + die("{status:'UPLOADED', image_url:'uploads/editor/Image/".$_FILES['image']['name']."'}"); + } +} + Modified: trunk/templates/EditArticle.tpl =================================================================== --- trunk/templates/EditArticle.tpl 2008-08-24 19:12:43 UTC (rev 625) +++ trunk/templates/EditArticle.tpl 2008-08-24 19:14:05 UTC (rev 626) @@ -3,111 +3,126 @@ * @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.2 +* @since Sciret 1.0 * @package Sciret -* @packager Keyboard Monkeys +* @packager TheGang */ --> +<!-- Needed for resizing ability --> +<link rel="stylesheet" type="text/css" href="javascript/yui/build/assets/skins/sam/resize.css"> +<script type="text/javascript" src="javascript/yui/build/resize/resize-beta-min.js"></script> +<!-- Needed for Menus, Buttons and Overlays used in the Toolbar --> +<script type="text/javascript" src="javascript/yui/build/menu/menu-min.js"></script> +<!-- Needed for the image uploader --> +<script type="text/javascript" src="javascript/yui/build/connection/connection-min.js"></script> +<script type="text/javascript" src="javascript/yui-image-uploader.js"></script> +<!-- Source file for Rich Text Editor--> +<script src="javascript/yui/build/editor/editor-beta-min.js"></script> + <form name="saveArticleForm" method="POST" action="{formAction}"> -<input type="hidden" name="draft" value="0" /> -<table width="100%" border="0" cellspacing="1" cellpadding="3" border="1" style='border:1px solid black'> - <!-- BEGIN answer_question_block --> - <tr class="th"> - <td colspan=2><b>{header}</b></td> - </tr> - <tr> - <td style="text-align:right">[l]Question[/l]: </td> - <td>{question}</td> - <input type="hidden" name="questionID" value="{questionID}" /> - </tr> - <!-- END answer_question_block --> - <!-- BEGIN article_id_block --> - <tr class="th"> - <input type="hidden" name="articleId" value="{articleId}" /> - <td style="text-align:right; font-weight:bold"> - [l]Article ID[/l]: - </td> - <td> - {articleId} - </td> - </tr> - <!-- END article_id_block --> - <tr class="row_on"> - <td width="10%" style="text-align:right;"> - <span style='font:normal 12px sans-serif; font-weight:bold'>[l]Category[/l]:</span> - </td> - <td width="90%"> - <select name="cat_id"> - <option value="0">[l]None[/l]</option> - <!-- BEGIN categories_block --> - <option value="{category_id}" {catSelected}>{category_label}</option> - <!-- END categories_block --> - </select> - </td> - </tr> - <tr class="row_on"> - <td align=right style="text-align:right"> - <span style='font:normal 12px sans-serif; font-weight:bold'>[l]Title[/l]:</span> - </td> - <td> - <input type="text" size="70" name="title" value="{title}" /> - </td> - </tr> - <tr class="row_on"> - <td align=right style="text-align:right" nowrap="true"> - <span style='font:normal 12px sans-serif; font-weight:bold'> - [l]Expiration Date[/l]: - </span> - </td> - <td> - <input type="hidden" id="hiddenDate" name="expDate" value="{expDate}" /> - <span id="dateShow">{expDateContents}</span> - <img src="images/datepopup.gif" id="expDateButton" style="cursor:pointer" /> - <span id="labelSetDate" style="display:{labelSetExpDateDisplay}">([l]Currently none.<br />Click icon to set one.[/l])</span> - <a id="removeDateLink" href="javascript:void(0);" onclick="removeDate();" style="display:{removeExpDateLinkDisplay}; font-weight:bold; font-size:10px">[l]Remove expiration date[/l]</a> - </td> - </tr> + <input type="hidden" name="draft" value="0" /> + <table width="100%" border="0" cellspacing="1" cellpadding="3" border="1" style='border:1px solid black'> + <!-- BEGIN answer_question_block --> + <tr class="th"> + <td colspan=2><b>{header}</b></td> + </tr> + <tr> + <td style="text-align:right">[l]Question[/l]: </td> + <td>{question}</td> + <input type="hidden" name="questionID" value="{questionID}" /> + </tr> + <!-- END answer_question_block --> + <!-- BEGIN article_id_block --> + <tr class="th"> + <input type="hidden" name="articleId" value="{articleId}" /> + <td style="text-align:right; font-weight:bold"> + [l]Article ID[/l]: + </td> + <td> + {articleId} + </td> + </tr> + <!-- END article_id_block --> + <tr class="row_on"> + <td width="10%" style="text-align:right;"> + <span style='font:normal 12px sans-serif; font-weight:bold'>[l]Category[/l]:</span> + </td> + <td width="90%"> + <select name="cat_id"> + <option value="0">[l]None[/l]</option> + <!-- BEGIN categories_block --> + <option value="{category_id}" {catSelected}>{category_label}</option> + <!-- END categories_block --> + </select> + </td> + </tr> + <tr class="row_on"> + <td align=right style="text-align:right"> + <span style='font:normal 12px sans-serif; font-weight:bold'>[l]Title[/l]:</span> + </td> + <td> + <input type="text" size="70" name="title" value="{title}" /> + </td> + </tr> + <tr class="row_on"> + <td align=right style="text-align:right" nowrap="true"> + <span style='font:normal 12px sans-serif; font-weight:bold'> + [l]Expiration Date[/l]: + </span> + </td> + <td> + <input type="hidden" id="hiddenDate" name="expDate" value="{expDate}" /> + <span id="dateShow">{expDateContents}</span> + <img src="images/datepopup.gif" id="expDateButton" style="cursor:pointer" /> + <span id="labelSetDate" style="display:{labelSetExpDateDisplay}">([l]Currently none.<br />Click icon to set one.[/l])</span> + <a id="removeDateLink" href="javascript:void(0);" onclick="removeDate();" style="display:{removeExpDateLinkDisplay}; font-weight:bold; font-size:10px">[l]Remove expiration date[/l]</a> + </td> + </tr> - <!-- BEGIN usage_block --> - <tr class="row_on"> - <td width="10%" style="text-align:right;"> - <span style='font:normal 12px sans-serif; font-weight:bold'>[l]Usage[/l]:</span> - </td> + <!-- BEGIN usage_block --> + <tr class="row_on"> + <td width="10%" style="text-align:right;"> + <span style='font:normal 12px sans-serif; font-weight:bold'>[l]Usage[/l]:</span> + </td> - <td width="90%"> - <select name="usage_id"> - <option value="0" {publiclySelected}>[l]Publicly available[/l]</option> - <option value="1" {internalSelected}>[l]Internal use only[/l]</option> - </select> - </td> - </tr> - <!-- END usage_block --> + <td width="90%"> + <select name="usage_id"> + <option value="0" {publiclySelected}>[l]Publicly available[/l]</option> + <option value="1" {internalSelected}>[l]Internal use only[/l]</option> + </select> + </td> + </tr> + <!-- END usage_block --> - <tr> - <td colspan="2"> - {textarea} - </td> - </tr> - <tr class="th"> - <td colspan=2> - - </td> - </tr> - <tr> - <td colspan="2"> - <input type="submit" value="[l]Save[/l]" onclick="return validateForm(form);" /> - <b>{publicationNotice}</b> - </td> - </tr> - <!-- BEGIN saveAsDraftButton_block --> - <tr> - <td colspan="2"> - <input type="button" value="[l]Save as Draft[/l]" onclick="saveDraft(form);" /> - </td> - </tr> - <!-- END saveAsDraftButton_block --> -</table> + <tr> + <td colspan="2"> + <textarea name="content" id="content" style="width: 935px; height:350px">{textareaContent}</textarea> + <script> + // can't make editor bigger, or else problem under IE + SCIRET.editor.init('935px','350px', 'content'); + </script> + </td> + </tr> + <tr class="th"> + <td colspan=2> + + </td> + </tr> + <tr> + <td colspan="2"> + <input type="submit" value="[l]Save[/l]" onclick="return validateForm(form);" /> + <b>{publicationNotice}</b> + </td> + </tr> + <!-- BEGIN saveAsDraftButton_block --> + <tr> + <td colspan="2"> + <input type="button" value="[l]Save as Draft[/l]" onclick="saveDraft(form);" /> + </td> + </tr> + <!-- END saveAsDraftButton_block --> + </table> </form> <script type="text/javascript"> Calendar.setup( Modified: trunk/templates/head.tpl =================================================================== --- trunk/templates/head.tpl 2008-08-24 19:12:43 UTC (rev 625) +++ trunk/templates/head.tpl 2008-08-24 19:14:05 UTC (rev 626) @@ -4,6 +4,8 @@ <head> <title>[l]Knowledge Base[/l]</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> + <link rel="stylesheet" type="text/css" href="javascript/yui/build/assets/skins/sam/skin.css"> + <link type="text/css" rel="stylesheet" href="javascript/yui/build/logger/assets/skins/sam/logger.css"> <link href="style.css" type="text/css" rel="StyleSheet" /> <link href="others.css" type="text/css" rel="StyleSheet" /> <link href="tabs.css" type="text/css" rel="StyleSheet" /> @@ -11,6 +13,15 @@ <!-[if IE 7]-> <script type="text/javascript">isIE7 = true;</script> <![endif]-> + <!-- basic YUI libraries --> + <script type="text/javascript" src="javascript/yui/build/yahoo-dom-event/yahoo-dom-event.js"></script> + <script type="text/javascript" src="javascript/yui/build/container/container_core-min.js"></script> + <script type="text/javascript" src="javascript/yui/build/element/element-beta-min.js"></script> + <script type="text/javascript" src="javascript/yui/build/dragdrop/dragdrop-min.js"></script> + <script type="text/javascript" src="javascript/yui/build/animation/animation-min.js"></script> + <script type="text/javascript" src="javascript/yui/build/button/button-min.js"></script> + <script type="text/javascript" src="javascript/yui/build/logger/logger-min.js"></script> + <script type="text/javascript" src="javascript/general.js"></script> <script type="text/javascript" src="javascript/simModal.js"></script> <script type="text/javascript" src="javascript/overlib.js"></script> @@ -28,5 +39,8 @@ </style> <!-- END rtl_block --> </head> -<body onload="triggerOnloadFunctions();"> -<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div> +<body class="yui-skin-sam" onload="triggerOnloadFunctions();"> + <script type="text/javascript"> + // var myLogReader = new YAHOO.widget.LogReader(); + </script> + <div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <al...@us...> - 2008-08-24 19:16:00
|
Revision: 627 http://sciret.svn.sourceforge.net/sciret/?rev=627&view=rev Author: alpeb Date: 2008-08-24 19:15:56 +0000 (Sun, 24 Aug 2008) Log Message: ----------- replaced fck editor with yui RTE Modified Paths: -------------- trunk/flowMap.php trunk/javascript/general.js trunk/style.css trunk/views/EditArticle.php Added Paths: ----------- trunk/images/html_editor.gif Modified: trunk/flowMap.php =================================================================== --- trunk/flowMap.php 2008-08-24 19:14:05 UTC (rev 626) +++ trunk/flowMap.php 2008-08-24 19:15:56 UTC (rev 627) @@ -52,6 +52,7 @@ 'SaveArticle' => array(User::ROLE_REGISTERED, true), 'SaveBookmark' => array(User::ROLE_REGISTERED, true), 'UploadFile' => array(User::ROLE_REGISTERED, true), + 'UploadImage' => array(User::ROLE_REGISTERED, true), 'GetFile' => array(User::ROLE_ANONYMOUS, true, true), 'DeleteFile' => array(User::ROLE_REGISTERED, true), 'AddLink' => array(User::ROLE_REGISTERED, true), Property changes on: trunk/images/html_editor.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/javascript/general.js =================================================================== --- trunk/javascript/general.js 2008-08-24 19:14:05 UTC (rev 626) +++ trunk/javascript/general.js 2008-08-24 19:15:56 UTC (rev 627) @@ -7,6 +7,15 @@ * @packager TheGang */ +/** + * Classes enforce private and public members through the Module Pattern + * (the vars outside are private, and what goes inside the return is public) + * @see http://yuiblog.com/blog/2007/06/12/module-pattern/ + */ + +YAHOO.namespace("sciret"); +SCIRET = YAHOO.sciret; + // ********************************************************* // ** BROWSER DETECTION ** // ********************************************************* @@ -482,7 +491,219 @@ } } +/** + * Rich-text editor + */ +SCIRET.editor = function() { + var myEditor; + var state = 'off'; + var resize = null; + /* + yuiImgUploader + + Taken from http://allmybrain.com/2007/10/16/an-image-upload-extension-for-yui-rich-text-editor + + variables: + rte: The YAHOO.widget.Editor instance + upload_url: the url to post the file to + upload_image_name: the name of the post parameter to send the file as + + Your server must handle the posted image. You must return a JSON object + with the result url that the image can be viewed at on your server. If + the upload fails, you can return an error message. For successful + uploads, the status must be set to UPLOADED. All other status messages, + or the lack of a status message is interpreted as an error. IE will + try to open a new document window when the response is returned if your + content-type header on your response is not set to 'text/javascript' + + Example Success: + {status:'UPLOADED', image_url:'/somedirectory/filename'} + Example Failure: + {status:'We only allow JPEG Images.'} + + */ + var yuiImgUploader = function(rte, upload_url, upload_image_name) { + // customize the editor img button + + YAHOO.log( "Adding Click Listener" ,'debug'); + rte.addListener('toolbarLoaded',function() { + rte.toolbar.addListener ( 'insertimageClick', function(o) { + try { + var imgPanel=new YAHOO.util.Element('yui-editor-panel'); + imgPanel.on ( 'contentReady', function() { + try { + var Dom=YAHOO.util.Dom; + var label=document.createElement('label'); + label.innerHTML='<strong>Upload:</strong>'+ + '<input type="file" id="insertimage_upload" name="'+upload_image_name+ + '" size="10" style="width: 20%" />'+ + '<a href="#" id="insertimage_upload_btn" style="width: 20%; margin-left: 10em;">Upload Image</a>'+ + '</label>'; + + var img_elem=Dom.get('insertimage_url'); + Dom.getAncestorByTagName(img_elem, 'form').encoding = 'multipart/form-data'; + + Dom.insertAfter( + label, + img_elem.parentNode); + + YAHOO.util.Event.on ( 'insertimage_upload_btn', 'click', function(ev) { + // //alert ( "Upload Click" ); + YAHOO.util.Event.stopEvent(ev); // no default click action + YAHOO.util.Connect.setForm ( img_elem.form, true, true ); + var c=YAHOO.util.Connect.asyncRequest( + 'POST', upload_url, { + upload:function(r){ + try { + // strip pre tags if they got added somehow + resp=r.responseText.replace( /<pre>/i, '').replace ( /<\/pre>/i, ''); + var o=eval('('+resp+')'); + if (o.status=='UPLOADED') { + Dom.get('insertimage_upload').value=''; + Dom.get('insertimage_url').value=o.image_url; + // tell the image panel the url changed + // hack instead of fireEvent('blur') + // which for some reason isn't working + Dom.get('insertimage_url').focus(); + Dom.get('insertimage_upload').focus(); + } else { + alert ( "Upload Failed: "+o.status ); + } + + } catch ( eee ) { + YAHOO.log( eee.message, 'error' ) + } + } + } + ); + return false; + }); + + } catch ( ee ) { YAHOO.log( ee.message, 'error' ) } + }); + } catch ( e ) { + YAHOO.log( e.message, 'error' ) + } + }); + }); + + } + + return { + + init: function(width, height, element) { + YAHOO.log('Create the Editor..', 'info', 'example'); + myEditor = new YAHOO.widget.Editor(element, { + width: width, + height: height, + dompath: true, //Turns on the bar at the bottom + animate: true, //Animates the opening, closing and moving of Editor windows + handleSubmit: true + }); + + myEditor.on('toolbarLoaded', function() { + this.toolbar.addButtonGroup({ + group: 'editcodeGroup', + label: ' ', + buttons: [ + { + type: 'separator' + }, + { + type: 'push', + label: 'Edit HTML Code', + value: 'editcode' + }] + }); + + this.toolbar.on('editcodeClick', function() { + var ta = this.get('element'); + var iframe = this.get('iframe').get('element'); + + if (state == 'on') { + state = 'off'; + this.toolbar.set('disabled', false); + YAHOO.log('Inject the HTML from the textarea into the editor', 'info', 'example'); + this.setEditorHTML(ta.value); + if (!this.browser.ie) { + this._setDesignMode('on'); + } + + YAHOO.util.Dom.removeClass(iframe, 'editor-hidden'); + YAHOO.util.Dom.addClass(ta, 'editor-hidden'); + this.show(); + this._focusWindow(); + } else { + state = 'on'; + YAHOO.log('Show the Code Editor', 'info', 'example'); + this.cleanHTML(); + YAHOO.log('Save the Editors HTML', 'info', 'example'); + YAHOO.util.Dom.addClass(iframe, 'editor-hidden'); + YAHOO.util.Dom.removeClass(ta, 'editor-hidden'); + this.toolbar.set('disabled', true); + this.toolbar.getButtonByValue('editcode').set('disabled', false); + this.toolbar.selectButton('editcode'); + this.dompath.innerHTML = 'Editing HTML Code'; + this.hide(); + } + return false; + }, this, true); + + this.on('cleanHTML', function(ev) { + YAHOO.log('cleanHTML callback fired..', 'info', 'example'); + this.get('element').value = ev.html; + }, this, true); + + this.on('afterRender', function() { + var wrapper = this.get('editor_wrapper'); + wrapper.appendChild(this.get('element')); + this.setStyle('width', '100%'); + this.setStyle('height', '100%'); + this.setStyle('visibility', ''); + this.setStyle('top', ''); + this.setStyle('left', ''); + this.setStyle('position', ''); + + this.addClass('editor-hidden'); + }, this, true); + + }, myEditor, true); + + myEditor.on('editorContentLoaded', function() { + resize = new YAHOO.util.Resize(myEditor.get('element_cont').get('element'), { + handles: ['br'], + autoRatio: true, + status: true, + proxy: true, + setSize: false + }); + + resize.on('startResize', function() { + this.hide(); + this.set('disabled', true); + }, myEditor, true); + + resize.on('resize', function(args) { + var h = args.height; + var th = (this.toolbar.get('element').clientHeight + 2); // it has a 1px border + var dh = (this.dompath.clientHeight + 1); // it has a 1px top border + var newH = (h - th - dh); + this.set('width', args.width + 'px'); + this.set('height', newH + 'px'); + this.set('disabled', false); + this.show(); + }, myEditor, true); + }); + + myEditor._defaultToolbar.titlebar = false; + yuiImgUploader(myEditor, 'index.php?action=UploadImage', 'image'); + myEditor.render(); + } + } +}(); + + // ********************************************************* // ** OTHER FUNCTIONS ** // ********************************************************* Modified: trunk/style.css =================================================================== --- trunk/style.css 2008-08-24 19:14:05 UTC (rev 626) +++ trunk/style.css 2008-08-24 19:15:56 UTC (rev 627) @@ -168,3 +168,57 @@ width :100%; padding :5px; } + +/* -------- YUI RTE ---------- */ + +.yui-skin-sam .yui-toolbar-container .yui-toolbar-editcode span.yui-toolbar-icon { + background-image: url( images/html_editor.gif ); + background-position: 0 1px; + left: 5px; +} +.yui-skin-sam .yui-toolbar-container .yui-button-editcode-selected span.yui-toolbar-icon { + background-image: url( images/html_editor.gif ); + background-position: 0 1px; + left: 5px; +} + +/* this is to add a line break in the toolbar */ +.yui-skin-sam .yui-toolbar-container .yui-toolbar-classname { + width:130px; +} +.yui-skin-sam .yui-toolbar-container .yui-toolbar-separator-6 { + clear: left; + padding: 0; + margin: 0; + *float: none; + _width: 0; + _font-size: 0; +} +.yui-toolbar-container.yui-toolbar-grouped span.yui-toolbar-separator-6 { + *height: 0; +} + +/* The ID of the editor's container and the bottom right resize handle. */ +#editor_container .yui-resize-handle-br { + /* Make the handle a little bigger than the default */ + height: 11px; + width: 11px; + /* Resposition the image */ + background-position: -20px -60px; + /* Kill the hover on the handle */ + background-color: transparent; +} + +.editor-hidden { + visibility: hidden; + top: -9999px; + left: -9999px; + position: absolute; +} + +textarea { + border: 0; + margin: 0; + padding: 0; +} + Modified: trunk/views/EditArticle.php =================================================================== --- trunk/views/EditArticle.php 2008-08-24 19:14:05 UTC (rev 626) +++ trunk/views/EditArticle.php 2008-08-24 19:15:56 UTC (rev 627) @@ -11,7 +11,6 @@ require 'views/View.php'; require 'models/CategoryGateway.php'; -require 'fckeditor/fckeditor.php'; class EditArticle extends View { @@ -113,11 +112,7 @@ $this->_parseCategoriesDropdown($category, 0, $selectedCategory); } - $ofckeditor = new fckeditor('content') ; - $ofckeditor->BasePath = 'fckeditor/'; - $ofckeditor->Value = $articleId > 0? $article->getContent() : ''; - $ofckeditor->Height = '400'; - $this->tpl->set_var('textarea', $ofckeditor->CreateHtml()); + $this->tpl->set_var('textareaContent', $articleId > 0? $article->getContent() : ''); $this->tpl->pparse('out', 'edit_article'); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <al...@us...> - 2008-08-24 19:45:56
|
Revision: 628 http://sciret.svn.sourceforge.net/sciret/?rev=628&view=rev Author: alpeb Date: 2008-08-24 19:45:53 +0000 (Sun, 24 Aug 2008) Log Message: ----------- added DB profiler, for the moment just used to log queries Modified Paths: -------------- trunk/index.php Added Paths: ----------- trunk/classes/DBProfiler.php Added: trunk/classes/DBProfiler.php =================================================================== --- trunk/classes/DBProfiler.php (rev 0) +++ trunk/classes/DBProfiler.php 2008-08-24 19:45:53 UTC (rev 628) @@ -0,0 +1,14 @@ +<?php + +class DBProfiler extends Zend_Db_Profiler { + public function MonkeysDbProfiler() { + parent::__construct(true); + } + + public function queryStart($queryText, $queryType = null) { + Zend_Registry::get('logger')->log("DB QUERY: $queryText", Zend_Log::DEBUG); + return parent::queryStart($queryText, $queryType); + } +} + +?> Property changes on: trunk/classes/DBProfiler.php ___________________________________________________________________ Added: svn:executable + * Modified: trunk/index.php =================================================================== --- trunk/index.php 2008-08-24 19:15:56 UTC (rev 627) +++ trunk/index.php 2008-08-24 19:45:53 UTC (rev 628) @@ -71,6 +71,10 @@ /**************************/ $config->database->params->driver_options = array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true); $db = Zend_Db::factory($config->database); +if ($config->environment->loglevel == Zend_Log::DEBUG) { + $profiler = new DBProfiler(); + $db->setProfiler($profiler); +} $connectionFailed = false; try { $db->getConnection(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <re...@us...> - 2008-08-25 07:03:58
|
Revision: 635 http://sciret.svn.sourceforge.net/sciret/?rev=635&view=rev Author: reinerj Date: 2008-08-25 07:03:51 +0000 (Mon, 25 Aug 2008) Log Message: ----------- some other headers where the copyright is changed to the monkeys Modified Paths: -------------- trunk/javascript/general.js trunk/models/Article.php trunk/views/AddQuestion.php trunk/views/AdvancedSearch.php trunk/views/EditArticle.php trunk/views/EditBookmark.php trunk/views/EditCategories.php trunk/views/EditCategory.php trunk/views/EditPreferences.php trunk/views/EditTodo.php trunk/views/EditUser.php trunk/views/GetFavoritesDropdown.php trunk/views/GetTodosDropdown.php trunk/views/InstallEnterCredentials.php trunk/views/InstallOk.php trunk/views/Login.php trunk/views/MailArticle.php trunk/views/MainView.php trunk/views/ManageArticles.php trunk/views/ManageQuestions.php trunk/views/ManageUsers.php trunk/views/NotInstalled.php trunk/views/PrinterView.php trunk/views/SearchResults.php trunk/views/Upgrade.php trunk/views/UpgradeOk.php trunk/views/View.php trunk/views/ViewArticle.php trunk/views/ViewBookmark.php trunk/views/ViewComments.php trunk/views/ViewRelatedArticles.php Modified: trunk/javascript/general.js =================================================================== --- trunk/javascript/general.js 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/javascript/general.js 2008-08-25 07:03:51 UTC (rev 635) @@ -1,10 +1,10 @@ /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0.4 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ /** Modified: trunk/models/Article.php =================================================================== --- trunk/models/Article.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/models/Article.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0.4 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys Ltd */ class Article { Modified: trunk/views/AddQuestion.php =================================================================== --- trunk/views/AddQuestion.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/AddQuestion.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/AdvancedSearch.php =================================================================== --- trunk/views/AdvancedSearch.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/AdvancedSearch.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/EditArticle.php =================================================================== --- trunk/views/EditArticle.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/EditArticle.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0.4 +* @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/EditBookmark.php =================================================================== --- trunk/views/EditBookmark.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/EditBookmark.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0.4 +* @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/EditCategories.php =================================================================== --- trunk/views/EditCategories.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/EditCategories.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require_once 'views/View.php'; Modified: trunk/views/EditCategory.php =================================================================== --- trunk/views/EditCategory.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/EditCategory.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require_once 'views/View.php'; Modified: trunk/views/EditPreferences.php =================================================================== --- trunk/views/EditPreferences.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/EditPreferences.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/EditTodo.php =================================================================== --- trunk/views/EditTodo.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/EditTodo.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.1 +* @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/EditUser.php =================================================================== --- trunk/views/EditUser.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/EditUser.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/GetFavoritesDropdown.php =================================================================== --- trunk/views/GetFavoritesDropdown.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/GetFavoritesDropdown.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/GetTodosDropdown.php =================================================================== --- trunk/views/GetTodosDropdown.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/GetTodosDropdown.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.1 +* @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/InstallEnterCredentials.php =================================================================== --- trunk/views/InstallEnterCredentials.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/InstallEnterCredentials.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/InstallOk.php =================================================================== --- trunk/views/InstallOk.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/InstallOk.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/Login.php =================================================================== --- trunk/views/Login.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/Login.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/MailArticle.php =================================================================== --- trunk/views/MailArticle.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/MailArticle.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/MainView.php =================================================================== --- trunk/views/MainView.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/MainView.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/ManageArticles.php =================================================================== --- trunk/views/ManageArticles.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/ManageArticles.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0.4 +* @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ Modified: trunk/views/ManageQuestions.php =================================================================== --- trunk/views/ManageQuestions.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/ManageQuestions.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/ManageUsers.php =================================================================== --- trunk/views/ManageUsers.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/ManageUsers.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,13 +1,13 @@ <?php -/* - * @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net - * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License - * @author Alejandro Pedraza - * @since Sciret 1.0 - * @package Sciret - * @packager TheGang - */ +/* +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com +* @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License +* @author Alejandro Pedraza +* @since Sciret 1.0 +* @package Sciret +* @packager Keyboard Monkeys +*/ require 'views/View.php'; require 'models/UserGateway.php'; Modified: trunk/views/NotInstalled.php =================================================================== --- trunk/views/NotInstalled.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/NotInstalled.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/PrinterView.php =================================================================== --- trunk/views/PrinterView.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/PrinterView.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/SearchResults.php =================================================================== --- trunk/views/SearchResults.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/SearchResults.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/Upgrade.php =================================================================== --- trunk/views/Upgrade.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/Upgrade.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/UpgradeOk.php =================================================================== --- trunk/views/UpgradeOk.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/UpgradeOk.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/View.php =================================================================== --- trunk/views/View.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/View.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'classes/kb_template.php'; Modified: trunk/views/ViewArticle.php =================================================================== --- trunk/views/ViewArticle.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/ViewArticle.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0.4 +* @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/ViewBookmark.php =================================================================== --- trunk/views/ViewBookmark.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/ViewBookmark.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza -* @since Sciret 1.0.4 +* @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require 'views/View.php'; Modified: trunk/views/ViewComments.php =================================================================== --- trunk/views/ViewComments.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/ViewComments.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require_once 'views/View.php'; Modified: trunk/views/ViewRelatedArticles.php =================================================================== --- trunk/views/ViewRelatedArticles.php 2008-08-25 06:53:44 UTC (rev 634) +++ trunk/views/ViewRelatedArticles.php 2008-08-25 07:03:51 UTC (rev 635) @@ -1,12 +1,12 @@ <?php /* -* @copyright Copyright (C) 2005-2007 TheGang http://www.the-gang.net +* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd http://www.kb-m.com * @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License * @author Alejandro Pedraza * @since Sciret 1.0 * @package Sciret -* @packager TheGang +* @packager Keyboard Monkeys */ require_once 'views/View.php'; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <al...@us...> - 2008-08-26 00:49:44
|
Revision: 639 http://sciret.svn.sourceforge.net/sciret/?rev=639&view=rev Author: alpeb Date: 2008-08-26 00:49:40 +0000 (Tue, 26 Aug 2008) Log Message: ----------- moving config.ini.php to config.ini.php.template to avoid svn showing our local config.ini.php as modified Added Paths: ----------- trunk/config.ini.php.template Removed Paths: ------------- trunk/config.ini.php Deleted: trunk/config.ini.php =================================================================== --- trunk/config.ini.php 2008-08-25 23:46:39 UTC (rev 638) +++ trunk/config.ini.php 2008-08-26 00:49:40 UTC (rev 639) @@ -1,27 +0,0 @@ -<?php - - return array ( - 'environment' => - array ( - 'production' => false, - 'loglevel' => 0, - ), - 'general' => - array ( - 'slowdown_secs' => 0, - 'language_default' => 'English', - ), - 'database' => - array ( - 'adapter' => 'pdo_mysql', - 'params' => - array ( - 'host' => 'localhost', - 'dbname' => 'sciret_trunk', - 'username' => 'root', - 'password' => '', - ), - ), -); - -?> Copied: trunk/config.ini.php.template (from rev 638, trunk/config.ini.php) =================================================================== --- trunk/config.ini.php.template (rev 0) +++ trunk/config.ini.php.template 2008-08-26 00:49:40 UTC (rev 639) @@ -0,0 +1,27 @@ +<?php + + return array ( + 'environment' => + array ( + 'production' => false, + 'loglevel' => 0, + ), + 'general' => + array ( + 'slowdown_secs' => 0, + 'language_default' => 'English', + ), + 'database' => + array ( + 'adapter' => 'pdo_mysql', + 'params' => + array ( + 'host' => 'localhost', + 'dbname' => 'sciret_trunk', + 'username' => 'root', + 'password' => '', + ), + ), +); + +?> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <al...@us...> - 2008-08-26 01:05:23
|
Revision: 641 http://sciret.svn.sourceforge.net/sciret/?rev=641&view=rev Author: alpeb Date: 2008-08-26 01:05:02 +0000 (Tue, 26 Aug 2008) Log Message: ----------- implemented new template. Added jquery lib. Modified Paths: -------------- trunk/actions/SaveArticle.php trunk/classes/Controller.php trunk/javascript/general.js trunk/others.css trunk/style.css trunk/templates/EditArticle.tpl trunk/templates/MainView.tpl trunk/templates/TodosDropdown.tpl trunk/templates/ViewArticle.tpl trunk/templates/footer.tpl trunk/templates/head.tpl trunk/templates/header.tpl trunk/templates/pagination.tpl trunk/views/AddQuestion.php trunk/views/MainView.php trunk/views/ManageArticles.php trunk/views/SearchResults.php trunk/views/View.php trunk/views/ViewArticle.php trunk/views/ViewBookmark.php Added Paths: ----------- trunk/images/bg_author.gif trunk/images/bg_author_span.gif trunk/images/bg_content.jpg trunk/images/bg_content_top.jpg trunk/images/bg_foot.jpg trunk/images/bg_head_keyboard.jpg trunk/images/bg_menu.gif trunk/images/bg_panel.gif trunk/images/bg_panel.png trunk/images/bg_panel_title.gif trunk/images/bg_table_head.jpg trunk/images/bg_title_article.gif trunk/images/bg_title_article_span.gif trunk/images/bg_view_mode.jpg trunk/images/button_a.gif trunk/images/button_panel_a.gif trunk/images/button_panel_span.gif trunk/images/button_register_a.gif trunk/images/button_register_a.png trunk/images/button_register_span.gif trunk/images/button_register_span.png trunk/images/button_span.gif trunk/images/icon_favorite_16.png trunk/images/icon_mail_16.png trunk/images/icon_pdf_16.png trunk/images/icon_print_16.png trunk/images/logo.jpg trunk/javascript/jquery.js trunk/style_ie6.css trunk/style_ie7.css Removed Paths: ------------- trunk/templates/BasicSearch.tpl Modified: trunk/actions/SaveArticle.php =================================================================== --- trunk/actions/SaveArticle.php 2008-08-26 00:54:07 UTC (rev 640) +++ trunk/actions/SaveArticle.php 2008-08-26 01:05:02 UTC (rev 641) @@ -35,7 +35,7 @@ $art = new Article($articleId); $art->setCategoryId($_POST['cat_id']); $art->setTitle($_POST['title']); - $art->setContent($_POST['content']); + $art->setContent($_POST['text_content']); if (!isset($_POST['usage_id'])) { $art->setInternal($this->configuration->getConfigValue('internalByDefault')? 1 : 0); Modified: trunk/classes/Controller.php =================================================================== --- trunk/classes/Controller.php 2008-08-26 00:54:07 UTC (rev 640) +++ trunk/classes/Controller.php 2008-08-26 01:05:02 UTC (rev 641) @@ -71,8 +71,7 @@ $obj->setHTMLHeader($this->views[$view][SHOW_HEADER]); $obj->dispatch(); if ($this->views[$view][SHOW_HEADER]) { - $obj->tpl->set_file('footer', 'footer.tpl'); - $obj->tpl->pparse('out', 'footer'); + $obj->showFooter(); } } Property changes on: trunk/images/bg_author.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/bg_author_span.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/bg_content.jpg ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/bg_content_top.jpg ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/bg_foot.jpg ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/bg_head_keyboard.jpg ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/bg_menu.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/bg_panel.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/bg_panel.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/bg_panel_title.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/bg_table_head.jpg ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/bg_title_article.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/bg_title_article_span.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/bg_view_mode.jpg ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/button_a.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/button_panel_a.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/button_panel_span.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/button_register_a.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/button_register_a.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/button_register_span.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/button_register_span.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/button_span.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/icon_favorite_16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/icon_mail_16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/icon_pdf_16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/icon_print_16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/images/logo.jpg ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/javascript/general.js =================================================================== --- trunk/javascript/general.js 2008-08-26 00:54:07 UTC (rev 640) +++ trunk/javascript/general.js 2008-08-26 01:05:02 UTC (rev 641) @@ -10,6 +10,7 @@ /** * Classes enforce private and public members through the Module Pattern * (the vars outside are private, and what goes inside the return is public) + * We use classes inside the "SCIRET" namespace * @see http://yuiblog.com/blog/2007/06/12/module-pattern/ */ @@ -17,6 +18,12 @@ SCIRET = YAHOO.sciret; // ********************************************************* +// ** jQuery initialization, to ** +// ** avoid conflicts with prototype ** +// ********************************************************* +var $j = jQuery.noConflict(); + +// ********************************************************* // ** BROWSER DETECTION ** // ********************************************************* isIE = false; @@ -273,7 +280,7 @@ } // ********************************************************* -// ** FavoriteS FUNCTIONS ** +// ** Favorites FUNCTIONS ** // ********************************************************* function dropdownFavorites() { if (isFavoritesDropdownShown) { @@ -295,8 +302,8 @@ 'index.php?view=GetFavoritesDropdown', { method : 'post', - onLoading : function() {showLoading('generalLoading')}, - onComplete : function (response) {successAjax('generalLoading'), showDropDownFavorites(response)} + onLoading : function() {showLoading('favoritesLoading');}, + onComplete : function (response) {successAjax('favoritesLoading'), showDropDownFavorites(response)} } ); } @@ -391,8 +398,8 @@ 'index.php?view=GetTodosDropdown', { method : 'post', - onLoading : function() {showLoading('generalLoading')}, - onComplete : function (response) {successAjax('generalLoading'), showDropDownTodos(response)} + onLoading : function() {showLoading('todosLoading')}, + onComplete : function (response) {successAjax('todosLoading'), showDropDownTodos(response)} } ); } @@ -703,8 +710,55 @@ } }(); +// ********************************************************* +// ** MENU HIGHLIGHTING ** +// ********************************************************* +$j(document).ready(function() { + $j("#menu a").fadeTo('fast',1.0); + $j("#menu a").hover(function () { + $j(this).fadeTo(200,0.7); + },function(){ + $j("#menu a").fadeTo(200,1.0); + }); + + /* panel_right */ + $j('#search > .panel_title > a').click(function() { + $j('#search > .inside_panel').toggle(400); + return false; + }); + + $j('#login > .panel_title > a').click(function() { + $j('#login > .inside_panel').toggle(400); + return false; + }); + + $j('#todo > .panel_title > a').click(function() { + $j('#todo > .inside_panel').toggle(400); + return false; + }); +}); + // ********************************************************* +// ** TABS HANDLING ** +// ********************************************************* +$j(document).ready(function() { + $j(function () { + var tabContainers = $j('#tabs > div.tab'); + + $j('.view_mode a').click(function () { + tabContainers.hide(); + tabContainers.filter(this.hash).show(); + $j('.view_mode a').removeClass('active_tab'); + $j(this).addClass('active_tab'); + return false; + }).filter(':first').click(); + }); + +}); + + +// ********************************************************* // ** OTHER FUNCTIONS ** // ********************************************************* function saveDraft(form) { Added: trunk/javascript/jquery.js =================================================================== --- trunk/javascript/jquery.js (rev 0) +++ trunk/javascript/jquery.js 2008-08-26 01:05:02 UTC (rev 641) @@ -0,0 +1,32 @@ +/* + * jQuery 1.2.6 - New Wave Javascript + * + * Copyright (c) 2008 John Resig (jquery.com) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $ + * $Rev: 5685 $ + */ +(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else +return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else +return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else +selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;if(one)return value;values.push(value);}}return values;}else +return(this[0].value||"").replace(/\r/g,"");}return undefined;}if(value.constructor==Number)value+='';return this.each(function(){if(this.nodeType!=1)return;if(value.constructor==Array&&/radio|checkbox/.test(this.type))this.checked=(jQuery.inArray(this.value,value)>=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else +this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else +return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else +jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i<length;i++)if((options=arguments[i])!=null)for(var name in options){var src=target[name],copy=options[name];if(target===copy)continue;if(deep&©&&typeof copy=="object"&&!copy.nodeType)target[name]=jQuery.extend(deep,src||(copy.length!=null?[]:{}),copy);else if(copy!==undefined)target[name]=copy;}return target;};var expando="jQuery"+now(),uuid=0,windowData={},exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i,defaultView=document.defaultView||{};jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)window.jQuery=_jQuery;return jQuery;},isFunction:function(fn){return!!fn&&typeof fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/^[\s[]?function/.test(fn+"");},isXMLDoc:function(elem){return elem.documentElement&&!elem.body||elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body;},globalEval:function(data){data=jQuery.trim(data);if(data){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.browser.msie)script.text=data;else +script.appendChild(document.createTextNode(data));head.insertBefore(script,head.firstChild);head.removeChild(script);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var id=elem[expando];if(!id)id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])jQuery.cache[id]={};if(data!==undefined)jQuery.cache[id][name]=data;return name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?windowData:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id])break;if(!name)jQuery.removeData(elem);}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute)elem.removeAttribute(expando);}delete jQuery.cache[id];}},each:function(object,callback,args){var name,i=0,length=object.length;if(args){if(length==undefined){for(name in object)if(callback.apply(object[name],args)===false)break;}else +for(;i<length;)if(callback.apply(object[i++],args)===false)break;}else{if(length==undefined){for(name in object)if(callback.call(object[name],name,object[name])===false)break;}else +for(var value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}return object;},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))value=value.call(elem,i);return value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)elem.className=classNames!=undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else +jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i<stack.length;i++)if(color(stack[i])){swap[i]=stack[i].style.display;stack[i].style.display="block";}ret=name=="display"&&swap[stack.length-1]!=null?"none":(computedStyle&&computedStyle.getPropertyValue(name))||"";for(i=0;i<swap.length;i++)if(swap[i]!=null)stack[i].style.display=swap[i];}if(name=="opacity"&&ret=="")ret="1";}else if(elem.currentStyle){var camelCase=name.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase();});ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var left=style.left,rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;style.left=ret||0;ret=style.pixelLeft+"px";style.left=left;elem.runtimeStyle.left=rsLeft;}}return ret;},clean:function(elems,context){var ret=[];context=context||document;if(typeof context.createElement=='undefined')context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;jQuery.each(elems,function(i,elem){if(!elem)return;if(elem.constructor==Number)elem+='';if(typeof elem=="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else +ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&¬xml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&¬xml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&¬xml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else +while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)if(array[i]===elem)return i;return-1;},merge:function(first,second){var i=0,elem,pos=first.length;if(jQuery.browser.msie){while(elem=second[i++])if(elem.nodeType!=8)first[pos++]=elem;}else +while(elem=second[i++])first[pos++]=elem;return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)if(!inv!=!callback(elems[i],i))ret.push(elems[i]);return ret;},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!=null)ret[ret.length]=value;}return ret.concat.apply([],ret);}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing"}});jQuery.each({parent:function(elem){return elem.parentNode;},parents:function(elem){return jQuery.dir(elem,"parentNode");},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var ret=jQuery.map(this,fn);if(selector&&typeof selector=="string")ret=jQuery.multiFilter(selector,ret);return this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var args=arguments;return this.each(function(){for(var i=0,length=args.length;i<length;i++)jQuery(args[i])[original](this);});};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames);},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)this.parentNode.removeChild(this);}},empty:function(){jQuery(">*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return i<m[3]-0;},gt:function(a,i,m){return i>m[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j<rl;j++){var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)if(n.nodeType==1){var id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||n.nodeName.toUpperCase()==nodeName){if(m=="~")merge[id]=true;r.push(n);}if(m=="+")break;}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var re2=quickID;var m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}m[2]=m[2].replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var add=false;if(first==0){if(node.nodeIndex==last)add=true;}else if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else +for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i<args.length)jQuery.event.proxy(fn,args[i++]);return this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=(this.lastToggle||0)%i;event.preventDefault();return args[this.lastToggle++].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else +jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.call(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return;}jQuery.ready();},false);if(jQuery.browser.safari){var numStyles;(function(){if(jQuery.isReady)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}if(numStyles===undefined)numStyles=jQuery("style, link[rel=stylesheet]").length;if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return;}jQuery.ready();})();}jQuery.event.add(window,"load",jQuery.ready);}jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};});var withinElement=function(event,elem){var parent=event.relatedTarget;while(parent&&parent!=elem)try{parent=parent.parentNode;}catch(error){parent=elem;}return parent==elem;};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind();});jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,params,callback){if(typeof url!='string')return this._load(url);var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else +xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else +jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else +for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else +s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else +e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].ele... [truncated message content] |
From: <al...@us...> - 2008-08-26 18:40:32
|
Revision: 643 http://sciret.svn.sourceforge.net/sciret/?rev=643&view=rev Author: alpeb Date: 2008-08-26 18:40:30 +0000 (Tue, 26 Aug 2008) Log Message: ----------- PDO is giving me too much headeaches when not using the latest php versions, so I'll be using mysqli instead Modified Paths: -------------- trunk/config.ini.php.template trunk/index.php trunk/models/ArticleGateway.php trunk/models/ArticleIterator.php Modified: trunk/config.ini.php.template =================================================================== --- trunk/config.ini.php.template 2008-08-26 18:40:02 UTC (rev 642) +++ trunk/config.ini.php.template 2008-08-26 18:40:30 UTC (rev 643) @@ -13,7 +13,7 @@ ), 'database' => array ( - 'adapter' => 'pdo_mysql', + 'adapter' => 'mysqli', 'params' => array ( 'host' => 'localhost', Modified: trunk/index.php =================================================================== --- trunk/index.php 2008-08-26 18:40:02 UTC (rev 642) +++ trunk/index.php 2008-08-26 18:40:30 UTC (rev 643) @@ -69,7 +69,6 @@ /************************** * DATABASE /**************************/ -$config->database->params->driver_options = array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true); $db = Zend_Db::factory($config->database); if ($config->environment->loglevel == Zend_Log::DEBUG) { $profiler = new DBProfiler(); Modified: trunk/models/ArticleGateway.php =================================================================== --- trunk/models/ArticleGateway.php 2008-08-26 18:40:02 UTC (rev 642) +++ trunk/models/ArticleGateway.php 2008-08-26 18:40:30 UTC (rev 643) @@ -106,6 +106,7 @@ } $result = DB::getInstance()->query($query); + $resultSet = $result->fetchAll(Zend_Db::FETCH_ASSOC); if ($numRecords != -1) { $query2 = 'SELECT FOUND_ROWS()'; @@ -116,7 +117,7 @@ $totalNumItems = $result->rowCount(); } - return new ArticleIterator($result, $totalNumItems); + return new ArticleIterator($resultSet, $totalNumItems); } function getSearchResults( $searchQuery, @@ -161,6 +162,7 @@ } $result = DB::getInstance()->query($query, array($searchQuery, $searchQuery)); } + $resultSet = $result->fetchAll(Zend_Db::FETCH_ASSOC); if ($numRecords != -1) { $query2 = 'SELECT FOUND_ROWS()'; @@ -171,7 +173,7 @@ $totalNumItems = $result->rowCount(); } - return new ArticleIterator($result, $totalNumItems); + return new ArticleIterator($resultSet, $totalNumItems); } function getAdvancedSearchResults( $allWords, Modified: trunk/models/ArticleIterator.php =================================================================== --- trunk/models/ArticleIterator.php 2008-08-26 18:40:02 UTC (rev 642) +++ trunk/models/ArticleIterator.php 2008-08-26 18:40:30 UTC (rev 643) @@ -12,17 +12,24 @@ class ArticleIterator { var $resultSet; var $totalNumItems; + private $_cursor = 0; function ArticleIterator($resultSet, $totalNumItems) { - $this->resultSet = $resultSet; - $this->totalNumItems = $totalNumItems; + if (is_a($resultSet, 'Zend_Db_Statement_Interface')) { + $this->resultSet = $resultSet->fetchAll(Zend_Db::FETCH_ASSOC); + } else { + $this->resultSet = $resultSet; + } + $this->totalNumItems = $totalNumItems; } function fetch() { - if (!$row = $this->resultSet->fetch()) { + if (!isset($this->resultSet[$this->_cursor])) { return false; } + $row = $this->resultSet[$this->_cursor]; + $article = new Article; $article->setId($row['art_id']); $article->setIsBookmark($row['is_bookmark']); @@ -50,6 +57,8 @@ $article->setNumFiles($row['num_files']); } + $this->_cursor++; + return $article; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <al...@us...> - 2008-08-27 16:32:28
|
Revision: 649 http://sciret.svn.sourceforge.net/sciret/?rev=649&view=rev Author: alpeb Date: 2008-08-27 16:32:25 +0000 (Wed, 27 Aug 2008) Log Message: ----------- dropped prototype lib, and replaced all ajax calls with YUI's Modified Paths: -------------- trunk/javascript/general.js trunk/templates/head.tpl Modified: trunk/javascript/general.js =================================================================== --- trunk/javascript/general.js 2008-08-27 16:31:18 UTC (rev 648) +++ trunk/javascript/general.js 2008-08-27 16:32:25 UTC (rev 649) @@ -14,13 +14,13 @@ * @see http://yuiblog.com/blog/2007/06/12/module-pattern/ */ +/** + * Aliases definitions (functions, namespaces) + */ YAHOO.namespace("sciret"); SCIRET = YAHOO.sciret; -// ********************************************************* -// ** jQuery initialization, to ** -// ** avoid conflicts with prototype ** -// ********************************************************* +// to avoid conflicts with YAHOO.tools' $ function var $j = jQuery.noConflict(); // ********************************************************* @@ -136,39 +136,51 @@ } } - new Ajax.Updater( 'commentsDiv', - 'index.php?action=AddCommentAndRating&artId='+artId+'&loadingId='+loadingId, - { method : 'post', - parameters : 'commentUserName='+userName+'&comment_box='+comment+'&Rate='+rate, - evalScripts : true, - onLoading : function() {showLoading(loadingId);}, - onComplete : function() {successAjax(loadingId)}}); + showLoading(loadingId); + var transaction = YAHOO.util.Connect.asyncRequest('POST', + 'index.php?action=AddCommentAndRating&artId='+artId+'&loadingId='+loadingId, + { + success: commentOperationCompleted, + failure: function() {alert('operation failed')} + }, + 'commentUserName='+userName+'&comment_box='+comment+'&Rate='+rate); } +function commentOperationCompleted(responseObj) { + $('commentsDiv').innerHTML = responseObj.responseText; +} + function publishComment(commentId, loadingId) { - new Ajax.Updater( 'commentsDiv', - 'index.php?action=PublishComment&artId='+artId+'&commentId='+commentId+'&loadingId='+loadingId, - { method : 'post', - evalScripts : true, - onLoading : function() {showLoading(loadingId);}, - onComplete : function() {successAjax(loadingId)}}); + showLoading(loadingId); + var transaction = YAHOO.util.Connect.asyncRequest('POST', + 'index.php?action=PublishComment&artId='+artId+'&commentId='+commentId+'&loadingId='+loadingId, + { + success: commentOperationCompleted, + failure: function() {alert('operation failed')} + }, + null); } function deleteComment(commentId, loadingId) { - new Ajax.Updater( 'commentsDiv', - 'index.php?action=DeleteComment&artId='+artId+'&commentId='+commentId+'&loadingId='+loadingId, - { method : 'post', - evalScripts : true, - onLoading : function() {showLoading(loadingId);}, - onComplete : function() {successAjax(loadingId)}}); + showLoading(loadingId); + var transaction = YAHOO.util.Connect.asyncRequest('POST', + 'index.php?action=DeleteComment&artId='+artId+'&commentId='+commentId+'&loadingId='+loadingId, + { + success: commentOperationCompleted, + failure: function() {alert('operation failed')} + }, + null); } function publishArticle(loadingId, referrer, articleId) { articleId = articleId || artId; - new Ajax.Request( 'index.php?action=PublishArticle&artId='+articleId, - { method : 'post', - onLoading : function() {showLoading(loadingId);}, - onComplete : function(response) {publishArticleCompleted(response, loadingId, articleId)}}); + var transaction = YAHOO.util.Connect.asyncRequest('POST', + 'index.php?action=PublishArticle&artId='+articleId, + { + success: function(response) {publishArticleCompleted(response, loadingId, articleId)}, + failure: function() {alert('operation failed')} + }, + null); } function publishArticleCompleted(responseObj, loadingId, articleId) { @@ -194,26 +206,33 @@ return; } - new Ajax.Updater( 'relatedArticlesDiv', - 'index.php?action=AddRelatedArticles&parentId='+parentId+'&parentType=' + parentType + '&loadingId='+loadingId, - { method : 'post', - parameters : 'related_articles='+relatedArticles, - evalScripts : true, - onLoading : function() {showLoading(loadingId)}, - onComplete : function() {successAjax(loadingId)} - }); + showLoading(loadingId); + var transaction = YAHOO.util.Connect.asyncRequest('POST', + 'index.php?action=AddRelatedArticles&parentId='+parentId+'&parentType=' + parentType + '&loadingId='+loadingId, + { + success: function (response) {submitRelatedArticlesCompleted(response, loadingId)}, + failure: function() {alert('operation failed')} + }, + 'related_articles='+relatedArticles); } +function submitRelatedArticlesCompleted(responseObj, loadingId) { + successAjax(loadingId); + $('relatedArticlesDiv').innerHTML = responseObj.responseText; + fade('relatedArtsMessage'); +} + function markAsFinal(loadingId, articleId) { articleId = articleId || artId; - new Ajax.Request( - 'index.php?action=MarkArticleFinal&artId=' + articleId, - { - method : 'post', - onLoading : function() {showLoading(loadingId)}, - onComplete : function(response) {markAsFinalCompleted(response, loadingId, articleId)} - } - ); + + showLoading(loadingId); + var transaction = YAHOO.util.Connect.asyncRequest('POST', + 'index.php?action=MarkArticleFinal&artId=' + articleId, + { + success: function(response) {markAsFinalCompleted(response, loadingId, articleId)}, + failure: function() {alert('operation failed')} + }, + null); } function markAsFinalCompleted(responseObj, loadingId, articleId) { @@ -342,17 +361,14 @@ $('favoriteStarImg').style.display = 'none'; $('unFavoriteStarImg').style.display = 'none'; - new Ajax.Request( - 'index.php?action=' + action, - { - method : 'post', - parameters : 'artId=' + artId + '&favorite=' + favorite + '&query=' + query + '&catId=' + catId, - onLoading : function() { - $('favoriteProgressImg').style.display = 'inline'; - }, - onComplete : completedFavoriteArticle - } - ); + $('favoriteProgressImg').style.display = 'inline'; + var transaction = YAHOO.util.Connect.asyncRequest('POST', + 'index.php?action=' + action, + { + success: completedFavoriteArticle, + failure: function() {alert('operation failed')} + }, + 'artId=' + artId + '&favorite=' + favorite + '&query=' + query + '&catId=' + catId); } function completedFavoriteArticle(responseObj) { @@ -427,14 +443,13 @@ $('todoCheck_' + todoId).style.display = 'none'; $('todoProgressImg_' + todoId).style.display = 'inline'; - new Ajax.Request( - 'index.php?action=CompleteTodo', - { - method : 'post', - parameters : 'todoId=' + todoId, - onComplete : function (response) {successAjax('todoProgressImg_' + todoId), completeTickTodo(response, todoId)} - } - ); + var transaction = YAHOO.util.Connect.asyncRequest('POST', + 'index.php?action=CompleteTodo', + { + success: function (response) {successAjax('todoProgressImg_' + todoId), completeTickTodo(response, todoId)}, + failure: function() {alert('operation failed')} + }, + 'todoId=' + todoId); } function completeTickTodo(responseObj, todoId) { Modified: trunk/templates/head.tpl =================================================================== --- trunk/templates/head.tpl 2008-08-27 16:31:18 UTC (rev 648) +++ trunk/templates/head.tpl 2008-08-27 16:32:25 UTC (rev 649) @@ -16,6 +16,7 @@ <![endif]-> <!-- basic YUI libraries --> <script type="text/javascript" src="javascript/yui/build/yahoo-dom-event/yahoo-dom-event.js"></script> + <script type="text/javascript" src="javascript/tools-min.js"></script> <script type="text/javascript" src="javascript/yui/build/container/container_core-min.js"></script> <script type="text/javascript" src="javascript/yui/build/element/element-beta-min.js"></script> <script type="text/javascript" src="javascript/yui/build/dragdrop/dragdrop-min.js"></script> @@ -24,14 +25,12 @@ <script type="text/javascript" src="javascript/yui/build/connection/connection-min.js"></script> <script type="text/javascript" src="javascript/yui/build/logger/logger-min.js"></script> <!-- required by effects.js --> - <script type="text/javascript" src="javascript/tools-min.js"></script> <script type="text/javascript" src="javascript/effects-min.js"></script> <script src="javascript/jquery.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript" src="javascript/general.js"></script> <script type="text/javascript" src="javascript/simModal.js"></script> <script type="text/javascript" src="javascript/overlib.js"></script> - <script type="text/javascript" src="javascript/scriptaculous/lib/prototype.js"></script> <style type="text/css">@import url(javascript/jscalendar/calendar-blue.css);</style> <script type="text/javascript" src="javascript/jscalendar/calendar.js"></script> <script type="text/javascript" src="javascript/jscalendar/lang/calendar-en.js"></script> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <al...@us...> - 2008-08-27 15:06:04
|
Revision: 647 http://sciret.svn.sourceforge.net/sciret/?rev=647&view=rev Author: alpeb Date: 2008-08-27 15:06:00 +0000 (Wed, 27 Aug 2008) Log Message: ----------- Removed the scriptaculous lib, because it was conflicting with the YUI RTE. Replaced with some Effects adapted to YUI Modified Paths: -------------- trunk/javascript/general.js trunk/templates/footer.tpl trunk/templates/head.tpl Added Paths: ----------- trunk/javascript/effects-min.js trunk/javascript/effects.js trunk/javascript/tools-min.js Removed Paths: ------------- trunk/javascript/scriptaculous/ Added: trunk/javascript/effects-min.js =================================================================== --- trunk/javascript/effects-min.js (rev 0) +++ trunk/javascript/effects-min.js 2008-08-27 15:06:00 UTC (rev 647) @@ -0,0 +1,123 @@ +/* +* Copyright (c) 2007, Dav Glass <dav...@ya...>. +* Code licensed under the BSD License: +* http://blog.davglass.com/license.txt +* All rights reserved. +*/ +YAHOO.widget.Effects=function(){return{version:'0.8'}}();YAHOO.widget.Effects.Hide=function(inElm){this.element=YAHOO.util.Dom.get(inElm);YAHOO.util.Dom.setStyle(this.element,'display','none');YAHOO.util.Dom.setStyle(this.element,'visibility','hidden');} +YAHOO.widget.Effects.Hide.prototype.toString=function(){return'Effect Hide ['+this.element.id+']';} +YAHOO.widget.Effects.Show=function(inElm){this.element=YAHOO.util.Dom.get(inElm);YAHOO.util.Dom.setStyle(this.element,'display','block');YAHOO.util.Dom.setStyle(this.element,'visibility','visible');} +YAHOO.widget.Effects.Show.prototype.toString=function(){return'Effect Show ['+this.element.id+']';} +YAHOO.widget.Effects.Fade=function(inElm,opts){this.element=YAHOO.util.Dom.get(inElm);var attributes={opacity:{from:1,to:0}};this.onEffectComplete=new YAHOO.util.CustomEvent('oneffectcomplete',this);var ease=((opts&&opts.ease)?opts.ease:YAHOO.util.Easing.easeOut);var secs=((opts&&opts.seconds)?opts.seconds:1);var delay=((opts&&opts.delay)?opts.delay:false);this.effect=new YAHOO.util.Anim(this.element,attributes,secs,ease);this.effect.onComplete.subscribe(function(){YAHOO.widget.Effects.Hide(this.element);this.onEffectComplete.fire();},this,true);if(!delay){this.effect.animate();}} +YAHOO.widget.Effects.Fade.prototype.animate=function(){this.effect.animate();} +YAHOO.widget.Effects.Fade.prototype.toString=function(){return'Effect Fade ['+this.element.id+']';} +YAHOO.widget.Effects.Appear=function(inElm,opts){this.element=YAHOO.util.Dom.get(inElm);YAHOO.util.Dom.setStyle(this.element,'opacity','0');YAHOO.widget.Effects.Show(this.element);var attributes={opacity:{from:0,to:1}};this.onEffectComplete=new YAHOO.util.CustomEvent('oneffectcomplete',this);var ease=((opts&&opts.ease)?opts.ease:YAHOO.util.Easing.easeOut);var secs=((opts&&opts.seconds)?opts.seconds:3);var delay=((opts&&opts.delay)?opts.delay:false);this.effect=new YAHOO.util.Anim(this.element,attributes,secs,ease);this.effect.onComplete.subscribe(function(){this.onEffectComplete.fire();},this,true);if(!delay){this.effect.animate();}} +YAHOO.widget.Effects.Appear.prototype.animate=function(){this.effect.animate();} +YAHOO.widget.Effects.Appear.prototype.toString=function(){return'Effect Appear ['+this.element.id+']';} +YAHOO.widget.Effects.BlindUp=function(inElm,opts){var ease=((opts&&opts.ease)?opts.ease:YAHOO.util.Easing.easeOut);var secs=((opts&&opts.seconds)?opts.seconds:1);var delay=((opts&&opts.delay)?opts.delay:false);var ghost=((opts&&opts.ghost)?opts.ghost:false);this.element=YAHOO.util.Dom.get(inElm);this._height=$T.getHeight(this.element);this._top=parseInt(YAHOO.util.Dom.getStyle(this.element,'top'));this._opts=opts;YAHOO.util.Dom.setStyle(this.element,'overflow','hidden');var attributes={height:{to:0}};if(ghost){attributes.opacity={to:0,from:1}} +this.onEffectComplete=new YAHOO.util.CustomEvent('oneffectcomplete',this);if(opts&&opts.bind&&(opts.bind=='bottom')){var attributes={height:{from:0,to:parseInt(this._height)},top:{from:(this._top+parseInt(this._height)),to:this._top}};if(ghost){attributes.opacity={to:1,from:0}}} +this.effect=new YAHOO.util.Anim(this.element,attributes,secs,ease);this.effect.onComplete.subscribe(function(){if(this._opts&&this._opts.bind&&(this._opts.bind=='bottom')){YAHOO.util.Dom.setStyle(this.element,'top',this._top+'px');}else{YAHOO.widget.Effects.Hide(this.element);YAHOO.util.Dom.setStyle(this.element,'height',this._height);} +YAHOO.util.Dom.setStyle(this.element,'opacity',1);this.onEffectComplete.fire();},this,true);if(!delay){this.animate();}} +YAHOO.widget.Effects.BlindUp.prototype.prepStyle=function(){if(this._opts&&this._opts.bind&&(this._opts.bind=='bottom')){YAHOO.util.Dom.setStyle(this.element,'height','0px');YAHOO.util.Dom.setStyle(this.element,'top',this._height);} +YAHOO.widget.Effects.Show(this.element);} +YAHOO.widget.Effects.BlindUp.prototype.animate=function(){this.prepStyle();this.effect.animate();} +YAHOO.widget.Effects.BlindUp.prototype.toString=function(){return'Effect BlindUp ['+this.element.id+']';} +YAHOO.widget.Effects.BlindDown=function(inElm,opts){var ease=((opts&&opts.ease)?opts.ease:YAHOO.util.Easing.easeOut);var secs=((opts&&opts.seconds)?opts.seconds:1);var delay=((opts&&opts.delay)?opts.delay:false);var ghost=((opts&&opts.ghost)?opts.ghost:false);this.element=YAHOO.util.Dom.get(inElm);this._opts=opts;this._height=parseInt($T.getHeight(this.element));this._top=parseInt(YAHOO.util.Dom.getStyle(this.element,'top'));YAHOO.util.Dom.setStyle(this.element,'overflow','hidden');var attributes={height:{from:0,to:this._height}};if(ghost){attributes.opacity={to:1,from:0}} +this.onEffectComplete=new YAHOO.util.CustomEvent('oneffectcomplete',this);if(opts&&opts.bind&&(opts.bind=='bottom')){var attributes={height:{to:0,from:parseInt(this._height)},top:{to:(this._top+parseInt(this._height)),from:this._top}};if(ghost){attributes.opacity={to:0,from:1}}} +this.effect=new YAHOO.util.Anim(this.element,attributes,secs,ease);if(opts&&opts.bind&&(opts.bind=='bottom')){this.effect.onComplete.subscribe(function(){YAHOO.widget.Effects.Hide(this.element);YAHOO.util.Dom.setStyle(this.element,'top',this._top+'px');YAHOO.util.Dom.setStyle(this.element,'height',this._height+'px');YAHOO.util.Dom.setStyle(this.element,'opacity',1);this.onEffectComplete.fire();},this,true);}else{this.effect.onComplete.subscribe(function(){YAHOO.util.Dom.setStyle(this.element,'opacity',1);this.onEffectComplete.fire();},this,true);} +if(!delay){this.animate();}} +YAHOO.widget.Effects.BlindDown.prototype.prepStyle=function(){if(this._opts&&this._opts.bind&&(this._opts.bind=='bottom')){}else{YAHOO.util.Dom.setStyle(this.element,'height','0px');} +YAHOO.widget.Effects.Show(this.element);} +YAHOO.widget.Effects.BlindDown.prototype.animate=function(){this.prepStyle();this.effect.animate();} +YAHOO.widget.Effects.BlindDown.prototype.toString=function(){return'Effect BlindDown ['+this.element.id+']';} +YAHOO.widget.Effects.BlindRight=function(inElm,opts){var ease=((opts&&opts.ease)?opts.ease:YAHOO.util.Easing.easeOut);var secs=((opts&&opts.seconds)?opts.seconds:1);var delay=((opts&&opts.delay)?opts.delay:false);var ghost=((opts&&opts.ghost)?opts.ghost:false);this.element=YAHOO.util.Dom.get(inElm);this._width=parseInt(YAHOO.util.Dom.getStyle(this.element,'width'));this._left=parseInt(YAHOO.util.Dom.getStyle(this.element,'left'));this._opts=opts;YAHOO.util.Dom.setStyle(this.element,'overflow','hidden');this.onEffectComplete=new YAHOO.util.CustomEvent('oneffectcomplete',this);var attributes={width:{from:0,to:this._width}};if(ghost){attributes.opacity={to:1,from:0}} +if(opts&&opts.bind&&(opts.bind=='right')){var attributes={width:{to:0},left:{to:this._left+parseInt(this._width),from:this._left}};if(ghost){attributes.opacity={to:0,from:1}}} +this.effect=new YAHOO.util.Anim(this.element,attributes,secs,ease);if(opts&&opts.bind&&(opts.bind=='right')){this.effect.onComplete.subscribe(function(){YAHOO.widget.Effects.Hide(this.element);YAHOO.util.Dom.setStyle(this.element,'width',this._width+'px');YAHOO.util.Dom.setStyle(this.element,'left',this._left+'px');this._width=null;YAHOO.util.Dom.setStyle(this.element,'opacity',1);this.onEffectComplete.fire();},this,true);}else{this.effect.onComplete.subscribe(function(){YAHOO.util.Dom.setStyle(this.element,'opacity',1);this.onEffectComplete.fire();},this,true);} +if(!delay){this.animate();}} +YAHOO.widget.Effects.BlindRight.prototype.prepStyle=function(){if(this._opts&&this._opts.bind&&(this._opts.bind=='right')){}else{YAHOO.util.Dom.setStyle(this.element,'width','0');}} +YAHOO.widget.Effects.BlindRight.prototype.animate=function(){this.prepStyle();this.effect.animate();} +YAHOO.widget.Effects.BlindRight.prototype.toString=function(){return'Effect BlindRight ['+this.element.id+']';} +YAHOO.widget.Effects.BlindLeft=function(inElm,opts){var ease=((opts&&opts.ease)?opts.ease:YAHOO.util.Easing.easeOut);var secs=((opts&&opts.seconds)?opts.seconds:1);var delay=((opts&&opts.delay)?opts.delay:false);var ghost=((opts&&opts.ghost)?opts.ghost:false);this.ghost=ghost;this.element=YAHOO.util.Dom.get(inElm);this._width=YAHOO.util.Dom.getStyle(this.element,'width');this._left=parseInt(YAHOO.util.Dom.getStyle(this.element,'left'));this._opts=opts;YAHOO.util.Dom.setStyle(this.element,'overflow','hidden');var attributes={width:{to:0}};if(ghost){attributes.opacity={to:0,from:1}} +this.onEffectComplete=new YAHOO.util.CustomEvent('oneffectcomplete',this);if(opts&&opts.bind&&(opts.bind=='right')){var attributes={width:{from:0,to:parseInt(this._width)},left:{from:this._left+parseInt(this._width),to:this._left}};if(ghost){attributes.opacity={to:1,from:0}}} +this.effect=new YAHOO.util.Anim(this.element,attributes,secs,ease);if(opts&&opts.bind&&(opts.bind=='right')){this.effect.onComplete.subscribe(function(){this.onEffectComplete.fire();},this,true);}else{this.effect.onComplete.subscribe(function(){YAHOO.widget.Effects.Hide(this.element);YAHOO.util.Dom.setStyle(this.element,'width',this._width);YAHOO.util.Dom.setStyle(this.element,'left',this._left+'px');YAHOO.util.Dom.setStyle(this.element,'opacity',1);this._width=null;this.onEffectComplete.fire();},this,true);} +if(!delay){this.animate();}} +YAHOO.widget.Effects.BlindLeft.prototype.prepStyle=function(){if(this._opts&&this._opts.bind&&(this._opts.bind=='right')){YAHOO.widget.Effects.Hide(this.element);YAHOO.util.Dom.setStyle(this.element,'width','0px');YAHOO.util.Dom.setStyle(this.element,'left',parseInt(this._width));if(this.ghost){YAHOO.util.Dom.setStyle(this.element,'opacity',0);} +YAHOO.widget.Effects.Show(this.element);}} +YAHOO.widget.Effects.BlindLeft.prototype.animate=function(){this.prepStyle();this.effect.animate();} +YAHOO.widget.Effects.BlindLeft.prototype.toString=function(){return'Effect BlindLeft ['+this.element.id+']';} +YAHOO.widget.Effects.Fold=function(inElm,opts){var ease=((opts&&opts.ease)?opts.ease:YAHOO.util.Easing.easeOut);var secs=((opts&&opts.seconds)?opts.seconds:1);var delay=((opts&&opts.delay)?opts.delay:false);this.ghost=((opts&&opts.ghost)?opts.ghost:false);this.element=YAHOO.util.Dom.get(inElm);this._to=5;if(!delay){YAHOO.widget.Effects.Show(this.element);} +YAHOO.util.Dom.setStyle(this.element,'overflow','hidden');this.done=false;this._height=parseInt($T.getHeight(this.element));this._width=YAHOO.util.Dom.getStyle(this.element,'width');this.onEffectComplete=new YAHOO.util.CustomEvent('oneffectcomplete',this);if(opts&&opts.to){this._to=opts.to;} +var attributes={height:{to:this._to}};this.effect=new YAHOO.util.Anim(this.element,attributes,secs,ease);this.effect.onComplete.subscribe(function(){if(this.done){YAHOO.widget.Effects.Hide(this.element);YAHOO.util.Dom.setStyle(this.element,'height',this._height+'px');YAHOO.util.Dom.setStyle(this.element,'width',this._width);this.onEffectComplete.fire();}else{this.done=true;this.effect.attributes={width:{to:0},height:{from:this._to,to:this._to}} +if(this.ghost){this.effect.attributes.opacity={to:0,from:1}} +this.animate();}},this,true);if(!delay){this.animate();}} +YAHOO.widget.Effects.Fold.prototype.animate=function(){this.effect.animate();} +YAHOO.widget.Effects.Fold.prototype.toString=function(){return'Effect Fold ['+this.element.id+']';} +YAHOO.widget.Effects.UnFold=function(inElm,opts){var ease=((opts&&opts.ease)?opts.ease:YAHOO.util.Easing.easeOut);var secs=((opts&&opts.seconds)?opts.seconds:1);var delay=((opts&&opts.delay)?opts.delay:false);this.ghost=((opts&&opts.ghost)?opts.ghost:false);this.element=YAHOO.util.Dom.get(inElm);this._height=$T.getHeight(this.element);this._width=YAHOO.util.Dom.getStyle(this.element,'width');this._to=5;YAHOO.util.Dom.setStyle(this.element,'overflow','hidden');this.done=false;this.onEffectComplete=new YAHOO.util.CustomEvent('oneffectcomplete',this);if(opts&&opts.to){this._to=opts.to;} +attributes={height:{from:0,to:this._to},width:{from:0,to:parseInt(this._width)}};if(this.ghost){attributes.opacity={to:.15,from:0}} +this.effect=new YAHOO.util.Anim(this.element,attributes,secs,ease);this.effect.onComplete.subscribe(function(){if(this.done){this.onEffectComplete.fire();this.done=false;}else{this.done=true;this.effect.attributes={width:{from:parseInt(this._width),to:parseInt(this._width)},height:{from:this._to,to:parseInt(this._height)}} +if(this.ghost){this.effect.attributes.opacity={to:1,from:.15}} +this.effect.animate();}},this,true);if(!delay){this.animate();}} +YAHOO.widget.Effects.UnFold.prototype.prepStyle=function(){YAHOO.widget.Effects.Hide(this.element);YAHOO.util.Dom.setStyle(this.element,'height','0px');YAHOO.util.Dom.setStyle(this.element,'width','0px');this.effect.attributes=attributes;} +YAHOO.widget.Effects.UnFold.prototype.animate=function(){this.prepStyle();YAHOO.widget.Effects.Show(this.element);this.effect.animate();} +YAHOO.widget.Effects.UnFold.prototype.toString=function(){return'Effect UnFold ['+this.element.id+']';} +YAHOO.widget.Effects.ShakeLR=function(inElm,opts){this.element=YAHOO.util.Dom.get(inElm);this._offSet=10;this._maxCount=5;this._counter=0;this._elmPos=YAHOO.util.Dom.getXY(this.element);var attributes={left:{to:(-this._offSet)}};this.onEffectComplete=new YAHOO.util.CustomEvent('oneffectcomplete',this);if(opts&&opts.offset){this._offSet=opts.offset;} +if(opts&&opts.maxcount){this._maxCount=opts.maxcount;} +var ease=((opts&&opts.ease)?opts.ease:YAHOO.util.Easing.easeOut);var secs=((opts&&opts.seconds)?opts.seconds:.25);var delay=((opts&&opts.delay)?opts.delay:false);this.effect=new YAHOO.util.Anim(this.element,attributes,secs,ease);this.effect.onComplete.subscribe(function(){if(this.done){this.onEffectComplete.fire();}else{if(this._counter<this._maxCount){this._counter++;if(this._left){this._left=null;this.effect.attributes={left:{to:(-this._offSet)}}}else{this._left=true;this.effect.attributes={left:{to:this._offSet}}} +this.effect.animate();}else{this.done=true;this._left=null;this._counter=null;this.effect.attributes={left:{to:0}} +this.effect.animate();}}},this,true);if(!delay){this.effect.animate();}} +YAHOO.widget.Effects.ShakeLR.prototype.animate=function(){this.effect.animate();} +YAHOO.widget.Effects.ShakeLR.prototype.toString=function(){return'Effect ShakeLR ['+this.element.id+']';} +YAHOO.widget.Effects.ShakeTB=function(inElm,opts){this.element=YAHOO.util.Dom.get(inElm);this._offSet=10;this._maxCount=5;this._counter=0;this._elmPos=YAHOO.util.Dom.getXY(this.element);var attributes={top:{to:(-this._offSet)}};if(opts&&opts.offset){this._offSet=opts.offset;} +if(opts&&opts.maxcount){this._maxCount=opts.maxcount;} +this.onEffectComplete=new YAHOO.util.CustomEvent('oneffectcomplete',this);var ease=((opts&&opts.ease)?opts.ease:YAHOO.util.Easing.easeOut);var secs=((opts&&opts.seconds)?opts.seconds:.25);var delay=((opts&&opts.delay)?opts.delay:false);this.effect=new YAHOO.util.Anim(this.element,attributes,secs,ease);this.effect.onComplete.subscribe(function(){if(this.done){this.onEffectComplete.fire();}else{if(this._counter<this._maxCount){this._counter++;if(this._left){this._left=null;this.effect.attributes={top:{to:(-this._offSet)}}}else{this._left=true;this.effect.attributes={top:{to:this._offSet}}} +this.effect.animate();}else{this.done=true;this._left=null;this._counter=null;this.effect.attributes={top:{to:0}} +this.effect.animate();}}},this,true);if(!delay){this.effect.animate();}} +YAHOO.widget.Effects.ShakeTB.prototype.animate=function(){this.effect.animate();} +YAHOO.widget.Effects.ShakeTB.prototype.toString=function(){return'Effect ShakeTB ['+this.element.id+']';} +YAHOO.widget.Effects.Drop=function(inElm,opts){this.element=YAHOO.util.Dom.get(inElm);this._height=parseInt($T.getHeight(this.element));this._top=parseInt($D.getStyle(this.element,'top'));var attributes={top:{from:this._top,to:(this._top+this._height)},opacity:{from:1,to:0}};this.onEffectComplete=new YAHOO.util.CustomEvent('oneffectcomplete',this);var ease=((opts&&opts.ease)?opts.ease:YAHOO.util.Easing.easeIn);var secs=((opts&&opts.seconds)?opts.seconds:1);var delay=((opts&&opts.delay)?opts.delay:false);this.effect=new YAHOO.util.Anim(this.element,attributes,secs,ease);this.effect.onComplete.subscribe(function(){YAHOO.widget.Effects.Hide(this.element);YAHOO.util.Dom.setStyle(this.element,'top',this._top+'px');YAHOO.util.Dom.setStyle(this.element,'opacity',1);this.onEffectComplete.fire();},this,true);if(!delay){this.animate();}} +YAHOO.widget.Effects.Drop.prototype.animate=function(){this.effect.animate();} +YAHOO.widget.Effects.Drop.prototype.toString=function(){return'Effect Drop ['+this.element.id+']';} +YAHOO.widget.Effects.Pulse=function(inElm,opts){this.element=YAHOO.util.Dom.get(inElm);this._counter=0;this._maxCount=9;var attributes={opacity:{from:1,to:0}};if(opts&&opts.maxcount){this._maxCount=opts.maxcount;} +this.onEffectComplete=new YAHOO.util.CustomEvent('oneffectcomplete',this);var ease=((opts&&opts.ease)?opts.ease:YAHOO.util.Easing.easeIn);var secs=((opts&&opts.seconds)?opts.seconds:.25);var delay=((opts&&opts.delay)?opts.delay:false);this.effect=new YAHOO.util.Anim(this.element,attributes,secs,ease);this.effect.onComplete.subscribe(function(){if(this.done){this.onEffectComplete.fire();}else{if(this._counter<this._maxCount){this._counter++;if(this._on){this._on=null;this.effect.attributes={opacity:{to:0}}}else{this._on=true;this.effect.attributes={opacity:{to:1}}} +this.effect.animate();}else{this.done=true;this._on=null;this._counter=null;this.effect.attributes={opacity:{to:1}} +this.effect.animate();}}},this,true);if(!delay){this.effect.animate();}} +YAHOO.widget.Effects.Pulse.prototype.animate=function(){this.effect.animate();} +YAHOO.widget.Effects.Pulse.prototype.toString=function(){return'Effect Pulse ['+this.element.id+']';} +YAHOO.widget.Effects.Shrink=function(inElm,opts){this.start_elm=YAHOO.util.Dom.get(inElm);this.element=this.start_elm.cloneNode(true);this.start_elm.parentNode.replaceChild(this.element,this.start_elm);YAHOO.widget.Effects.Hide(this.start_elm);YAHOO.util.Dom.setStyle(this.element,'overflow','hidden');this.onEffectComplete=new YAHOO.util.CustomEvent('oneffectcomplete',this);var ease=((opts&&opts.ease)?opts.ease:YAHOO.util.Easing.easeOut);var secs=((opts&&opts.seconds)?opts.seconds:1);var delay=((opts&&opts.delay)?opts.delay:false);var attributes={width:{to:0},height:{to:0},fontSize:{from:100,to:0,unit:'%'},opacity:{from:1,to:0}};this.effect=new YAHOO.util.Anim(this.element,attributes,secs,ease);this.effect.onComplete.subscribe(function(){this.element.parentNode.replaceChild(this.start_elm,this.element);this.onEffectComplete.fire();},this,true);if(!delay){this.effect.animate();}} +YAHOO.widget.Effects.Shrink.prototype.animate=function(){this.effect.animate();} +YAHOO.widget.Effects.Shrink.prototype.toString=function(){return'Effect Shrink ['+this.element.id+']';} +YAHOO.widget.Effects.Grow=function(inElm,opts){this.element=YAHOO.util.Dom.get(inElm);var h=parseInt($T.getHeight(this.element));var w=parseInt(YAHOO.util.Dom.getStyle(this.element,'width'));YAHOO.util.Dom.setStyle(this.element,'overflow','hidden');this.onEffectComplete=new YAHOO.util.CustomEvent('oneffectcomplete',this);var ease=((opts&&opts.ease)?opts.ease:YAHOO.util.Easing.easeOut);var secs=((opts&&opts.seconds)?opts.seconds:1);var delay=((opts&&opts.delay)?opts.delay:false);var attributes={width:{to:w,from:0},height:{to:h,from:0},fontSize:{from:0,to:100,unit:'%'},opacity:{from:0,to:1}};this.effect=new YAHOO.util.Anim(this.element,attributes,secs,ease);this.effect.onComplete.subscribe(function(){this.onEffectComplete.fire();},this,true);if(!delay){this.animate();}} +YAHOO.widget.Effects.Grow.prototype.animate=function(){this.effect.animate();} +YAHOO.widget.Effects.Grow.prototype.toString=function(){return'Effect Grow ['+this.element.id+']';} +YAHOO.widget.Effects.TV=function(inElm,opts){var ease=((opts&&opts.ease)?opts.ease:YAHOO.util.Easing.easeIn);var secs=((opts&&opts.seconds)?opts.seconds:1);var delay=((opts&&opts.delay)?opts.delay:false);this.element=YAHOO.util.Dom.get(inElm);this.done=false;this._height=parseInt($T.getHeight(this.element));this._width=parseInt(YAHOO.util.Dom.getStyle(this.element,'width'));YAHOO.util.Dom.setStyle(this.element,'overflow','hidden');var attributes={top:{from:0,to:(this._height/2)},height:{to:5}};this.onEffectComplete=new YAHOO.util.CustomEvent('oneffectcomplete',this);this.effect=new YAHOO.util.Anim(this.element,attributes,secs,ease);this.effect.onComplete.subscribe(function(){if(this.done){this.onEffectComplete.fire();YAHOO.widget.Effects.Hide(this.element);YAHOO.util.Dom.setStyle(this.element,'height',this._height+'px');YAHOO.util.Dom.setStyle(this.element,'width',this._width+'px');YAHOO.util.Dom.setStyle(this.element,'top','');YAHOO.util.Dom.setStyle(this.element,'left','');YAHOO.util.Dom.setStyle(this.element,'opacity','1');}else{this.done=true;this.effect.attributes={top:{from:(this._height/2),to:(this._height/2)},left:{from:0,to:(this._width/2)},height:{from:5,to:5},width:{to:5},opacity:{from:1,to:0}};this.effect.animate();}},this,true);if(!delay){this.animate();}} +YAHOO.widget.Effects.TV.prototype.animate=function(){this.effect.animate();} +YAHOO.widget.Effects.TV.prototype.toString=function(){return'Effect TV ['+this.element.id+']';} +YAHOO.widget.Effects.Shadow=function(inElm,opts){var delay=((opts&&opts.delay)?opts.delay:false);var topOffset=((opts&&opts.top)?opts.top:8);var leftOffset=((opts&&opts.left)?opts.left:8);var shadowColor=((opts&&opts.color)?opts.color:'#ccc');var shadowOpacity=((opts&&opts.opacity)?opts.opacity:.75);this.element=YAHOO.util.Dom.get(inElm);if(YAHOO.util.Dom.get(this.element.id+'_shadow')){this.shadow=YAHOO.util.Dom.get(this.element.id+'_shadow');}else{this.shadow=document.createElement('div');this.shadow.id=this.element.id+'_shadow';this.element.parentNode.appendChild(this.shadow);} +var h=parseInt($T.getHeight(this.element));var w=parseInt(YAHOO.util.Dom.getStyle(this.element,'width'));var z=this.element.style.zIndex;if(!z){z=1;this.element.style.zIndex=z;} +YAHOO.util.Dom.setStyle(this.element,'overflow','hidden');YAHOO.util.Dom.setStyle(this.shadow,'height',h+'px');YAHOO.util.Dom.setStyle(this.shadow,'width',w+'px');YAHOO.util.Dom.setStyle(this.shadow,'background-color',shadowColor);YAHOO.util.Dom.setStyle(this.shadow,'opacity',0);YAHOO.util.Dom.setStyle(this.shadow,'position','absolute');this.shadow.style.zIndex=(z-1);var xy=YAHOO.util.Dom.getXY(this.element);this.onEffectComplete=new YAHOO.util.CustomEvent('oneffectcomplete',this);var attributes={opacity:{from:0,to:shadowOpacity},top:{from:xy[1],to:(xy[1]+topOffset)},left:{from:xy[0],to:(xy[0]+leftOffset)}};this.effect=new YAHOO.util.Anim(this.shadow,attributes);this.effect.onComplete.subscribe(function(){this.onEffectComplete.fire();},this,true);if(!delay){this.animate();}} +YAHOO.widget.Effects.Shadow.prototype.animate=function(){this.effect.animate();} +YAHOO.widget.Effects.Shadow.prototype.toString=function(){return'Effect Shadow ['+this.element.id+']';} +YAHOO.widget.Effects.Puff=function(inElm,opts){var start_elm=YAHOO.util.Dom.get(inElm);this.element=start_this.element.cloneNode(true);start_this.element.parentNode.replaceChild(this.element,start_elm);YAHOO.widget.Effects.Hide(start_elm);var xy=YAHOO.util.Dom.getXY(this.element);var h=parseInt($T.getHeight(this.element));var w=parseInt(YAHOO.util.Dom.getStyle(this.element,'width'));var nh=((h/2)+h);var nw=((w/2)+w);var nto=((nh-h)/2);var nlo=((nw-w)/2);var nt=xy[1]-nto;var nl=xy[0]-nlo;YAHOO.util.Dom.setStyle(this.element,'position','absolute');var attributes={top:{to:nt},left:{to:nl},width:{to:nw},height:{to:nh},opacity:{from:1,to:0}};var ease=((opts&&opts.ease)?opts.ease:YAHOO.util.Easing.easeOut);var secs=((opts&&opts.seconds)?opts.seconds:1);var puff=new YAHOO.util.Anim(this.element,attributes,secs,ease);puff.onComplete.subscribe(function(){this.element=this.getEl();this.element.parentNode.replaceChild(start_elm,elm);});puff.animate();return puff;} +if(!YAHOO.Tools){$T={getHeight:function(el){return YAHOO.util.Dom.getStyle(el,'height');}}} +YAHOO.widget.Effects.Batch=function(effects,opts){} +YAHOO.widget.Effects.ContainerEffect=function(){} +YAHOO.widget.Effects.ContainerEffect.BlindUpDownBinded=function(overlay,dur){var bupdownbinded=new YAHOO.widget.ContainerEffect(overlay,{attributes:{effect:'BlindUp',opts:{bind:'bottom'}},duration:dur},{attributes:{effect:'BlindDown',opts:{bind:'bottom'}},duration:dur},overlay.element,YAHOO.widget.Effects.Container);bupdownbinded.init();return bupdownbinded;} +YAHOO.widget.Effects.ContainerEffect.BlindUpDown=function(overlay,dur){var bupdown=new YAHOO.widget.ContainerEffect(overlay,{attributes:{effect:'BlindDown'},duration:dur},{attributes:{effect:'BlindUp'},duration:dur},overlay.element,YAHOO.widget.Effects.Container);bupdown.init();return bupdown;} +YAHOO.widget.Effects.ContainerEffect.BlindLeftRightBinded=function(overlay,dur){var bleftrightbinded=new YAHOO.widget.ContainerEffect(overlay,{attributes:{effect:'BlindLeft',opts:{bind:'right'}},duration:dur},{attributes:{effect:'BlindRight',opts:{bind:'right'}},duration:dur},overlay.element,YAHOO.widget.Effects.Container);bleftrightbinded.init();return bleftrightbinded;} +YAHOO.widget.Effects.ContainerEffect.BlindLeftRight=function(overlay,dur){var bleftright=new YAHOO.widget.ContainerEffect(overlay,{attributes:{effect:'BlindRight'},duration:dur},{attributes:{effect:'BlindLeft'},duration:dur},overlay.element,YAHOO.widget.Effects.Container);bleftright.init();return bleftright;} +YAHOO.widget.Effects.ContainerEffect.BlindRightFold=function(overlay,dur){var brightfold=new YAHOO.widget.ContainerEffect(overlay,{attributes:{effect:'BlindRight'},duration:dur},{attributes:{effect:'Fold'},duration:dur},overlay.element,YAHOO.widget.Effects.Container);brightfold.init();return brightfold;} +YAHOO.widget.Effects.ContainerEffect.BlindLeftFold=function(overlay,dur){var bleftfold=new YAHOO.widget.ContainerEffect(overlay,{attributes:{effect:'BlindLeft',opts:{bind:'right'}},duration:dur},{attributes:{effect:'Fold'},duration:dur},overlay.element,YAHOO.widget.Effects.Container);bleftfold.init();return bleftfold;} +YAHOO.widget.Effects.ContainerEffect.UnFoldFold=function(overlay,dur){var bunfold=new YAHOO.widget.ContainerEffect(overlay,{attributes:{effect:'UnFold'},duration:dur},{attributes:{effect:'Fold'},duration:dur},overlay.element,YAHOO.widget.Effects.Container);bunfold.init();return bunfold;} +YAHOO.widget.Effects.ContainerEffect.BlindDownDrop=function(overlay,dur){var bdowndrop=new YAHOO.widget.ContainerEffect(overlay,{attributes:{effect:'BlindDown'},duration:dur},{attributes:{effect:'Drop'},duration:dur},overlay.element,YAHOO.widget.Effects.Container);bdowndrop.init();return bdowndrop;} +YAHOO.widget.Effects.ContainerEffect.BlindUpDrop=function(overlay,dur){var bupdrop=new YAHOO.widget.ContainerEffect(overlay,{attributes:{effect:'BlindUp',opts:{bind:'bottom'}},duration:dur},{attributes:{effect:'Drop'},duration:dur},overlay.element,YAHOO.widget.Effects.Container);bupdrop.init();return bupdrop;} +YAHOO.widget.Effects.ContainerEffect.BlindUpDownBindedGhost=function(overlay,dur){var bupdownbinded=new YAHOO.widget.ContainerEffect(overlay,{attributes:{effect:'BlindUp',opts:{ghost:true,bind:'bottom'}},duration:dur},{attributes:{effect:'BlindDown',opts:{ghost:true,bind:'bottom'}},duration:dur},overlay.element,YAHOO.widget.Effects.Container);bupdownbinded.init();return bupdownbinded;} +YAHOO.widget.Effects.ContainerEffect.BlindUpDownGhost=function(overlay,dur){var bupdown=new YAHOO.widget.ContainerEffect(overlay,{attributes:{effect:'BlindDown',opts:{ghost:true}},duration:dur},{attributes:{effect:'BlindUp',opts:{ghost:true}},duration:dur},overlay.element,YAHOO.widget.Effects.Container);bupdown.init();return bupdown;} +YAHOO.widget.Effects.ContainerEffect.BlindLeftRightBindedGhost=function(overlay,dur){var bleftrightbinded=new YAHOO.widget.ContainerEffect(overlay,{attributes:{effect:'BlindLeft',opts:{bind:'right',ghost:true}},duration:dur},{attributes:{effect:'BlindRight',opts:{bind:'right',ghost:true}},duration:dur},overlay.element,YAHOO.widget.Effects.Container);bleftrightbinded.init();return bleftrightbinded;} +YAHOO.widget.Effects.ContainerEffect.BlindLeftRightGhost=function(overlay,dur){var bleftright=new YAHOO.widget.ContainerEffect(overlay,{attributes:{effect:'BlindRight',opts:{ghost:true}},duration:dur},{attributes:{effect:'BlindLeft',opts:{ghost:true}},duration:dur},overlay.element,YAHOO.widget.Effects.Container);bleftright.init();return bleftright;} +YAHOO.widget.Effects.ContainerEffect.BlindRightFoldGhost=function(overlay,dur){var brightfold=new YAHOO.widget.ContainerEffect(overlay,{attributes:{effect:'BlindRight',opts:{ghost:true}},duration:dur},{attributes:{effect:'Fold',opts:{ghost:true}},duration:dur},overlay.element,YAHOO.widget.Effects.Container);brightfold.init();return brightfold;} +YAHOO.widget.Effects.ContainerEffect.BlindLeftFoldGhost=function(overlay,dur){var bleftfold=new YAHOO.widget.ContainerEffect(overlay,{attributes:{effect:'BlindLeft',opts:{bind:'right',ghost:true}},duration:dur},{attributes:{effect:'Fold',opts:{ghost:true}},duration:dur},overlay.element,YAHOO.widget.Effects.Container);bleftfold.init();return bleftfold;} +YAHOO.widget.Effects.ContainerEffect.UnFoldFoldGhost=function(overlay,dur){var bleftfold=new YAHOO.widget.ContainerEffect(overlay,{attributes:{effect:'UnFold',opts:{ghost:true}},duration:dur},{attributes:{effect:'Fold',opts:{ghost:true}},duration:dur},overlay.element,YAHOO.widget.Effects.Container);bleftfold.init();return bleftfold;} +YAHOO.widget.Effects.ContainerEffect.BlindDownDropGhost=function(overlay,dur){var bdowndrop=new YAHOO.widget.ContainerEffect(overlay,{attributes:{effect:'BlindDown',opts:{ghost:true}},duration:dur},{attributes:{effect:'Drop'},duration:dur},overlay.element,YAHOO.widget.Effects.Container);bdowndrop.init();return bdowndrop;} +YAHOO.widget.Effects.ContainerEffect.BlindUpDropGhost=function(overlay,dur){var bupdrop=new YAHOO.widget.ContainerEffect(overlay,{attributes:{effect:'BlindUp',opts:{bind:'bottom',ghost:true}},duration:dur},{attributes:{effect:'Drop'},duration:dur},overlay.element,YAHOO.widget.Effects.Container);bupdrop.init();return bupdrop;} +YAHOO.widget.Effects.Container=function(el,attrs,dur){var opts={delay:true};if(attrs.opts){for(var i in attrs.opts){opts[i]=attrs.opts[i];}} +var func=eval('YAHOO.widget.Effects.'+attrs.effect);var eff=new func(el,opts);eff.onStart=eff.effect.onStart;eff.onTween=eff.effect.onTween;eff.onComplete=eff.onEffectComplete;return eff;} Added: trunk/javascript/effects.js =================================================================== --- trunk/javascript/effects.js (rev 0) +++ trunk/javascript/effects.js 2008-08-27 15:06:00 UTC (rev 647) @@ -0,0 +1,1804 @@ +/* +* Copyright (c) 2007, Dav Glass <dav...@ya...>. +* Code licensed under the BSD License: +* http://blog.davglass.com/license.txt +* All rights reserved. +*/ +/** +* @fileoverview Provides the YUI with several built-in effect combinations. +* @author Dav Glass <dav...@ya...> +* @version 0.8 +* @class Provides the YUI with several built-in effect combinations. +* @requires YAHOO.util.Dom +* @requires YAHOO.util.Anim +* @requires YAHOO.Tools +* @class Provides the YUI with several built-in effect combinations.<br> +* All effects now support a Custom Event called onEffectComplete.<br> +* They all now support a new option called delay. If delay is set to true the effect will not immediately execute.<br> +* You can then call eff.animate(); to animate it later. This way you can delay the execution & bind an onEffectComplete subscriber<br> +* Then animate the effect. +* @constructor +*/ +YAHOO.widget.Effects = function() { + return { + version: '0.8' + } +}(); + +/** +* This effect makes the object dissappear with display none. +* @param {String/HTMLElement} inElm HTML element to apply the effect to +* @constructor +*/ +YAHOO.widget.Effects.Hide = function(inElm) { + this.element = YAHOO.util.Dom.get(inElm); + + YAHOO.util.Dom.setStyle(this.element, 'display', 'none'); + YAHOO.util.Dom.setStyle(this.element, 'visibility', 'hidden'); +} +/** +* String function for reporting to YUI Logger +*/ +YAHOO.widget.Effects.Hide.prototype.toString = function() { + return 'Effect Hide [' + this.element.id + ']'; +} +/** +* This effect makes the object Appear with display block. +* @param {String/HTMLElement} inElm HTML element to apply the effect to +* @constructor +*/ +YAHOO.widget.Effects.Show = function(inElm) { + this.element = YAHOO.util.Dom.get(inElm); + + YAHOO.util.Dom.setStyle(this.element, 'display', 'block'); + YAHOO.util.Dom.setStyle(this.element, 'visibility', 'visible'); +} +/** +* String function for reporting to YUI Logger +*/ +YAHOO.widget.Effects.Show.prototype.toString = function() { + return 'Effect Show [' + this.element.id + ']'; +} +/** +* @constructor +* This effect makes the object fade & disappear. +* @param {String/HTMLElement} inElm HTML element to apply the effect to +* @param {Object} options Pass in an object of options for this effect, you can choose the Easing and the Duration +* <code> <br>var options = (<br> +* ease: YAHOO.util.Easing.easeOut,<br> +* seconds: 1<br> +* delay: true (Delays execution)<br> +* )</code> +* @return Effect Object (Acess anmiation object via this.effect) +* @type Object +*/ +YAHOO.widget.Effects.Fade = function(inElm, opts) { + this.element = YAHOO.util.Dom.get(inElm); + + var attributes = { + opacity: { from: 1, to: 0 } + }; + /** + * Custom Event fired after the effect completes + * @type Object + */ + this.onEffectComplete = new YAHOO.util.CustomEvent('oneffectcomplete', this); + + var ease = ((opts && opts.ease) ? opts.ease : YAHOO.util.Easing.easeOut); + var secs = ((opts && opts.seconds) ? opts.seconds : 1); + var delay = ((opts && opts.delay) ? opts.delay : false); + + /** + * YUI Animation Object + * @type Object + */ + this.effect = new YAHOO.util.Anim(this.element, attributes, secs, ease); + this.effect.onComplete.subscribe(function() { + YAHOO.widget.Effects.Hide(this.element); + this.onEffectComplete.fire(); + }, this, true); + if (!delay) { + this.effect.animate(); + } +} +/** +* Fires off the embedded Animation. +*/ +YAHOO.widget.Effects.Fade.prototype.animate = function() { + this.effect.animate(); +} +/** +* String function for reporting to YUI Logger +*/ +YAHOO.widget.Effects.Fade.prototype.toString = function() { + return 'Effect Fade [' + this.element.id + ']'; +} +/** +* @constructor +* This effect makes the object fade & appear. +* @param {String/HTMLElement} inElm HTML element to apply the effect to +* @param {Object} options Pass in an object of options for this effect, you can choose the Easing and the Duration +* <code> <br>var options = (<br> +* ease: YAHOO.util.Easing.easeOut,<br> +* seconds: 3<br> +* delay: true (Delays execution)<br> +* )</code> +* @return Effect Object (Acess anmiation object via this.effect) +* @type Object +*/ +YAHOO.widget.Effects.Appear = function(inElm, opts) { + this.element = YAHOO.util.Dom.get(inElm); + + YAHOO.util.Dom.setStyle(this.element, 'opacity', '0'); + YAHOO.widget.Effects.Show(this.element); + var attributes = { + opacity: { from: 0, to: 1 } + }; + /** + * Custom Event fired after the effect completes + * @type Object + */ + this.onEffectComplete = new YAHOO.util.CustomEvent('oneffectcomplete', this); + + var ease = ((opts && opts.ease) ? opts.ease : YAHOO.util.Easing.easeOut); + var secs = ((opts && opts.seconds) ? opts.seconds : 3); + var delay = ((opts && opts.delay) ? opts.delay : false); + + /** + * YUI Animation Object + * @type Object + */ + this.effect = new YAHOO.util.Anim(this.element, attributes, secs, ease); + this.effect.onComplete.subscribe(function() { + this.onEffectComplete.fire(); + }, this, true); + if (!delay) { + this.effect.animate(); + } +} +/** +* Fires off the embedded Animation. +*/ +YAHOO.widget.Effects.Appear.prototype.animate = function() { + this.effect.animate(); +} +/** +* String function for reporting to YUI Logger +*/ +YAHOO.widget.Effects.Appear.prototype.toString = function() { + return 'Effect Appear [' + this.element.id + ']'; +} +/** +* @constructor +* This effect makes the object act like a window blind and retract. +* @param {String/HTMLElement} inElm HTML element to apply the effect to +* @param {Object} options Pass in an object of options for this effect, you can choose the Easing and the Duration +* <code> <br>var options = (<br> +* ease: YAHOO.util.Easing.easeOut,<br> +* seconds: 1<br> +* delay: true (Delays execution)<br> +* bind: (string) bottom<br> +* ghost: (boolean)<br> +* )</code><br> +* Setting the bind option will make the element "blind up/rise" from the bottom. +* @return Effect Object (Acess anmiation object via this.effect) +* @type Object +*/ +YAHOO.widget.Effects.BlindUp = function(inElm, opts) { + var ease = ((opts && opts.ease) ? opts.ease : YAHOO.util.Easing.easeOut); + var secs = ((opts && opts.seconds) ? opts.seconds : 1); + var delay = ((opts && opts.delay) ? opts.delay : false); + var ghost = ((opts && opts.ghost) ? opts.ghost : false); + + this.element = YAHOO.util.Dom.get(inElm); + this._height = $T.getHeight(this.element); + this._top = parseInt($D.getStyle(this.element, 'top')); + + this._opts = opts; + + YAHOO.util.Dom.setStyle(this.element, 'overflow', 'hidden'); + var attributes = { + height: { to: 0 } + }; + if (ghost) { + attributes.opacity = { + to : 0, + from: 1 + } + } + + /** + * Custom Event fired after the effect completes + * @type Object + */ + this.onEffectComplete = new YAHOO.util.CustomEvent('oneffectcomplete', this); + + + if (opts && opts.bind && (opts.bind == 'bottom')) { + var attributes = { + height: { from: 0, to: parseInt(this._height)}, + top: { from: (this._top + parseInt(this._height)), to: this._top } + }; + if (ghost) { + attributes.opacity = { + to : 1, + from: 0 + } + } + } + + /** + * YUI Animation Object + * @type Object + */ + this.effect = new YAHOO.util.Anim(this.element, attributes, secs, ease); + this.effect.onComplete.subscribe(function() { + if (this._opts && this._opts.bind && (this._opts.bind == 'bottom')) { + YAHOO.util.Dom.setStyle(this.element, 'top', this._top + 'px'); + } else { + YAHOO.widget.Effects.Hide(this.element); + YAHOO.util.Dom.setStyle(this.element, 'height', this._height); + } + YAHOO.util.Dom.setStyle(this.element, 'opacity', 1); + this.onEffectComplete.fire(); + }, this, true); + if (!delay) { + this.animate(); + } +} +/** +* Preps the style of the element before running the Animation. +*/ +YAHOO.widget.Effects.BlindUp.prototype.prepStyle = function() { + if (this._opts && this._opts.bind && (this._opts.bind == 'bottom')) { + YAHOO.util.Dom.setStyle(this.element, 'height', '0px'); + YAHOO.util.Dom.setStyle(this.element, 'top', this._height); + } + YAHOO.widget.Effects.Show(this.element); +} +/** +* Fires off the embedded Animation. +*/ +YAHOO.widget.Effects.BlindUp.prototype.animate = function() { + this.prepStyle(); + this.effect.animate(); +} +/** +* String function for reporting to YUI Logger +*/ +YAHOO.widget.Effects.BlindUp.prototype.toString = function() { + return 'Effect BlindUp [' + this.element.id + ']'; +} +/** +* @constructor +* This effect makes the object act like a window blind opening. +* @param {String/HTMLElement} inElm HTML element to apply the effect to +* @param {Object} options Pass in an object of options for this effect, you can choose the Easing and the Duration +* <code> <br>var options = (<br> +* ease: YAHOO.util.Easing.easeOut,<br> +* seconds: 1<br> +* delay: true (Delays execution)<br> +* bind: (string) bottom<br> +* ghost: (boolean)<br> +* )</code><br> +* Setting the bind option will make the element "blind down" from top to bottom. +* @return Effect Object (Acess anmiation object via this.effect) +* @type Object +*/ +YAHOO.widget.Effects.BlindDown = function(inElm, opts) { + var ease = ((opts && opts.ease) ? opts.ease : YAHOO.util.Easing.easeOut); + var secs = ((opts && opts.seconds) ? opts.seconds : 1); + var delay = ((opts && opts.delay) ? opts.delay : false); + var ghost = ((opts && opts.ghost) ? opts.ghost : false); + + this.element = YAHOO.util.Dom.get(inElm); + + this._opts = opts; + this._height = parseInt($T.getHeight(this.element)); + this._top = parseInt(YAHOO.util.Dom.getStyle(this.element, 'top')); + + YAHOO.util.Dom.setStyle(this.element, 'overflow', 'hidden'); + var attributes = { + height: { from: 0, to: this._height } + }; + if (ghost) { + attributes.opacity = { + to : 1, + from: 0 + } + } + /** + * Custom Event fired after the effect completes + * @type Object + */ + this.onEffectComplete = new YAHOO.util.CustomEvent('oneffectcomplete', this); + + + if (opts && opts.bind && (opts.bind == 'bottom')) { + var attributes = { + height: { to: 0, from: parseInt(this._height)}, + top: { to: (this._top + parseInt(this._height)), from: this._top } + }; + if (ghost) { + attributes.opacity = { + to : 0, + from: 1 + } + } + } + + /** + * YUI Animation Object + * @type Object + */ + this.effect = new YAHOO.util.Anim(this.element, attributes, secs, ease); + if (opts && opts.bind && (opts.bind == 'bottom')) { + this.effect.onComplete.subscribe(function() { + YAHOO.widget.Effects.Hide(this.element); + YAHOO.util.Dom.setStyle(this.element, 'top', this._top + 'px'); + YAHOO.util.Dom.setStyle(this.element, 'height', this._height + 'px'); + YAHOO.util.Dom.setStyle(this.element, 'opacity', 1); + this.onEffectComplete.fire(); + }, this, true); + } else { + this.effect.onComplete.subscribe(function() { + YAHOO.util.Dom.setStyle(this.element, 'opacity', 1); + this.onEffectComplete.fire(); + }, this, true); + } + if (!delay) { + this.animate(); + } +} +/** +* Preps the style of the element before running the Animation. +*/ +YAHOO.widget.Effects.BlindDown.prototype.prepStyle = function() { + if (this._opts && this._opts.bind && (this._opts.bind == 'bottom')) { + } else { + YAHOO.util.Dom.setStyle(this.element, 'height', '0px'); + } + YAHOO.widget.Effects.Show(this.element); +} +/** +* Fires off the embedded Animation. +*/ +YAHOO.widget.Effects.BlindDown.prototype.animate = function() { + this.prepStyle(); + this.effect.animate(); +} +/** +* String function for reporting to YUI Logger +*/ +YAHOO.widget.Effects.BlindDown.prototype.toString = function() { + return 'Effect BlindDown [' + this.element.id + ']'; +} +/** +* @constructor +* This effect makes the object slide open from the right. +* @param {String/HTMLElement} inElm HTML element to apply the effect to +* @param {Object} options Pass in an object of options for this effect, you can choose the Easing and the Duration +* <code> <br>var options = (<br> +* ease: YAHOO.util.Easing.easeOut,<br> +* seconds: 1<br> +* delay: true (Delays execution)<br> +* bind: (string) right<br> +* ghost: (boolean)<br> +* )</code><br> +* Setting the bind option will make the element "blind right" from right to left (it will be attached to the right side). +* @return Effect Object (Acess anmiation object via this.effect) +* @type Object +*/ +YAHOO.widget.Effects.BlindRight = function(inElm, opts) { + var ease = ((opts && opts.ease) ? opts.ease : YAHOO.util.Easing.easeOut); + var secs = ((opts && opts.seconds) ? opts.seconds : 1); + var delay = ((opts && opts.delay) ? opts.delay : false); + var ghost = ((opts && opts.ghost) ? opts.ghost : false); + this.element = YAHOO.util.Dom.get(inElm); + + this._width = parseInt(YAHOO.util.Dom.getStyle(this.element, 'width')); + this._left = parseInt(YAHOO.util.Dom.getStyle(this.element, 'left')); + this._opts = opts; + + YAHOO.util.Dom.setStyle(this.element, 'overflow', 'hidden'); + /** + * Custom Event fired after the effect completes + * @type Object + */ + this.onEffectComplete = new YAHOO.util.CustomEvent('oneffectcomplete', this); + + var attributes = { + width: { from: 0, to: this._width } + }; + if (ghost) { + attributes.opacity = { + to : 1, + from: 0 + } + } + + if (opts && opts.bind && (opts.bind == 'right')) { + var attributes = { + width: { to: 0 }, + /*left: { from: parseInt, to: this._width }*/ + left: { to: this._left + parseInt(this._width), from: this._left } + }; + if (ghost) { + attributes.opacity = { + to : 0, + from: 1 + } + } + } + /** + * YUI Animation Object + * @type Object + */ + this.effect = new YAHOO.util.Anim(this.element, attributes, secs, ease); + if (opts && opts.bind && (opts.bind == 'right')) { + this.effect.onComplete.subscribe(function() { + YAHOO.widget.Effects.Hide(this.element); + YAHOO.util.Dom.setStyle(this.element, 'width', this._width + 'px'); + YAHOO.util.Dom.setStyle(this.element, 'left', this._left + 'px'); + this._width = null; + YAHOO.util.Dom.setStyle(this.element, 'opacity', 1); + this.onEffectComplete.fire(); + }, this, true); + } else { + this.effect.onComplete.subscribe(function() { + YAHOO.util.Dom.setStyle(this.element, 'opacity', 1); + this.onEffectComplete.fire(); + }, this, true); + } + if (!delay) { + this.animate(); + } +} +/** +* Preps the style of the element before running the Animation. +*/ +YAHOO.widget.Effects.BlindRight.prototype.prepStyle = function() { + if (this._opts && this._opts.bind && (this._opts.bind == 'right')) { + } else { + YAHOO.util.Dom.setStyle(this.element, 'width', '0'); + } +} +/** +* Fires off the embedded Animation. +*/ +YAHOO.widget.Effects.BlindRight.prototype.animate = function() { + this.prepStyle(); + this.effect.animate(); +} +/** +* String function for reporting to YUI Logger +*/ +YAHOO.widget.Effects.BlindRight.prototype.toString = function() { + return 'Effect BlindRight [' + this.element.id + ']'; +} +/** +* @constructor +* This effect makes the object slide closed from the left. +* @param {String/HTMLElement} inElm HTML element to apply the effect to +* @param {Object} options Pass in an object of options for this effect, you can choose the Easing and the Duration +* <code> <br>var options = (<br> +* ease: YAHOO.util.Easing.easeOut,<br> +* seconds: 1<br> +* delay: true (Delays execution)<br> +* bind: (string) right<br> +* ghost: (boolean)<br> +* )</code><br> +* Setting the bind option will make the element "blind left" from left to right (it will be attached to the right side). +* @return Effect Object (Acess anmiation object via this.effect) +* @type Object +*/ +YAHOO.widget.Effects.BlindLeft = function(inElm, opts) { + var ease = ((opts && opts.ease) ? opts.ease : YAHOO.util.Easing.easeOut); + var secs = ((opts && opts.seconds) ? opts.seconds : 1); + var delay = ((opts && opts.delay) ? opts.delay : false); + var ghost = ((opts && opts.ghost) ? opts.ghost : false); + this.ghost = ghost; + + this.element = YAHOO.util.Dom.get(inElm); + this._width = YAHOO.util.Dom.getStyle(this.element, 'width'); + this._left = parseInt(YAHOO.util.Dom.getStyle(this.element, 'left')); + + + this._opts = opts; + YAHOO.util.Dom.setStyle(this.element, 'overflow', 'hidden'); + var attributes = { + width: { to: 0 } + }; + if (ghost) { + attributes.opacity = { + to : 0, + from: 1 + } + } + + /** + * Custom Event fired after the effect completes + * @type Object + */ + this.onEffectComplete = new YAHOO.util.CustomEvent('oneffectcomplete', this); + + + if (opts && opts.bind && (opts.bind == 'right')) { + var attributes = { + width: { from: 0, to: parseInt(this._width) }, + left: { from: this._left + parseInt(this._width), to: this._left } + }; + if (ghost) { + attributes.opacity = { + to : 1, + from: 0 + } + } + } + + /** + * YUI Animation Object + * @type Object + */ + this.effect = new YAHOO.util.Anim(this.element, attributes, secs, ease); + if (opts && opts.bind && (opts.bind == 'right')) { + this.effect.onComplete.subscribe(function() { + this.onEffectComplete.fire(); + }, this, true); + } else { + this.effect.onComplete.subscribe(function() { + YAHOO.widget.Effects.Hide(this.element); + YAHOO.util.Dom.setStyle(this.element, 'width', this._width); + YAHOO.util.Dom.setStyle(this.element, 'left', this._left + 'px'); + YAHOO.util.Dom.setStyle(this.element, 'opacity', 1); + this._width = null; + this.onEffectComplete.fire(); + }, this, true); + } + if (!delay) { + this.animate(); + } +} +/** +* Preps the style of the element before running the Animation. +*/ +YAHOO.widget.Effects.BlindLeft.prototype.prepStyle = function() { + if (this._opts && this._opts.bind && (this._opts.bind == 'right')) { + YAHOO.widget.Effects.Hide(this.element); + YAHOO.util.Dom.setStyle(this.element, 'width', '0px'); + YAHOO.util.Dom.setStyle(this.element, 'left', parseInt(this._width)); + if (this.ghost) { + YAHOO.util.Dom.setStyle(this.element, 'opacity', 0); + } + YAHOO.widget.Effects.Show(this.element); + } +} +/** +* Fires off the embedded Animation. +*/ +YAHOO.widget.Effects.BlindLeft.prototype.animate = function() { + this.prepStyle(); + this.effect.animate(); +} +/** +* String function for reporting to YUI Logger +*/ +YAHOO.widget.Effects.BlindLeft.prototype.toString = function() { + return 'Effect BlindLeft [' + this.element.id + ']'; +} +/** +* @constructor +* This effect makes the object appear to fold up. +* @param {String/HTMLElement} inElm HTML element to apply the effect to +* @param {Object} options Pass in an object of options for this effect, you can choose the Easing and the Duration +* <code> <br>var options = (<br> +* ease: YAHOO.util.Easing.easeOut,<br> +* seconds: 1,<br> +* to: 5,<br> +* delay: true (Delays execution),<br> +* ghost: (boolean)<br> +* )</code> +* @return Effect Object (Acess anmiation object via this.effect) +* @type Object +*/ +YAHOO.widget.Effects.Fold = function(inElm, opts) { + var ease = ((opts && opts.ease) ? opts.ease : YAHOO.util.Easing.easeOut); + var secs = ((opts && opts.seconds) ? opts.seconds : 1); + var delay = ((opts && opts.delay) ? opts.delay : false); + this.ghost = ((opts && opts.ghost) ? opts.ghost : false); + + this.element = YAHOO.util.Dom.get(inElm); + + this._to = 5; + if (!delay) { + YAHOO.widget.Effects.Show(this.element); + } + YAHOO.util.Dom.setStyle(this.element, 'overflow', 'hidden'); + + this.done = false; + + this._height = parseInt($T.getHeight(this.element)); + + this._width = YAHOO.util.Dom.getStyle(this.element, 'width'); + + /** + * Custom Event fired after the effect completes + * @type Object + */ + this.onEffectComplete = new YAHOO.util.CustomEvent('oneffectcomplete', this); + + if (opts && opts.to) { + this._to = opts.to; + } + + var attributes = { + height: { to: this._to } + }; + + /** + * YUI Animation Object + * @type Object + */ + this.effect = new YAHOO.util.Anim(this.element, attributes, secs, ease); + this.effect.onComplete.subscribe(function() { + if (this.done) { + YAHOO.widget.Effects.Hide(this.element); + YAHOO.util.Dom.setStyle(this.element, 'height', this._height + 'px'); + YAHOO.util.Dom.setStyle(this.element, 'width', this._width); + this.onEffectComplete.fire(); + } else { + this.done = true; + this.effect.attributes = { width: { to: 0 }, height: { from: this._to, to: this._to } } + if (this.ghost) { + this.effect.attributes.opacity = { + to : 0, from: 1 + } + } + this.animate(); + } + }, this, true); + if (!delay) { + this.animate(); + } +} +/** +* Fires off the embedded Animation. +*/ +YAHOO.widget.Effects.Fold.prototype.animate = function() { + this.effect.animate(); +} +/** +* String function for reporting to YUI Logger +*/ +YAHOO.widget.Effects.Fold.prototype.toString = function() { + return 'Effect Fold [' + this.element.id + ']'; +} +/** +* @constructor +* This effect makes the object appear to fold out (opposite of Fold). +* @param {String/HTMLElement} inElm HTML element to apply the effect to +* @param {Object} options Pass in an object of options for this effect, you can choose the Easing and the Duration +* <code> <br>var options = (<br> +* ease: YAHOO.util.Easing.easeOut,<br> +* seconds: 1,<br> +* to: 5,<br> +* delay: true (Delays execution),<br> +* ghost: (boolean)<br> +* )</code> +* @return Effect Object (Acess anmiation object via this.effect) +* @type Object +*/ +YAHOO.widget.Effects.UnFold = function(inElm, opts) { + var ease = ((opts && opts.ease) ? opts.ease : YAHOO.util.Easing.easeOut); + var secs = ((opts && opts.seconds) ? opts.seconds : 1); + var delay = ((opts && opts.delay) ? opts.delay : false); + this.ghost = ((opts && opts.ghost) ? opts.ghost : false); + + this.element = YAHOO.util.Dom.get(inElm); + this._height = $T.getHeight(this.element); + this._width = YAHOO.util.Dom.getStyle(this.element, 'width'); + + this._to = 5; + YAHOO.util.Dom.setStyle(this.element, 'overflow', 'hidden'); + + + this.done = false; + + /** + * Custom Event fired after the effect completes + * @type Object + */ + this.onEffectComplete = new YAHOO.util.CustomEvent('oneffectcomplete', this); + + if (opts && opts.to) { + this._to = opts.to; + } + + attributes = { + height: { from: 0, to: this._to }, + width: { from: 0, to: parseInt(this._width) } + }; + if (this.ghost) { + attributes.opacity = { + to : .15, from: 0 + } + } + + /** + * YUI Animation Object + * @type Object + */ + this.effect = new YAHOO.util.Anim(this.element, attributes, secs, ease); + this.effect.onComplete.subscribe(function() { + if (this.done) { + this.onEffectComplete.fire(); + this.done = false; + } else { + this.done = true; + this.effect.attributes = { width: { from: parseInt(this._width), to: parseInt(this._width) }, height: { from: this._to, to: parseInt(this._height) } } + if (this.ghost) { + this.effect.attributes.opacity = { + to : 1, from: .15 + } + } + this.effect.animate(); + } + }, this, true); + if (!delay) { + this.animate(); + } +} +/** +* Preps the style of the element before running the Animation. +*/ +YAHOO.widget.Effects.UnFold.prototype.prepStyle = function() { + YAHOO.widget.Effects.Hide(this.element); + YAHOO.util.Dom.setStyle(this.element, 'height', '0px'); + YAHOO.util.Dom.setStyle(this.element, 'width', '0px'); + this.effect.attributes = attributes; +} +/** +* Fires off the embedded Animation. +*/ +YAHOO.widget.Effects.UnFold.prototype.animate = function() { + this.prepStyle(); + YAHOO.widget.Effects.Show(this.element); + this.effect.animate(); +} +/** +* String function for reporting to YUI Logger +*/ +YAHOO.widget.Effects.UnFold.prototype.toString = function() { + return 'Effect UnFold [' + this.element.id + ']'; +} + + +/** +* @constructor +* This effect makes the object shake from Right to Left. +* @param {String/HTMLElement} inElm HTML element to apply the effect to +* @param {Object} options Pass in an object of options for this effect, you can choose the Easing and the Duration +* <code> <br>var options = (<br> +* ease: YAHOO.util.Easing.easeOut,<br> +* seconds: .25,<br> +* delay: true (Delays execution)<br> +* offset: 10,<br> +* maxcount: 5<br> +* )</code> +* @return Effect Object (Acess anmiation object via this.effect) +* @type Object +*/ +YAHOO.widget.Effects.ShakeLR = function(inElm, opts) { + this.element = YAHOO.util.Dom.get(inElm); + + this._offSet = 10; + this._maxCount = 5; + this._counter = 0; + this._elmPos = YAHOO.util.Dom.getXY(this.element); + var attributes = { + left: { to: ( - this._offSet) } + }; + + /** + * Custom Event fired after the effect completes + * @type Object + */ + this.onEffectComplete = new YAHOO.util.CustomEvent('oneffectcomplete', this); + + if (opts && opts.offset) { + this._offSet = opts.offset; + } + if (opts && opts.maxcount) { + this._maxCount = opts.maxcount; + } + + var ease = ((opts && opts.ease) ? opts.ease : YAHOO.util.Easing.easeOut); + var secs = ((opts && opts.seconds) ? opts.seconds : .25); + var delay = ((opts && opts.delay) ? opts.delay : false); + + /** + * YUI Animation Object + * @type Object + */ + this.effect = new YAHOO.util.Anim(this.element, attributes, secs, ease); + this.effect.onComplete.subscribe(function() { + if (this.done) { + this.onEffectComplete.fire(); + } else { + if (this._counter < this._maxCount) { + this._counter++; + if (this._left) { + this._left = null; + this.effect.attributes = { left: { to: ( - this._offSet) } } + } else { + this._left = true; + this.effect.attributes = { left: { to: this._offSet } } + } + this.effect.animate(); + } else { + this.done = true; + this._left = null; + this._counter = null; + this.effect.attributes = { left: { to: 0 } } + this.effect.animate(); + } + } + }, this, true); + if (!delay) { + this.effect.animate(); + } +} +/** +* Fires off the embedded Animation. +*/ +YAHOO.widget.Effects.ShakeLR.prototype.animate = function() { + this.effect.animate(); +} +/** +* String function for reporting to YUI Logger +*/ +YAHOO.widget.Effects.ShakeLR.prototype.toString = function() { + return 'Effect ShakeLR [' + this.element.id + ']'; +} +/** +* @constructor +* This effect makes the object shake from Top to Bottom. +* @param {String/HTMLElement} inElm HTML element to apply the effect to +* @param {Object} options Pass in an object of options for this effect, you can choose the Easing and the Duration +* <code> <br>var options = (<br> +* ease: YAHOO.util.Ea... [truncated message content] |
From: <al...@us...> - 2008-08-27 17:12:25
|
Revision: 652 http://sciret.svn.sourceforge.net/sciret/?rev=652&view=rev Author: alpeb Date: 2008-08-27 17:12:22 +0000 (Wed, 27 Aug 2008) Log Message: ----------- moved the Submit Question and Manage Questions buttons to the top Modified Paths: -------------- trunk/templates/footer.tpl trunk/templates/header.tpl trunk/views/MainView.php trunk/views/View.php Modified: trunk/templates/footer.tpl =================================================================== --- trunk/templates/footer.tpl 2008-08-27 16:33:21 UTC (rev 651) +++ trunk/templates/footer.tpl 2008-08-27 17:12:22 UTC (rev 652) @@ -114,10 +114,6 @@ </li> <!-- END unansweredQuestionsItem_block --> </ul> - <span class="button_green"><a href="{addQuestionHref}">[l]Submit Question[/l]</a></span><br /> - <!-- BEGIN manageQuestionsLink_block --> - <span class="button_green"><a href="{manageQuestionsHref}">[l]Manage Questions[/l]</a></span> - <!-- END manageQuestionsLink_block --> </div> <div class="panel_bottom"></div> <!-- END unansweredQuestions_block --> Modified: trunk/templates/header.tpl =================================================================== --- trunk/templates/header.tpl 2008-08-27 16:33:21 UTC (rev 651) +++ trunk/templates/header.tpl 2008-08-27 17:12:22 UTC (rev 652) @@ -27,6 +27,12 @@ <span class="button_green"><a href="index.php?action=Logout">[l]Logout[/l]</a></span> <!-- END logoutLink_block --> </p> + <p> + <span class="button_light"><a href="{addQuestionHref}">[l]Submit Question[/l]</a></span> + <!-- BEGIN manageQuestionsLink_block --> + <span class="button_light"><a href="{manageQuestionsHref}">[l]Manage Questions[/l]</a></span> + <!-- END manageQuestionsLink_block --> + </p> </div> </div><!--end head--> Modified: trunk/views/MainView.php =================================================================== --- trunk/views/MainView.php 2008-08-27 16:33:21 UTC (rev 651) +++ trunk/views/MainView.php 2008-08-27 17:12:22 UTC (rev 652) @@ -56,14 +56,6 @@ $this->tpl->set_block('unansweredQuestionsItem_block', 'answerLink_block', 'answerLink'); - $this->tpl->set_block('unansweredQuestions_block', 'manageQuestionsLink_block', 'manageQuestionsLink'); - if (!$this->user->isAnonymous()) { - $this->tpl->set_var('manageQuestionsHref', Library::getLink(array('view' => 'ManageQuestions'))); - $this->tpl->parse('manageQuestionsLink', 'manageQuestionsLink_block'); - } else { - $this->tpl->set_var('manageQuestionsLink', ''); - } - if (!isset($_GET['sort'])) { $_GET['sort'] = 'created_desc'; } @@ -73,7 +65,6 @@ 'viewAllLink' => Library::getLink(array('view' => 'MainView', 'set' => 'all')), 'viewArticlesLink' => Library::getLink(array('view' => 'MainView', 'set' => 'articles')), 'viewBookmarksLink' => Library::getLink(array('view' => 'MainView', 'set' => 'bookmarks')), - 'addQuestionHref' => Library::getLink(array('view' => 'AddQuestion')), 'sortByDateLink' => Library::getLink(array('view' => 'MainView', 'sort' => 'created_'.($order == 'created' && $direction == 'desc'? 'asc' : 'desc'))), 'sortByViewsLink' => Library::getLink(array('view' => 'MainView', 'sort' => 'views_'.($order == 'views' && $direction == 'desc'? 'asc' : 'desc'))), )); Modified: trunk/views/View.php =================================================================== --- trunk/views/View.php 2008-08-27 16:33:21 UTC (rev 651) +++ trunk/views/View.php 2008-08-27 17:12:22 UTC (rev 652) @@ -72,13 +72,20 @@ $this->tpl->set_block('header', 'loginLink_block', 'loginLink'); $this->tpl->set_block('header', 'welcome_block', 'welcome'); + $this->tpl->set_block('header', 'manageQuestionsLink_block', 'manageQuestionsLink'); + if ($this->user->isAnonymous()) { $this->tpl->set_var('welcome', ''); $this->tpl->parse('loginLink', 'loginLink_block'); + + $this->tpl->set_var('manageQuestionsLink', ''); } else { $this->tpl->set_var('loginLink', ''); $this->tpl->set_var('userFullName', $this->user->getFullName()); $this->tpl->parse('welcome', 'welcome_block'); + + $this->tpl->set_var('manageQuestionsHref', Library::getLink(array('view' => 'ManageQuestions'))); + $this->tpl->parse('manageQuestionsLink', 'manageQuestionsLink_block'); } $this->tpl->set_block('header', 'logoutLink_block', 'logoutLink'); @@ -91,6 +98,7 @@ $this->tpl->set_var(array( 'homeHref' => Library::getLink(), 'preferencesHref' => Library::getLink(array('view' => 'EditPreferences')), + 'addQuestionHref' => Library::getLink(array('view' => 'AddQuestion')), )); $this->tpl->set_block('header', 'addArticleLink_block', 'addArticleLink'); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <al...@us...> - 2008-08-27 19:41:23
|
Revision: 653 http://sciret.svn.sourceforge.net/sciret/?rev=653&view=rev Author: alpeb Date: 2008-08-27 19:41:20 +0000 (Wed, 27 Aug 2008) Log Message: ----------- Ability to set in the config the cookie holding the session id. This way you can easily share the session with another app, or decide to keep things separated Modified Paths: -------------- trunk/config.ini.php.template trunk/index.php Modified: trunk/config.ini.php.template =================================================================== --- trunk/config.ini.php.template 2008-08-27 17:12:22 UTC (rev 652) +++ trunk/config.ini.php.template 2008-08-27 19:41:20 UTC (rev 653) @@ -3,6 +3,7 @@ return array ( 'environment' => array ( + 'session_name' => 'SCIRET', 'production' => false, 'loglevel' => 0, ), Modified: trunk/index.php =================================================================== --- trunk/index.php 2008-08-27 17:12:22 UTC (rev 652) +++ trunk/index.php 2008-08-27 19:41:20 UTC (rev 653) @@ -89,6 +89,9 @@ $_GET['view'] = 'NotInstalled'; } +// ZF still doesn't have facilities for this +session_name($config->environment->session_name); + Zend_Session::start(); $auth = Zend_Auth::getInstance(); if ($auth->hasIdentity()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <al...@us...> - 2008-08-28 20:45:07
|
Revision: 656 http://sciret.svn.sourceforge.net/sciret/?rev=656&view=rev Author: alpeb Date: 2008-08-28 20:45:04 +0000 (Thu, 28 Aug 2008) Log Message: ----------- put border on normal textareas, except on the YUI RTE one Modified Paths: -------------- trunk/others.css trunk/templates/EditArticle.tpl Modified: trunk/others.css =================================================================== --- trunk/others.css 2008-08-27 23:23:05 UTC (rev 655) +++ trunk/others.css 2008-08-28 20:45:04 UTC (rev 656) @@ -1,5 +1,5 @@ textarea { - border: 0; + border: 1; margin: 0; padding: 0; } Modified: trunk/templates/EditArticle.tpl =================================================================== --- trunk/templates/EditArticle.tpl 2008-08-27 23:23:05 UTC (rev 655) +++ trunk/templates/EditArticle.tpl 2008-08-28 20:45:04 UTC (rev 656) @@ -94,7 +94,7 @@ <tr> <td colspan="2"> - <textarea name="text_content" id="text_content" style="width: 100%; height:350px; margin:0;">{textareaContent}</textarea> + <textarea name="text_content" id="text_content" style="width: 100%; height:350px; margin:0; border:0">{textareaContent}</textarea> <script> // can't make editor bigger, or else problem under IE SCIRET.editor.init('100%','350px', 'text_content'); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <al...@us...> - 2008-08-28 20:52:17
|
Revision: 660 http://sciret.svn.sourceforge.net/sciret/?rev=660&view=rev Author: alpeb Date: 2008-08-28 20:52:12 +0000 (Thu, 28 Aug 2008) Log Message: ----------- implemented Zend_Db_Table and Zend_Db_Table_Row classes for the user and user gateway classes. Also some coding standards changes Modified Paths: -------------- trunk/actions/CompleteTodo.php trunk/actions/DeleteArticle.php trunk/actions/DeleteTodo.php trunk/actions/DeleteUser.php trunk/actions/EditUser.php trunk/actions/Login.php trunk/actions/Logout.php trunk/actions/MarkArticle.php trunk/actions/MarkLocation.php trunk/actions/MarkSearchResults.php trunk/actions/SaveArticle.php trunk/actions/SaveBookmark.php trunk/actions/SaveTodo.php trunk/actions/Upgrade.php trunk/classes/Controller.php trunk/index.php trunk/models/Article.php trunk/models/User.php trunk/templates/EditBookmark.tpl trunk/views/EditArticle.php trunk/views/EditPreferences.php trunk/views/EditTodo.php trunk/views/EditUser.php trunk/views/GetFavoritesDropdown.php trunk/views/GetTodosDropdown.php trunk/views/MainView.php trunk/views/ManageArticles.php trunk/views/ManageUsers.php trunk/views/SearchResults.php trunk/views/View.php trunk/views/ViewArticle.php trunk/views/ViewBookmark.php Added Paths: ----------- trunk/models/Users.php Removed Paths: ------------- trunk/models/UserGateway.php Modified: trunk/actions/CompleteTodo.php =================================================================== --- trunk/actions/CompleteTodo.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/actions/CompleteTodo.php 2008-08-28 20:52:12 UTC (rev 660) @@ -16,7 +16,7 @@ function dispatch() { $todo = new Todo($_POST['todoId']); - if ($todo->getUserId() != $this->user->getId()) { + if ($todo->getUserId() != $this->user->id) { echo 'FAILURE|' . $this->user->lang('Cannot complete other people\'s todo\'s'); exit; } Modified: trunk/actions/DeleteArticle.php =================================================================== --- trunk/actions/DeleteArticle.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/actions/DeleteArticle.php 2008-08-28 20:52:12 UTC (rev 660) @@ -9,18 +9,17 @@ * @packager Keyboard Monkeys */ -require 'actions/Action.php'; -require 'models/ArticleGateway.php'; +class DeleteArticle extends Action +{ -class DeleteArticle extends Action { - - function dispatch() { + function dispatch() + { $artId = isset($_GET['id'])? (int)$_GET['id'] : 0; if ($this->configuration->getConfigValue('restrictEditDelete')) { $article = new Article($artId); - if ($article->getUserId() != $this->user->getId() && ($this->user->getRole() & User::ROLE_ADMIN) != User::ROLE_ADMIN) { + if ($article->getUserId() != $this->user->id && ($this->user->role & User::ROLE_ADMIN) != User::ROLE_ADMIN) { $_SESSION['message'] = $this->user->lang('Sorry, only the author or an admin can delete this article.'); Library::redirect(Library::getLink(array('view' => 'ViewArticle', 'id' => $artId))); } @@ -38,4 +37,3 @@ } } -?> Modified: trunk/actions/DeleteTodo.php =================================================================== --- trunk/actions/DeleteTodo.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/actions/DeleteTodo.php 2008-08-28 20:52:12 UTC (rev 660) @@ -16,7 +16,7 @@ function dispatch() { $todoGateway = new TodoGateway; - if ($todoGateway->deleteTodo($_POST['todoId'], $this->user->getId())) { + if ($todoGateway->deleteTodo($_POST['todoId'], $this->user->id)) { echo 'OK'; } else { echo 'FAILURE'; Modified: trunk/actions/DeleteUser.php =================================================================== --- trunk/actions/DeleteUser.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/actions/DeleteUser.php 2008-08-28 20:52:12 UTC (rev 660) @@ -9,11 +9,8 @@ * @packager Keyboard Monkeys */ -require 'actions/Action.php'; -require_once 'models/UserGateway.php'; - -class DeleteUser extends Action { - +class DeleteUser extends Action +{ function dispatch() { $userId = isset($_GET['userId'])? (int)$_GET['userId'] : 0; @@ -21,12 +18,10 @@ die($this->user->lang('You can\'t delete the main administrator user.')); } - $userGateway = new UserGateway; - $userGateway->deleteUser($userId); + $users = new Users(); + $users->deleteUser($userId); $_SESSION['message'] = $this->user->lang('User deleted successfully'); Library::redirect(Library::getLink(array('view' => 'ManageUsers'))); } } - -?> Modified: trunk/actions/EditUser.php =================================================================== --- trunk/actions/EditUser.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/actions/EditUser.php 2008-08-28 20:52:12 UTC (rev 660) @@ -9,23 +9,22 @@ * @packager Keyboard Monkeys */ -require 'actions/Action.php'; -require_once 'models/User.php'; +class EditUser extends Action +{ -class EditUser extends Action { - - function dispatch() { - + function dispatch() + { // security check - if (!$this->user->isAdmin() && $this->user->getId() != $_POST['userId']) { + if (!$this->user->isAdmin() && $this->user->id != $_POST['userId']) { $_SESSION['message'] = $this->user->lang('What are you trying to do??'); Library::redirect(Library::getLink(array('view' => 'Login'))); } $userId = (int)$_POST['userId']; - $user = new User($userId); + $users = new Users(); - if (!$user->getId()) { + if (!$userId) { + $user = $users->createRow(); $missingFieldsArr = array(); if ($_POST['firstName'] == '') { $missingFieldsArr[] = $this->user->lang('First Name'); @@ -70,6 +69,7 @@ } } else { + $user = $users->getRowInstance($userId); if ( $user->isPasswordExpired($this->configuration->getConfigValue('passwordExpirationDays')) @@ -77,26 +77,26 @@ ) { $_SESSION['message'] = $this->user->lang('Your password has expired. Please change it below.'); - Library::redirect(Library::getLink(array('view' => 'EditUser', 'userId' => $user->getId()))); + Library::redirect(Library::getLink(array('view' => 'EditUser', 'userId' => $user->id))); } if ($_POST['password'] != $_POST['password2']) { $_SESSION['message'] = $this->user->lang('Password and Repeat Password fields don\'t match'); - Library::redirect(Library::getLink(array('view' => 'EditUser', 'userId' => $user->getId()))); - } elseif (!$user->changePassword($_POST['password'])) { + Library::redirect(Library::getLink(array('view' => 'EditUser', 'userId' => $user->id))); + } elseif ($_POST['password'] != '' && !$user->changePassword($_POST['password'])) { $_SESSION['message'] = $this->user->lang('Invalid password. Please don\'t use any of these characters: %s', implode(', ', $user->getDisallowedPasswordChars())); - Library::redirect(Library::getLink(array('view' => 'EditUser', 'userId' => $user->getId()))); + Library::redirect(Library::getLink(array('view' => 'EditUser', 'userId' => $user->id))); } } - $user->setFirstName($_POST['firstName']); - $user->setLastName($_POST['lastName']); - $user->setUserName($_POST['userName']); - $user->setEmail($_POST['email']); + $user->firstname = $_POST['firstName']; + $user->lastname = $_POST['lastName']; + $user->username = $_POST['userName']; + $user->email = $_POST['email']; $user->setAdmin($this->user->isAdmin() && isset($_POST['adminAccess'])); $user->save(); - if (!$user->getId()) { + if (!$user->id) { $_SESSION['message'] = $this->user->lang('User added successfully'); } else { $_SESSION['message'] = $this->user->lang('User edited successfully'); @@ -105,9 +105,7 @@ if ($this->user->isAdmin()) { Library::redirect(Library::getLink(array('view' => 'ManageUsers'))); } else { - Library::redirect(Library::getLink(array('view' => 'EditUser', 'userId' => $user->getId()))); + Library::redirect(Library::getLink(array('view' => 'EditUser', 'userId' => $user->id))); } } } - -?> Modified: trunk/actions/Login.php =================================================================== --- trunk/actions/Login.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/actions/Login.php 2008-08-28 20:52:12 UTC (rev 660) @@ -9,9 +9,10 @@ * @packager Keyboard Monkeys */ -class Login extends Action { - - function dispatch() { +class Login extends Action +{ + function dispatch() + { $auth = Zend_Auth::getInstance(); $db = Zend_Db::factory(Zend_Registry::get('config')->database); $authAdapter = new Zend_Auth_Adapter_DbTable($db, 'users', 'username', 'password', 'MD5(?)'); @@ -19,7 +20,8 @@ ->setCredential($_POST['password']); $result = $auth->authenticate($authAdapter); if ($result->isValid()) { - $user = UserGateway::getValidatedUser($_POST['username'], $_POST['password'], $this->configuration); + $users = new Users(); + $user = $users->getUserGivenUsername($_POST['username']); $auth->getStorage()->write($user); } else { $_SESSION['message'] = $this->user->lang('Wrong Username or Password'); @@ -28,11 +30,9 @@ if ($user->isPasswordExpired($this->configuration->getConfigValue('passwordExpirationDays'))) { $_SESSION['message'] = $this->user->lang('Your password has expired. Please change it below.'); - Library::redirect(Library::getLink(array('view' => 'EditUser', 'userId' => $user->getId()))); + Library::redirect(Library::getLink(array('view' => 'EditUser', 'userId' => $user->id))); } Library::redirect(Library::getLink(array('view' => 'MainView'))); } } - -?> Modified: trunk/actions/Logout.php =================================================================== --- trunk/actions/Logout.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/actions/Logout.php 2008-08-28 20:52:12 UTC (rev 660) @@ -11,12 +11,11 @@ require 'actions/Action.php'; -class Logout extends Action { - - function dispatch() { +class Logout extends Action +{ + function dispatch() + { Zend_Auth::getInstance()->clearIdentity(); Library::Redirect(Library::getLink(array('view' => 'MainView'))); } } - -?> Modified: trunk/actions/MarkArticle.php =================================================================== --- trunk/actions/MarkArticle.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/actions/MarkArticle.php 2008-08-28 20:52:12 UTC (rev 660) @@ -18,20 +18,20 @@ $favoriteGateway = new FavoriteGateway; if ($_POST['favorite'] == 1) { - if ($favoriteGateway->isArticleFavorite($_POST['artId'], $this->user->getId())) { + if ($favoriteGateway->isArticleFavorite($_POST['artId'], $this->user->id)) { echo 'DUPLICATE|foo'; return; } $favorite = new Favorite; - $favorite->setUserId($this->user->getId()); + $favorite->setUserId($this->user->id); $favorite->setType(FAVORITE_TYPE_ARTICLE); $favorite->setArtId($_POST['artId']); $favorite->save(); echo 'FAVORITE OK|' . $this->user->lang('Article has been added to favorites successfully');; } else { - $favoriteGateway->deleteArticleFavorite($_POST['artId'], $this->user->getId()); + $favoriteGateway->deleteArticleFavorite($_POST['artId'], $this->user->id); echo 'UNFAVORITE OK|' . $this->user->lang('Article has been removed from favorites successfully');; } Modified: trunk/actions/MarkLocation.php =================================================================== --- trunk/actions/MarkLocation.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/actions/MarkLocation.php 2008-08-28 20:52:12 UTC (rev 660) @@ -18,20 +18,20 @@ $favoriteGateway = new FavoriteGateway; if ($_POST['favorite'] == 1) { - if ($favoriteGateway->isLocationFavorite($_POST['catId'], $this->user->getId())) { + if ($favoriteGateway->isLocationFavorite($_POST['catId'], $this->user->id)) { echo 'DUPLICATE|foo'; return; } $favorite = new Favorite; - $favorite->setUserId($this->user->getId()); + $favorite->setUserId($this->user->id); $favorite->setType(FAVORITE_TYPE_LOCATION); $favorite->setCatId($_POST['catId']); $favorite->save(); echo 'FAVORITE OK|' . $this->user->lang('Location has been added to favorites successfully');; } else { - $favoriteGateway->deleteLocationFavorite($_POST['catId'], $this->user->getId()); + $favoriteGateway->deleteLocationFavorite($_POST['catId'], $this->user->id); echo 'UNFAVORITE OK|' . $this->user->lang('Location has been removed from favorites successfully');; } Modified: trunk/actions/MarkSearchResults.php =================================================================== --- trunk/actions/MarkSearchResults.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/actions/MarkSearchResults.php 2008-08-28 20:52:12 UTC (rev 660) @@ -18,20 +18,20 @@ $favoriteGateway = new FavoriteGateway; if ($_POST['favorite'] == 1) { - if ($favoriteGateway->isSearchResultFavorite($_POST['query'], $this->user->getId())) { + if ($favoriteGateway->isSearchResultFavorite($_POST['query'], $this->user->id)) { echo 'DUPLICATE|foo'; return; } $favorite = new Favorite; - $favorite->setUserId($this->user->getId()); + $favorite->setUserId($this->user->id); $favorite->setType(FAVORITE_TYPE_SEARCHRESULT); $favorite->setSearchStr($_POST['query']); $favorite->save(); echo 'FAVORITE OK|' . $this->user->lang('Search has been added to favorites successfully'); } else { - $favoriteGateway->deleteSearchResultFavorite($_POST['query'], $this->user->getId()); + $favoriteGateway->deleteSearchResultFavorite($_POST['query'], $this->user->id); echo 'UNFAVORITE OK|' . $this->user->lang('Search has been removed from favorites successfully'); } Modified: trunk/actions/SaveArticle.php =================================================================== --- trunk/actions/SaveArticle.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/actions/SaveArticle.php 2008-08-28 20:52:12 UTC (rev 660) @@ -20,7 +20,7 @@ if ($articleId > 0 && $this->configuration->getConfigValue('restrictEditDelete')) { $article = new Article($articleId); - if ($article->getUserId() != $this->user->getId() && ($this->user->getRole() & User::ROLE_ADMIN) != User::ROLE_ADMIN) { + if ($article->getUserId() != $this->user->id && ($this->user->role & User::ROLE_ADMIN) != User::ROLE_ADMIN) { $_SESSION['message'] = $this->user->lang('Sorry, only the author or an admin can modify this article.'); Library::redirect(Library::getLink(array('view' => 'ViewArticle', 'id' => $articleId))); } @@ -51,11 +51,11 @@ if ($articleId > 0) { $art->setModificationDate(date('Y-m-d H:i:s')); - $art->setModifiedByUserId($this->user->getId()); + $art->setModifiedByUserId($this->user->id); $historyMessage = $this->user->lang('Article modified'); } else { $art->setPublished($this->configuration->getConfigValue('publishArticlesAuto') == '1'? true : false); - $art->setUserId($this->user->getId()); + $art->setUserId($this->user->id); $historyMessage = $this->user->lang('Article created'); if (isset($_POST['questionID'])) { @@ -74,7 +74,7 @@ require_once 'models/Todo.php'; $todo = new Todo(); - $todo->setUserId($this->user->getId()); + $todo->setUserId($this->user->id); $todo->setTitle($_POST['title']); $todo->setStatus(TODO_STATUS_PENDING); $todo->setPrivate(true); Modified: trunk/actions/SaveBookmark.php =================================================================== --- trunk/actions/SaveBookmark.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/actions/SaveBookmark.php 2008-08-28 20:52:12 UTC (rev 660) @@ -32,12 +32,12 @@ if ($bookmarkId > 0) { $art->setModificationDate(date('Y-m-d H:i:s')); - $art->setModifiedByUserId($this->user->getId()); + $art->setModifiedByUserId($this->user->id); $historyMessage = $this->user->lang('Bookmark modified'); } else { $art->setPublished($this->configuration->getConfigValue('publishBookmarksAuto') == '1'? true : false); $art->setDraft($_POST['draft']); - $art->setUserId($this->user->getId()); + $art->setUserId($this->user->id); $historyMessage = $this->user->lang('Bookmark created'); } $art->save(); @@ -48,7 +48,7 @@ require_once 'models/Todo.php'; $todo = new Todo(); - $todo->setUserId($this->user->getId()); + $todo->setUserId($this->user->id); $todo->setTitle($_POST['name']); $todo->setStatus(TODO_STATUS_PENDING); $todo->setPrivate(true); Modified: trunk/actions/SaveTodo.php =================================================================== --- trunk/actions/SaveTodo.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/actions/SaveTodo.php 2008-08-28 20:52:12 UTC (rev 660) @@ -19,11 +19,11 @@ $todo = new Todo($todoId); - if ($todoId && $todo->getUserId() != $this->user->getId()) { + if ($todoId && $todo->getUserId() != $this->user->id) { die('You don\'t have permission to edit this To-Do'); } - $todo->setUserId($this->user->getId()); + $todo->setUserId($this->user->id); $todo->setTitle($_POST['title']); $todo->setContent($_POST['content']); $todo->setStatus(isset($_POST['completed'])? TODO_STATUS_COMPLETED : TODO_STATUS_PENDING); Modified: trunk/actions/Upgrade.php =================================================================== --- trunk/actions/Upgrade.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/actions/Upgrade.php 2008-08-28 20:52:12 UTC (rev 660) @@ -9,15 +9,13 @@ * @packager Keyboard Monkeys */ -require 'actions/Action.php'; +class Upgrade extends Action +{ + var $users; -class Upgrade extends Action { - var $userGateway; - function dispatch() { - require 'models/UserGateway.php'; - $this->userGateway = new UserGateway; - if (!($user = $this->userGateway->getValidatedUser($_POST['username'], $_POST['password'], $this->configuration)) || !$user->isAdmin()) { + $this->users = new Users(); + if (!($user = $this->users->getValidatedUser($_POST['username'], $_POST['password'], $this->configuration)) || !$user->isAdmin()) { $_SESSION['message'] = $this->user->lang('Wrong Username or Password'); Library::redirect(Library::getLink(array('view' => 'Upgrade'))); } @@ -57,7 +55,7 @@ $queries = file($fileName); foreach ($queries as $query) { if (trim($query) != '') { - $this->userGateway->db->query($query); // unorthodox? + DB::getInstance()->query($query); } } } Modified: trunk/classes/Controller.php =================================================================== --- trunk/classes/Controller.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/classes/Controller.php 2008-08-28 20:52:12 UTC (rev 660) @@ -56,10 +56,10 @@ if ( // user hasn't got enough privileges - (($this->user->getRole() & $this->views[$view][MINIMUM_ROLE]) != $this->views[$view][MINIMUM_ROLE]) + (($this->user->role & $this->views[$view][MINIMUM_ROLE]) != $this->views[$view][MINIMUM_ROLE]) // or user is anonymous and KB is not public - || ($this->user->getRole() == User::ROLE_ANONYMOUS && $this->views[$view][ALLOW_VIEW_ONLY_IF_PUBLIC_KB] && !$this->configuration->getConfigValue('publishKB')) + || ($this->user->role == User::ROLE_ANONYMOUS && $this->views[$view][ALLOW_VIEW_ONLY_IF_PUBLIC_KB] && !$this->configuration->getConfigValue('publishKB')) ) { Library::redirect(Library::getLink(array('view' => 'Login'))); @@ -87,7 +87,7 @@ $this->user->setSkipTranslations(true); } - if (($this->user->getRole() & $this->actions[$action][MINIMUM_ROLE]) != $this->actions[$action][MINIMUM_ROLE]) { + if (($this->user->role & $this->actions[$action][MINIMUM_ROLE]) != $this->actions[$action][MINIMUM_ROLE]) { Library::redirect(Library::getLink(array('view' => 'Login'))); } require "actions/$action.php"; Modified: trunk/index.php =================================================================== --- trunk/index.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/index.php 2008-08-28 20:52:12 UTC (rev 660) @@ -74,6 +74,7 @@ $profiler = new DBProfiler(); $db->setProfiler($profiler); } +Zend_Db_Table_Abstract::setDefaultAdapter($db); $connectionFailed = false; try { $db->getConnection(); @@ -94,18 +95,22 @@ Zend_Session::start(); $auth = Zend_Auth::getInstance(); +$users = new Users(); if ($auth->hasIdentity()) { $user = $auth->getStorage()->read(); $user->init(); if ($user->app == 'monkeys') { $publicId = $user->publicId; - $user = new User($publicId); + $user = $users->getRowInstance($publicId); $user->app = 'sciret'; $auth->getStorage()->write($user); } + + // reactivate row as live data + $user->setTable($users); } else { // guest user - $user = new User(); + $user = $users->createRow(); } Zend_Registry::set('user', $user); Modified: trunk/models/Article.php =================================================================== --- trunk/models/Article.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/models/Article.php 2008-08-28 20:52:12 UTC (rev 660) @@ -9,7 +9,8 @@ * @packager Keyboard Monkeys Ltd */ -class Article { +class Article +{ var $id; var $isBookmark = 0; var $questionId; @@ -285,14 +286,16 @@ function getCreatedBy() { require_once 'models/User.php'; - $creator = new User($this->userId); + $users = new Users(); + $creator = $users->getRowInstance($this->userId); return $creator->getFullName(); } function getModifiedBy() { require_once 'models/User.php'; - $modifier = new User($this->modifiedByUserId); + $users = new Users(); + $modifier = $users->getRowInstance($this->modifiedByUserId); return $modifier->getFullName(); } @@ -307,7 +310,8 @@ function getUser() { if (!isset($this->user)) { - $this->user = new User($this->getUserId()); + $users = new Users(); + $this->user = $users->getRowInstance($this->getUserId()); } return $this->user; Modified: trunk/models/User.php =================================================================== --- trunk/models/User.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/models/User.php 2008-08-28 20:52:12 UTC (rev 660) @@ -9,7 +9,8 @@ * @packager Keyboard Monkeys */ -class User { +class User extends Zend_Db_Table_Row_Abstract +{ const ROLE_ANONYMOUS = 1; const ROLE_REGISTERED = 3; // 2 | ROLE_ANONYMOUS; const ROLE_ADMIN = 7; // 4 | ROLE_REGISTERED ; @@ -20,158 +21,100 @@ public $app = 'sciret'; public $publicId; - var $id; - var $firstName; - var $lastName; - var $userName; - var $email; - var $password; - var $passwordChanged; - var $admin = 0; - var $role = User::ROLE_ANONYMOUS; var $langArr; var $skipTranslations = false; - var $preferences = array( - 'startBrowsing' => 'all', - 'articlesPerPage' => 10, - 'dateFormat' => 'Month Day, Year', - 'language' => '', // set in the constructor - 'navigationType' => 'catAndSubCats', - 'hiddenCategories' => '', - ); var $rtlLanguages = array('Hebrew'); var $disallowedPasswordChars = array('"', '@', '#', '%', '^', '&', '*', '(', ')', ','); - function User($id = false) { + private $_preferencesArr; - $this->preferences['language'] = Zend_Registry::get('config')->general->language_default; - - if ($id) { - $query = 'SELECT firstname, lastname, username, email, password, password_changed, admin, preferences FROM users WHERE id = ?'; - $result = DB::getInstance()->query($query, $id); - if ($row = $result->fetch()) { - $this->id = $id; - $this->firstName = $row['firstname']; - $this->lastName = $row['lastname']; - $this->userName = $row['username']; - $this->email = $row['email']; - $this->admin = $row['admin']; - $this->password = $row['password']; - $this->passwordChanged = $row['password_changed']; - if ($row['preferences'] != '') { - // this leaves the default values if preference is not set - $tPreferences = unserialize($row['preferences']); - foreach ($tPreferences as $key => $value) { - $this->preferences[$key] = $value; - } - } - - $this->setRole(); - } - } - - $this->init(); - } - - public function init() { + public function init() + { if ($this->id) { $this->publicId = $this->id; } - } - function save() { - $db = DB::getInstance(); - if (!isset($this->id)) { - $query = 'INSERT INTO users SET firstname=?, lastname=?, username=?, email=?, admin=?, password=MD5(?), password_changed=?, preferences=?'; - $result = $db->query($query, array($this->firstName, $this->lastName, $this->userName, $this->email, $this->admin, $this->password, $this->passwordChanged, serialize($this->preferences))); - $this->id = $db->lastInsertId(); - } else { - $query = 'UPDATE users SET firstname=?, lastname=?, username=?, email=?, password_changed=?, admin=?, preferences=? WHERE id=?'; - $result = $db->query($query, array($this->firstName, $this->lastName, $this->userName, $this->email, $this->passwordChanged, $this->admin, serialize($this->preferences), $this->id)); + if ($this->preferences) { + // this has to go here because when the object has been fetched from the DB, + // when init() is called it already has the fields filled in. + // It has to go under __set() below too, because when the object is initialized through + // createRow(), then when init() is called the fields haven't been initialized yet :/ + $this->_initPreferencesArr($this->preferences); } } - function getFirstName() { - return $this->firstName; + private function _initPreferencesArr($preferences) + { + $this->_preferencesArr = unserialize($preferences); + if ($this->_preferencesArr['language'] == '') { + $this->_preferencesArr['language'] = Zend_Registry::get('config')->general->language_default; + } } - function setFirstName($firstName) { - $this->firstName = $firstName; + public function __get($name) + { + if ($name == 'role') { + return $this->getRole(); + } + + return parent::__get($name); } - function getLastName() { - return $this->lastName; - } + public function __set($name, $value) + { + if ($name == 'preferences') { + $this->_initpreferencesArr($value); + } - function setLastName($lastName) { - $this->lastName = $lastName; + return parent::__set($name, $value); } - function getFullName() { - return $this->firstName . ' ' . $this->lastName; + public function save() + { + $this->preferences = serialize($this->_preferencesArr); + parent::save(); } - function getId() { - return $this->id; + function getFullName() + { + return $this->firstname . ' ' . $this->lastname; } - function setId($id) { + function setId($id) + { $this->publicId = (int)$id; $this->id = (int)$id; } - function isAnonymous() { - return !isset($this->id); + function isAnonymous() + { + return !($this->id); } - function getPasswordChanged() { - return $this->passwordChanged; + function isAdmin() + { + return $this->admin == 1; } - function setPasswordChanged($date) { - $this->passwordChanged = $date; + function setAdmin($isAdmin) + { + $this->admin = $isAdmin? 1 : 0; } - function isAdmin() { - return $this->admin == 1; - } + function getRole() + { + if ($this->isAnonymous()) { + return self::ROLE_ANONYMOUS; + } - function setAdmin($isAdmin) { - $this->admin = $isAdmin? 1 : 0; if ($this->admin == 1) { - $this->role = User::ROLE_ADMIN; + return self::ROLE_ADMIN; } - } - function getUserName() { - return $this->userName; + return self::ROLE_REGISTERED; } - function setUserName($userName) { - $this->userName = $userName; - } - - function getEmail() { - return $this->email; - } - - function setEmail($email) { - $this->email = $email; - } - - function getPassword() { - return $this->password; - } - - function setRole() { - $this->role = ($this->admin == 1)? User::ROLE_ADMIN : User::ROLE_REGISTERED; - } - - function getRole() { - return $this->role; - } - function _isPasswordValid($password) { foreach ($this->disallowedPasswordChars as $char) { @@ -183,13 +126,14 @@ return true; } - function setPassword($password) { + function setPassword($password) + { if (!$this->_isPasswordValid($password)) { return false; } - $this->password = $password; - $this->passwordChanged = date('Y-m-d'); + $this->password = md5($password); + $this->password_changed = date('Y-m-d'); return true; } @@ -199,38 +143,36 @@ return $this->rtlLanguages; } - function changePassword($password) { + function changePassword($password) + { // 18.12.2006 NE: Beim setzen des Passworts fehlte eine einschränkung auf den User, // dessen sein Passwort geändert werden sollte if (!$this->_isPasswordValid($password)) { return false; } - $query = 'UPDATE users SET password=MD5(?), password_changed = \''.date('Y-m-d').'\' WHERE `id` = ?'; - DB::getInstance()->query($query, $password, $this->id); - $this->passwordChanged = date('Y-m-d'); + $this->password = md5($password); + $this->password_changed = date('Y-m-d'); return true; } - - function getPreferences() { - return $this->preferences; - } - function getPreference($field) { - if ($this->role == User::ROLE_ANONYMOUS && isset($_COOKIE[$field])) { + function getPreference($field) + { + if ($this->isAnonymous() && isset($_COOKIE[$field])) { return $_COOKIE[$field]; } - return $this->preferences[$field]; + return $this->_preferencesArr[$field]; } - function setPreference($field, $value) { - if ($this->role == User::ROLE_ANONYMOUS) { + function setPreference($field, $value) + { + if ($this->isAnonymous()) { setcookie($field, $value, time() + 60*60*24*90); // cookie expires in 90 days } - $this->preferences[$field] = $value; + $this->_preferencesArr[$field] = $value; } function getDisallowedPasswordChars() @@ -238,7 +180,8 @@ return $this->disallowedPasswordChars; } - function formatDate($date) { + function formatDate($date) + { $timestamp = strtotime($date); switch ($this->getPreference('dateFormat')) { case 'Month Day, Year': @@ -280,11 +223,13 @@ } } - function setSkipTranslations($bool) { + function setSkipTranslations($bool) + { $this->skipTranslations = $bool; } - function lang($phrase, $args = false) { + function lang($phrase, $args = false) + { $phrase = stripslashes($phrase); if (!is_array($args)) { $args = func_get_args(); @@ -337,12 +282,11 @@ return vsprintf($phrase, $args); } - function isPasswordExpired($expirationDays) { + function isPasswordExpired($expirationDays) + { // there are 86400 seconds in one day - $passwordAge = (time() - strtotime($this->passwordChanged)) / 86400; + $passwordAge = (time() - strtotime($this->password_changed)) / 86400; return ($passwordAge > $expirationDays); } } - -?> Deleted: trunk/models/UserGateway.php =================================================================== --- trunk/models/UserGateway.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/models/UserGateway.php 2008-08-28 20:52:12 UTC (rev 660) @@ -1,69 +0,0 @@ -<?php - -/* -* @copyright Copyright (C) 2005-2008 Keyboard Monkeys Ltd. http://www.kb-m.com -* @license http://www.fsf.org/copyleft/lgpl.html GNU Lesser General Public License -* @author Alejandro Pedraza -* @since Sciret 1.2 -* @package Sciret -* @packager Keyboard Monkeys -*/ - -require_once 'models/User.php'; - -class UserGateway { - - public static function getValidatedUser($username, $password, $configuration) { - if (in_array($configuration->getConfigValue('version'), array(0, '1.1.0'))) { - $query = 'SELECT id, firstname, lastname, username, email, admin FROM users WHERE username=? AND password=MD5(?)'; - } else { - $query = 'SELECT id, firstname, lastname, username, email, password_changed, admin FROM users WHERE username=? AND password=MD5(?)'; - } - $result = DB::getInstance()->query($query, array($username, $password)); - if ($row = $result->fetch()) { - $user = new User; - $user->setId($row['id']); - $user->setFirstName($row['firstname']); - $user->setLastName($row['lastname']); - $user->setUserName($row['username']); - $user->setEmail($row['email']); - if (!in_array($configuration->getConfigValue('version'), array(0, '1.1.0'))) { - $user->setPasswordChanged($row['password_changed']); - } - $user->setAdmin($row['admin']); - $user->setRole(); - - return $user; - } - - return false; - } - - function getUsersList() { - $query = 'SELECT id, firstname, lastname, username, email, admin FROM users'; - $result = DB::getInstance()->query($query); - $users = array(); - while ($row = $result->fetch()) { - $user = new User; - $user->setId($row['id']); - $user->setFirstName($row['firstname']); - $user->setLastName($row['lastname']); - $user->setUserName($row['username']); - $user->setEmail($row['email']); - $user->setAdmin($row['admin']); - $users[] = $user; - } - - return $users; - } - - function deleteUser($userId) { - $query = 'DELETE FROM users WHERE id=?'; - DB::getInstance()->query($query, $userId); - - $query = 'UPDATE articles SET user_id = 1 WHERE user_id=?'; - DB::getInstance()->query($query, $userId); - } -} - -?> Added: trunk/models/Users.php =================================================================== --- trunk/models/Users.php (rev 0) +++ trunk/models/Users.php 2008-08-28 20:52:12 UTC (rev 660) @@ -0,0 +1,49 @@ +<?php + +class Users extends SciretTableGateway +{ + protected $_name = 'users'; + protected $_primary = 'id'; + protected $_rowClass = 'User'; + + public function createRow() + { + $preferences = array( + 'startBrowsing' => 'all', + 'articlesPerPage' => 10, + 'dateFormat' => 'Month Day, Year', + 'language' => '', // set in the constructor + 'navigationType' => 'catAndSubCats', + 'hiddenCategories' => '', + ); + + return parent::createRow(array( + 'password_changed' => '0000-00-00', + 'admin' => 0, + 'preferences' => serialize($preferences), + )); + } + + public function getUserGivenUsername($username) + { + $select = $this->select() + ->where('username=?', $username); + + return $this->fetchRow($select); + } + + function getUsersList() + { + $select = $this->select(); + return $this->fetchAll($select); + } + + function deleteUser($userId) + { + $where = $this->getAdapter()->quoteInto('id=?', $userId); + $this->delete($where); + + $where = $this->getAdapter()->quoteInto('user_id=?', $userId); + $this->getAdapter()->update('articles', array('user_id' => 1), $where); + } +} Modified: trunk/templates/EditBookmark.tpl =================================================================== --- trunk/templates/EditBookmark.tpl 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/templates/EditBookmark.tpl 2008-08-28 20:52:12 UTC (rev 660) @@ -10,87 +10,87 @@ --> <form name="saveArticleForm" method="POST" action="{formAction}"> -<input type="hidden" name="draft" value="0" /> -<table width="100%" border="0" cellspacing="1" cellpadding="3" border="1" style='border:1px solid black'> - <!-- BEGIN bookmark_id_block --> - <tr class="th"> - <input type="hidden" name="bookmarkId" value="{bookmarkId}" /> - <td style="text-align:right; font-weight:bold"> - [l]Bookmark ID[/l]: - </td> - <td> - {bookmarkId} - </td> - </tr> - <!-- END bookmark_id_block --> - <tr class="row_on"> - <td width="10%" style="text-align:right;"> - <span style='font:normal 12px sans-serif; font-weight:bold'>[l]Category[/l]:</span> - </td> - <td width="90%"> - <select name="cat_id"> - <option value="0">[l]None[/l]</option> - <!-- BEGIN categories_block --> - <option value="{category_id}" {catSelected}>{category_label}</option> - <!-- END categories_block --> - </select> - </td> - </tr> - <tr class="row_off"> - <td align=right style="text-align:right"> - <span style='font:normal 12px sans-serif; font-weight:bold'>[l]Name[/l]:</span> - </td> - <td> - <input type="text" size="70" name="name" value="{name}" /> - </td> - </tr> - <tr class="row_on"> - <td align=right style="text-align:right"> - <span style='font:normal 12px sans-serif; font-weight:bold'>[l]URL[/l]:</span> - </td> - <td> - <input type="text" size="70" name="url" value="{url}" /> - </td> - </tr> - <tr class="row_off"> - <td style="text-align:right; font:normal 12px sans-serif; font-weight:bold" nowrap="true"> - [l]Expiration Date[/l]: - </td> - <td> - <input type="hidden" id="hiddenDate" name="expDate" value="{expDate}" /> - <span id="dateShow">{expDateContents}</span> - <img src="images/datepopup.gif" id="expDateButton" style="cursor:pointer" /> - <span id="labelSetDate" style="display:{labelSetExpDateDisplay}">([l]Currently none.<br />Click icon to set one.[/l])</span> - <a id="removeDateLink" href="javascript:void(0);" onclick="removeExpirationDate();" style="display:{removeExpDateLinkDisplay}; font-weight:bold; font-size:10px">[l]Remove expiration date[/l]</a> - </td> - </tr> - <tr class="row_on"> - <td align="right" valign="top" style="text-align:right"> - <span style='font:normal 12px sans-serif; font-weight:bold'>[l]Description[/l]:</span> - </td> - <td> - <textarea name="description" cols="67" rows="5" >{description}</textarea> - </td> - </tr> - <tr class="th"> - <td colspan=2> - - </td> - </tr> - <tr> - <td colspan="2"> - <input type="submit" value="[l]Save[/l]" /> - <b>{publicationNotice}</b> - </td> - </tr> - <!-- BEGIN saveAsDraftButton_block --> - <tr> - <td colspan="2"> - <input type="button" value="[l]Save as Draft[/l]" onclick="saveDraft(form);" /> - </td> - </tr> - <!-- END saveAsDraftButton_block --> -</table> + <input type="hidden" name="draft" value="0" /> + <table width="100%" border="0" cellspacing="1" cellpadding="3" border="1" style='border:1px solid black'> + <!-- BEGIN bookmark_id_block --> + <tr class="th"> + <input type="hidden" name="bookmarkId" value="{bookmarkId}" /> + <td style="text-align:right; font-weight:bold"> + [l]Bookmark ID[/l]: + </td> + <td> + {bookmarkId} + </td> + </tr> + <!-- END bookmark_id_block --> + <tr class="row_on"> + <td width="10%" style="text-align:right;"> + <span style='font:normal 12px sans-serif; font-weight:bold'>[l]Category[/l]:</span> + </td> + <td width="90%"> + <select name="cat_id"> + <option value="0">[l]None[/l]</option> + <!-- BEGIN categories_block --> + <option value="{category_id}" {catSelected}>{category_label}</option> + <!-- END categories_block --> + </select> + </td> + </tr> + <tr class="row_off"> + <td align=right style="text-align:right"> + <span style='font:normal 12px sans-serif; font-weight:bold'>[l]Name[/l]:</span> + </td> + <td> + <input type="text" size="50" name="name" value="{name}" /> + </td> + </tr> + <tr class="row_on"> + <td align=right style="text-align:right"> + <span style='font:normal 12px sans-serif; font-weight:bold'>[l]URL[/l]:</span> + </td> + <td> + <input type="text" size="50" name="url" value="{url}" /> + </td> + </tr> + <tr class="row_off"> + <td style="text-align:right; font:normal 12px sans-serif; font-weight:bold" nowrap="true"> + [l]Expiration Date[/l]: + </td> + <td> + <input type="hidden" id="hiddenDate" name="expDate" value="{expDate}" /> + <span id="dateShow">{expDateContents}</span> + <img src="images/datepopup.gif" id="expDateButton" style="cursor:pointer" /> + <span id="labelSetDate" style="display:{labelSetExpDateDisplay}">([l]Currently none.<br />Click icon to set one.[/l])</span> + <a id="removeDateLink" href="javascript:void(0);" onclick="removeExpirationDate();" style="display:{removeExpDateLinkDisplay}; font-weight:bold; font-size:10px">[l]Remove expiration date[/l]</a> + </td> + </tr> + <tr class="row_on"> + <td align="right" valign="top" style="text-align:right"> + <span style='font:normal 12px sans-serif; font-weight:bold'>[l]Description[/l]:</span> + </td> + <td> + <textarea name="description" cols="67" rows="5" >{description}</textarea> + </td> + </tr> + <tr class="th"> + <td colspan=2> + + </td> + </tr> + <tr> + <td colspan="2"> + <input type="submit" value="[l]Save[/l]" /> + <b>{publicationNotice}</b> + </td> + </tr> + <!-- BEGIN saveAsDraftButton_block --> + <tr> + <td colspan="2"> + <input type="button" value="[l]Save as Draft[/l]" onclick="saveDraft(form);" /> + </td> + </tr> + <!-- END saveAsDraftButton_block --> + </table> </form> <script type="text/javascript"> Calendar.setup( Modified: trunk/views/EditArticle.php =================================================================== --- trunk/views/EditArticle.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/views/EditArticle.php 2008-08-28 20:52:12 UTC (rev 660) @@ -66,9 +66,9 @@ $this->tpl->parse('article_id', 'article_id_block'); - if (($this->user->getRole() & User::ROLE_ADMIN) == User::ROLE_ADMIN) { + if ($this->user->isAdmin()) { $this->tpl->set_var(array( - )); + )); $this->tpl->parse('usage_id','usage_block'); } else { $this->tpl->set_var('usage_id', ''); Modified: trunk/views/EditPreferences.php =================================================================== --- trunk/views/EditPreferences.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/views/EditPreferences.php 2008-08-28 20:52:12 UTC (rev 660) @@ -11,9 +11,10 @@ require 'views/View.php'; -class EditPreferences extends View { - - function dispatch() { +class EditPreferences extends View +{ + function dispatch() + { $this->tpl->set_file('edit_preferences', 'EditPreferences.tpl'); $this->tpl->set_block('edit_preferences', 'languages_block', 'languages'); $this->tpl->set_block('edit_preferences', 'adminPreferences_block', 'adminPreferences'); @@ -92,5 +93,3 @@ $this->tpl->pparse('out', 'edit_preferences'); } } - -?> Modified: trunk/views/EditTodo.php =================================================================== --- trunk/views/EditTodo.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/views/EditTodo.php 2008-08-28 20:52:12 UTC (rev 660) @@ -37,7 +37,7 @@ $todo = new Todo($todoId); - if ($todo->getUserId() != $this->user->getId()) { + if ($todo->getUserId() != $this->user->id) { die('You don\'t have permission to edit this To-Do'); } Modified: trunk/views/EditUser.php =================================================================== --- trunk/views/EditUser.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/views/EditUser.php 2008-08-28 20:52:12 UTC (rev 660) @@ -11,11 +11,12 @@ require 'views/View.php'; -class EditUser extends View { - - function dispatch() { +class EditUser extends View +{ + function dispatch() + { // security check - if (!$this->user->isAdmin() && $this->user->getId() != $_GET['userId']) { + if (!$this->user->isAdmin() && $this->user->id != $_GET['userId']) { echo $this->user->lang('What are you trying to do??'); return; } @@ -26,14 +27,15 @@ $this->tpl->set_block('addUser', 'adminAccess_block', 'adminAccess'); $this->tpl->set_var('formAction', Library::getLink(array('action' => 'EditUser'))); - $user = new User($userId); - if ($user->getId()) { + $users = new Users(); + $user = $users->getRowInstance($userId); + if ($userId) { $this->tpl->set_var(array( - 'userId' => $user->getId(), - 'firstName' => $user->getFirstName(), - 'lastName' => $user->getLastName(), - 'userName' => $user->getUserName(), - 'email' => $user->getEmail(), + 'userId' => $user->id, + 'firstName' => $user->firstname, + 'lastName' => $user->lastname, + 'userName' => $user->username, + 'email' => $user->email, 'password' => '', 'password2' => '', 'checkedAdminAccess' => $user->isAdmin()? 'checked="true" ' : '', @@ -64,5 +66,3 @@ $this->tpl->pparse('out', 'addUser'); } } - -?> Modified: trunk/views/GetFavoritesDropdown.php =================================================================== --- trunk/views/GetFavoritesDropdown.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/views/GetFavoritesDropdown.php 2008-08-28 20:52:12 UTC (rev 660) @@ -10,14 +10,15 @@ */ require 'views/View.php'; -require 'models/FavoriteGateway.php'; define('TITLE_LENGTH', 35); -class GetFavoritesDropdown extends View { +class GetFavoritesDropdown extends View +{ var $categories; - function dispatch() { + function dispatch() + { $this->tpl->set_file('favoritesDropdown', 'FavoritesDropdown.tpl'); $this->tpl->set_block('favoritesDropdown', 'favoritesList_block', 'favoritesList'); $this->tpl->set_block('favoritesList_block', 'favoriteItem_block', 'favoriteItem'); @@ -27,7 +28,7 @@ $favoriteGateway = new FavoriteGateway; $thereAreFavorites = false; $firstIteration = true; - foreach ($favoriteGateway->getFavorites($this->user->getId()) as $favorite) { + foreach ($favoriteGateway->getFavorites($this->user->id) as $favorite) { $thereAreFavorites = true; switch($favorite->getType()) { case FAVORITE_TYPE_ARTICLE: @@ -81,5 +82,3 @@ $this->tpl->pparse('out', 'favoritesDropdown'); } } - -?> Modified: trunk/views/GetTodosDropdown.php =================================================================== --- trunk/views/GetTodosDropdown.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/views/GetTodosDropdown.php 2008-08-28 20:52:12 UTC (rev 660) @@ -10,12 +10,13 @@ */ require 'views/View.php'; -require 'models/TodoGateway.php'; -class GetTodosDropdown extends View { +class GetTodosDropdown extends View +{ var $categories; - function dispatch() { + function dispatch() + { $this->tpl->set_file('todosDropdown', 'TodosDropdown.tpl'); $this->tpl->set_block('todosDropdown', 'todosList_block', 'todosList'); $this->tpl->set_block('todosList_block', 'todoItem_block', 'todoItem'); @@ -30,7 +31,7 @@ $todoGateway = new TodoGateway; $thereAreTodos = false; $firstIteration = true; - foreach ($todoGateway->getTodos($this->user->getId()) as $todo) { + foreach ($todoGateway->getTodos($this->user->id) as $todo) { $thereAreTodos = true; $this->tpl->set_var(array( 'todoId' => $todo->getId(), @@ -68,7 +69,7 @@ if ($todo->getStatus() == TODO_STATUS_PENDING) { $this->tpl->set_var('textDecoration', ''); - if ($todo->getUserId() == $this->user->getId()) { + if ($todo->getUserId() == $this->user->id) { $this->tpl->parse('checkTodo', 'checkTodo_block'); } else { $this->tpl->set_var('checkTodo', ''); @@ -78,7 +79,7 @@ $this->tpl->set_var('checkTodo', ''); } - if ($todo->getUserId() != $this->user->getId()) { + if ($todo->getUserId() != $this->user->id) { $this->tpl->set_var('linkTodo1', ''); $this->tpl->set_var('linkTodo2', ''); } else { @@ -101,7 +102,8 @@ $this->tpl->pparse('out', 'todosDropdown'); } - function _filterContent($content) { + function _filterContent($content) + { $content = nl2br($content); $content = str_replace(array("\n", "\r"), array('', ''), $content); $content = addslashes($content); @@ -109,5 +111,3 @@ return $content; } } - -?> Modified: trunk/views/MainView.php =================================================================== --- trunk/views/MainView.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/views/MainView.php 2008-08-28 20:52:12 UTC (rev 660) @@ -14,10 +14,12 @@ require 'models/QuestionGateway.php'; require 'models/FavoriteGateway.php'; -class MainView extends View { +class MainView extends View +{ var $categories; - function dispatch() { + function dispatch() + { if (isset($_GET['catId'])) { $catId = (int)$_GET['catId']; } else { @@ -71,7 +73,7 @@ if ($catId != 0) { $favoriteGateway = new FavoriteGateway; - if ($favoriteGateway->isLocationFavorite($_GET['catId'], $this->user->getId())) { + if ($favoriteGateway->isLocationFavorite($_GET['catId'], $this->user->id)) { $this->tpl->set_var(array( 'favoriteLocationStarImgDisplay' => 'none', 'unFavoriteLocationStarImgDisplay' => 'inline', @@ -289,5 +291,3 @@ $this->tpl->pparse('out', 'main'); } } - -?> Modified: trunk/views/ManageArticles.php =================================================================== --- trunk/views/ManageArticles.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/views/ManageArticles.php 2008-08-28 20:52:12 UTC (rev 660) @@ -12,9 +12,10 @@ require 'views/View.php'; -class ManageArticles extends View { - - function dispatch() { +class ManageArticles extends View +{ + function dispatch() + { if (!isset($_GET['selectArticles']) || $_GET['selectArticles'] != 1) { $this->_showHeader(); } @@ -205,7 +206,9 @@ } $this->tpl->pparse('out', 'manageArticles'); + + if (!isset($_GET['selectArticles']) || $_GET['selectArticles'] != 1) { + $this->showFooter(); + } } } - -?> Modified: trunk/views/ManageUsers.php =================================================================== --- trunk/views/ManageUsers.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/views/ManageUsers.php 2008-08-28 20:52:12 UTC (rev 660) @@ -10,11 +10,11 @@ */ require 'views/View.php'; -require 'models/UserGateway.php'; -class ManageUsers extends view { - - function dispatch() { +class ManageUsers extends view +{ + function dispatch() + { $this->tpl->set_file('manageUsers', 'ManageUsers.tpl'); $this->tpl->set_block('manageUsers', 'usersBlock', 'users'); $this->tpl->set_block('usersBlock', 'delete_block', 'delete'); @@ -23,22 +23,22 @@ 'AddUserLink' => Library::getLink(array('view' => 'EditUser')), )); - $userGateway = new UserGateway; - $users = $userGateway->getUsersList(); + $users= new Users(); + $users = $users->getUsersList(); $firstIteration = true; $rowClass = 'row_off'; foreach ($users as $user) { $this->tpl->set_var(array( - 'editUserLink' => Library::getLink(array('view' => 'EditUser', 'userId' => $user->getId())), + 'editUserLink' => Library::getLink(array('view' => 'EditUser', 'userId' => $user->id)), 'rowClass' => $rowClass, 'name' => $user->getFullName(), 'nameSlashed' => addslashes($user->getFullName()), - 'userId' => $user->getId(), - 'userName' => $user->getUserName(), - 'email' => $user->getEmail(), - 'adminRights' => $user->getRole() == User::ROLE_ADMIN? $this->user->lang('Yes') : $this->user->lang('No'), + 'userId' => $user->id, + 'userName' => $user->username, + 'email' => $user->email, + 'adminRights' => $user->isAdmin()? $this->user->lang('Yes') : $this->user->lang('No'), )); - if ($user->getId() != 1) { + if ($user->id != 1) { $this->tpl->parse('delete', 'delete_block'); } else { $this->tpl->set_var('delete', ''); @@ -51,5 +51,3 @@ $this->tpl->pparse('out', 'manageUsers'); } } - -?> Modified: trunk/views/SearchResults.php =================================================================== --- trunk/views/SearchResults.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/views/SearchResults.php 2008-08-28 20:52:12 UTC (rev 660) @@ -9,14 +9,11 @@ * @packager Keyboard Monkeys */ -require 'views/View.php'; -require 'models/CategoryGateway.php'; -require 'models/FavoriteGateway.php'; +class SearchResults extends View +{ + function dispatch() + { -class SearchResults extends View { - - function dispatch() { - $this->tpl->set_var('checked_all', (!isset($_GET['set']) || $_GET['set'] == 'all')? 'checked="true"' : ''); $this->tpl->set_var('checked_articles', (isset($_GET['set']) && $_GET['set'] == 'articles')? 'checked="true"' : ''); $this->tpl->set_var('checked_bookmarks', (isset($_GET['set']) && $_GET['set'] == 'bookmarks')? 'checked="true"' : ''); @@ -27,7 +24,7 @@ $this->tpl->set_block('searchResults', 'numResults_block', 'numResults'); $favoriteGateway = new FavoriteGateway; - if (!isset($_GET['advancedSearch']) && $favoriteGateway->isSearchResultFavorite($_GET['query'], $this->user->getId())) { + if (!isset($_GET['advancedSearch']) && $favoriteGateway->isSearchResultFavorite($_GET['query'], $this->user->id)) { $this->tpl->set_var(array( 'favoriteSearchResultsStarImgDisplay' => 'none', 'unFavoriteSearchResultsStarImgDisplay' => 'inline', @@ -136,5 +133,3 @@ $this->tpl->pparse('out', 'searchResults'); } } - -?> Modified: trunk/views/View.php =================================================================== --- trunk/views/View.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/views/View.php 2008-08-28 20:52:12 UTC (rev 660) @@ -139,7 +139,7 @@ $this->tpl->set_block('header', 'editProfileLink_block', 'editProfileLink'); if (!$this->user->isAnonymous() && !$this->user->isAdmin()) { - $this->tpl->set_var('editProfileHref', Library::getLink(array('view' => 'EditUser', 'userId' => $this->user->getId()))); + $this->tpl->set_var('editProfileHref', Library::getLink(array('view' => 'EditUser', 'userId' => $this->user->id))); $this->tpl->parse('editProfileLink', 'editProfileLink_block'); } else { $this->tpl->set_var('editProfileLink', ''); Modified: trunk/views/ViewArticle.php =================================================================== --- trunk/views/ViewArticle.php 2008-08-28 20:50:05 UTC (rev 659) +++ trunk/views/ViewArticle.php 2008-08-28 20:52:12 UTC (rev 660) @@ -16,11 +16,13 @@ require 'views/ViewRelatedArticles.php'; require 'views/ViewComments.php'; -class ViewArticle extends View { +class ViewArticle extends View +{ var $article; - function preDispatch() { + function preDispatch() + { $thi... [truncated message content] |
From: <al...@us...> - 2008-09-02 20:56:52
|
Revision: 665 http://sciret.svn.sourceforge.net/sciret/?rev=665&view=rev Author: alpeb Date: 2008-09-02 20:56:40 +0000 (Tue, 02 Sep 2008) Log Message: ----------- some workarounds to be able to instantiate an anonoymous user obj without having a connection to the db (bypassing the Users gateway class). Used during install Modified Paths: -------------- trunk/index.php trunk/models/User.php trunk/models/Users.php Modified: trunk/index.php =================================================================== --- trunk/index.php 2008-09-02 20:55:01 UTC (rev 664) +++ trunk/index.php 2008-09-02 20:56:40 UTC (rev 665) @@ -95,8 +95,8 @@ Zend_Session::start(); $auth = Zend_Auth::getInstance(); -$users = new Users(); if ($auth->hasIdentity()) { + $users = new Users(); $user = $auth->getStorage()->read(); $user->init(); if ($user->app == 'monkeys') { @@ -110,7 +110,7 @@ $user->setTable($users); } else { // guest user - $user = $users->createRow(); + $user = new User(); } Zend_Registry::set('user', $user); Modified: trunk/models/User.php =================================================================== --- trunk/models/User.php 2008-09-02 20:55:01 UTC (rev 664) +++ trunk/models/User.php 2008-09-02 20:56:40 UTC (rev 665) @@ -21,6 +21,30 @@ public $app = 'sciret'; public $publicId; + /** + * These are here to be able to have default values when instantiating + * an anonymous User object without having a connection to the DB + * (during install) + */ + public $id = 0; + public $admin = 0; + public $password_changed = '0000-00-00'; + public $startBrowsing = 'all'; + public $articlesPerPage = 10; + public $dateFormat = 'Month Day, Year'; + public $language = ''; + public $navigationType = 'catAndSubCats'; + public $hiddenCategories = ''; + public $preferences; + private $_defaultPreferences = array( + 'startBrowsing' => 'all', + 'articlesPerPage' => 10, + 'dateFormat' => 'Month Day, Year', + 'language' => '', // set in the constructor + 'navigationType' => 'catAndSubCats', + 'hiddenCategories' => '', + ); + var $langArr; var $skipTranslations = false; var $rtlLanguages = array('Hebrew'); @@ -29,6 +53,12 @@ private $_preferencesArr; + public function __construct($config = array()) + { + $this->preferences = serialize($this->_defaultPreferences); + parent::__construct($config); + } + public function init() { if ($this->id) { Modified: trunk/models/Users.php =================================================================== --- trunk/models/Users.php 2008-09-02 20:55:01 UTC (rev 664) +++ trunk/models/Users.php 2008-09-02 20:56:40 UTC (rev 665) @@ -8,19 +8,14 @@ public function createRow() { - $preferences = array( - 'startBrowsing' => 'all', - 'articlesPerPage' => 10, - 'dateFormat' => 'Month Day, Year', - 'language' => '', // set in the constructor - 'navigationType' => 'catAndSubCats', - 'hiddenCategories' => '', - ); - + /** + * we instantiate an anonymous user obj just to get the default field values + */ + $user = new User(); return parent::createRow(array( - 'password_changed' => '0000-00-00', - 'admin' => 0, - 'preferences' => serialize($preferences), + 'password_changed' => $user->password_changed, + 'admin' => $user->admin, + 'preferences' => $user->preferences, )); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <al...@us...> - 2008-09-02 21:48:01
|
Revision: 666 http://sciret.svn.sourceforge.net/sciret/?rev=666&view=rev Author: alpeb Date: 2008-09-02 21:47:53 +0000 (Tue, 02 Sep 2008) Log Message: ----------- reverted previous commit. That didn't work out Modified Paths: -------------- trunk/index.php trunk/models/User.php trunk/models/Users.php Modified: trunk/index.php =================================================================== --- trunk/index.php 2008-09-02 20:56:40 UTC (rev 665) +++ trunk/index.php 2008-09-02 21:47:53 UTC (rev 666) @@ -95,8 +95,8 @@ Zend_Session::start(); $auth = Zend_Auth::getInstance(); +$users = new Users(); if ($auth->hasIdentity()) { - $users = new Users(); $user = $auth->getStorage()->read(); $user->init(); if ($user->app == 'monkeys') { @@ -110,7 +110,7 @@ $user->setTable($users); } else { // guest user - $user = new User(); + $user = $users->createRow(); } Zend_Registry::set('user', $user); Modified: trunk/models/User.php =================================================================== --- trunk/models/User.php 2008-09-02 20:56:40 UTC (rev 665) +++ trunk/models/User.php 2008-09-02 21:47:53 UTC (rev 666) @@ -21,30 +21,6 @@ public $app = 'sciret'; public $publicId; - /** - * These are here to be able to have default values when instantiating - * an anonymous User object without having a connection to the DB - * (during install) - */ - public $id = 0; - public $admin = 0; - public $password_changed = '0000-00-00'; - public $startBrowsing = 'all'; - public $articlesPerPage = 10; - public $dateFormat = 'Month Day, Year'; - public $language = ''; - public $navigationType = 'catAndSubCats'; - public $hiddenCategories = ''; - public $preferences; - private $_defaultPreferences = array( - 'startBrowsing' => 'all', - 'articlesPerPage' => 10, - 'dateFormat' => 'Month Day, Year', - 'language' => '', // set in the constructor - 'navigationType' => 'catAndSubCats', - 'hiddenCategories' => '', - ); - var $langArr; var $skipTranslations = false; var $rtlLanguages = array('Hebrew'); @@ -53,12 +29,6 @@ private $_preferencesArr; - public function __construct($config = array()) - { - $this->preferences = serialize($this->_defaultPreferences); - parent::__construct($config); - } - public function init() { if ($this->id) { Modified: trunk/models/Users.php =================================================================== --- trunk/models/Users.php 2008-09-02 20:56:40 UTC (rev 665) +++ trunk/models/Users.php 2008-09-02 21:47:53 UTC (rev 666) @@ -8,14 +8,19 @@ public function createRow() { - /** - * we instantiate an anonymous user obj just to get the default field values - */ - $user = new User(); + $preferences = array( + 'startBrowsing' => 'all', + 'articlesPerPage' => 10, + 'dateFormat' => 'Month Day, Year', + 'language' => '', // set in the constructor + 'navigationType' => 'catAndSubCats', + 'hiddenCategories' => '', + ); + return parent::createRow(array( - 'password_changed' => $user->password_changed, - 'admin' => $user->admin, - 'preferences' => $user->preferences, + 'password_changed' => '0000-00-00', + 'admin' => 0, + 'preferences' => serialize($preferences), )); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <al...@us...> - 2008-09-02 22:50:42
|
Revision: 667 http://sciret.svn.sourceforge.net/sciret/?rev=667&view=rev Author: alpeb Date: 2008-09-02 22:50:31 +0000 (Tue, 02 Sep 2008) Log Message: ----------- added mock db class to pass on to the Users gateway when wanting to build user objects that are not connected to the db Modified Paths: -------------- trunk/index.php trunk/models/User.php Added Paths: ----------- trunk/models/SciretMockDb.php Modified: trunk/index.php =================================================================== --- trunk/index.php 2008-09-02 21:47:53 UTC (rev 666) +++ trunk/index.php 2008-09-02 22:50:31 UTC (rev 667) @@ -95,8 +95,8 @@ Zend_Session::start(); $auth = Zend_Auth::getInstance(); -$users = new Users(); if ($auth->hasIdentity()) { + $users = new Users(); $user = $auth->getStorage()->read(); $user->init(); if ($user->app == 'monkeys') { @@ -109,7 +109,11 @@ // reactivate row as live data $user->setTable($users); } else { - // guest user + // guest user. + // Using mock db because the anonymous user object shouldn't interact with the db + // and there even isn't a db around when installing the app. + $mockDb = new SciretMockDb(); + $users = new Users($mockDb); $user = $users->createRow(); } Added: trunk/models/SciretMockDb.php =================================================================== --- trunk/models/SciretMockDb.php (rev 0) +++ trunk/models/SciretMockDb.php 2008-09-02 22:50:31 UTC (rev 667) @@ -0,0 +1,59 @@ +<?php + +class SciretMockDb extends Zend_Db_Adapter_Abstract +{ + public function __construct($config = false) + { + } + + public function listTables() + { + } + + public function describeTable($tableName, $schemaName = null) + { + if ($tableName == 'users') { + return User::$tableDefinition; + } + } + + protected function _connect() + { + } + + public function closeConnection() + { + } + + public function prepare($sql) + { + } + + public function lastInsertId($tableName = null, $primaryKey = null) + { + } + + protected function _beginTransaction() + { + } + + protected function _commit() + { + } + + protected function _rollBack() + { + } + + public function setFetchMode($mode) + { + } + + public function limit($sql, $count, $offset = 0) + { + } + + public function supportsParameters($type) + { + } +} Modified: trunk/models/User.php =================================================================== --- trunk/models/User.php 2008-09-02 21:47:53 UTC (rev 666) +++ trunk/models/User.php 2008-09-02 22:50:31 UTC (rev 667) @@ -289,4 +289,151 @@ return ($passwordAge > $expirationDays); } + + public static $tableDefinition = array( + 'id' => array ( + 'SCHEMA_NAME' => NULL, + 'TABLE_NAME' => 'users', + 'COLUMN_NAME' => 'id', + 'COLUMN_POSITION' => 1, + 'DATA_TYPE' => 'int', + 'DEFAULT' => NULL, + 'NULLABLE' => false, + 'LENGTH' => NULL, + 'SCALE' => NULL, + 'PRECISION' => NULL, + 'UNSIGNED' => NULL, + 'PRIMARY' => true, + 'PRIMARY_POSITION' => 1, + 'IDENTITY' => true, + ), + 'firstname' => array ( + 'SCHEMA_NAME' => NULL, + 'TABLE_NAME' => 'users', + 'COLUMN_NAME' => 'firstname', + 'COLUMN_POSITION' => 2, + 'DATA_TYPE' => 'varchar', + 'DEFAULT' => '', + 'NULLABLE' => false, + 'LENGTH' => '50', + 'SCALE' => NULL, + 'PRECISION' => NULL, + 'UNSIGNED' => NULL, + 'PRIMARY' => false, + 'PRIMARY_POSITION' => NULL, + 'IDENTITY' => false, + ), + 'lastname' => array ( + 'SCHEMA_NAME' => NULL, + 'TABLE_NAME' => 'users', + 'COLUMN_NAME' => 'lastname', + 'COLUMN_POSITION' => 3, + 'DATA_TYPE' => 'varchar', + 'DEFAULT' => '', + 'NULLABLE' => false, + 'LENGTH' => '50', + 'SCALE' => NULL, + 'PRECISION' => NULL, + 'UNSIGNED' => NULL, + 'PRIMARY' => false, + 'PRIMARY_POSITION' => NULL, + 'IDENTITY' => false, + ), + 'username' => array ( + 'SCHEMA_NAME' => NULL, + 'TABLE_NAME' => 'users', + 'COLUMN_NAME' => 'username', + 'COLUMN_POSITION' => 4, + 'DATA_TYPE' => 'varchar', + 'DEFAULT' => '', + 'NULLABLE' => false, + 'LENGTH' => '50', + 'SCALE' => NULL, + 'PRECISION' => NULL, + 'UNSIGNED' => NULL, + 'PRIMARY' => false, + 'PRIMARY_POSITION' => NULL, + 'IDENTITY' => false, + ), + 'email' => array ( + 'SCHEMA_NAME' => NULL, + 'TABLE_NAME' => 'users', + 'COLUMN_NAME' => 'email', + 'COLUMN_POSITION' => 5, + 'DATA_TYPE' => 'varchar', + 'DEFAULT' => '', + 'NULLABLE' => false, + 'LENGTH' => '100', + 'SCALE' => NULL, + 'PRECISION' => NULL, + 'UNSIGNED' => NULL, + 'PRIMARY' => false, + 'PRIMARY_POSITION' => NULL, + 'IDENTITY' => false, + ), + 'password' => array ( + 'SCHEMA_NAME' => NULL, + 'TABLE_NAME' => 'users', + 'COLUMN_NAME' => 'password', + 'COLUMN_POSITION' => 6, + 'DATA_TYPE' => 'varchar', + 'DEFAULT' => '', + 'NULLABLE' => false, + 'LENGTH' => '32', + 'SCALE' => NULL, + 'PRECISION' => NULL, + 'UNSIGNED' => NULL, + 'PRIMARY' => false, + 'PRIMARY_POSITION' => NULL, + 'IDENTITY' => false, + ), + 'password_changed' => array ( + 'SCHEMA_NAME' => NULL, + 'TABLE_NAME' => 'users', + 'COLUMN_NAME' => 'password_changed', + 'COLUMN_POSITION' => 7, + 'DATA_TYPE' => 'date', + 'DEFAULT' => NULL, + 'NULLABLE' => false, + 'LENGTH' => NULL, + 'SCALE' => NULL, + 'PRECISION' => NULL, + 'UNSIGNED' => NULL, + 'PRIMARY' => false, + 'PRIMARY_POSITION' => NULL, + 'IDENTITY' => false, + ), + 'admin' => array ( + 'SCHEMA_NAME' => NULL, + 'TABLE_NAME' => 'users', + 'COLUMN_NAME' => 'admin', + 'COLUMN_POSITION' => 8, + 'DATA_TYPE' => 'tinyint', + 'DEFAULT' => '0', + 'NULLABLE' => false, + 'LENGTH' => NULL, + 'SCALE' => NULL, + 'PRECISION' => NULL, + 'UNSIGNED' => NULL, + 'PRIMARY' => false, + 'PRIMARY_POSITION' => NULL, + 'IDENTITY' => false, + ), + 'preferences' => array ( + 'SCHEMA_NAME' => NULL, + 'TABLE_NAME' => 'users', + 'COLUMN_NAME' => 'preferences', + 'COLUMN_POSITION' => 9, + 'DATA_TYPE' => 'text', + 'DEFAULT' => NULL, + 'NULLABLE' => false, + 'LENGTH' => NULL, + 'SCALE' => NULL, + 'PRECISION' => NULL, + 'UNSIGNED' => NULL, + 'PRIMARY' => false, + 'PRIMARY_POSITION' => NULL, + 'IDENTITY' => false, + ), + ); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <al...@us...> - 2008-09-15 11:33:14
|
Revision: 671 http://sciret.svn.sourceforge.net/sciret/?rev=671&view=rev Author: alpeb Date: 2008-09-15 11:33:08 +0000 (Mon, 15 Sep 2008) Log Message: ----------- (by Pawel) Improved some of the templates and styles Modified Paths: -------------- trunk/images/arrow_down.png trunk/images/arrow_up.png trunk/images/bg_panel.gif trunk/images/bg_table_head.jpg trunk/style.css trunk/templates/AdvancedSearch.tpl trunk/templates/MainView.tpl trunk/templates/footer.tpl trunk/templates/pagination.tpl Added Paths: ----------- trunk/images/bg_panel_gray.gif Property changes on: trunk/images/bg_panel_gray.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/style.css =================================================================== --- trunk/style.css 2008-09-15 11:31:44 UTC (rev 670) +++ trunk/style.css 2008-09-15 11:33:08 UTC (rev 671) @@ -270,6 +270,7 @@ .view_right { text-align: right; + vertical-align: middle; } @@ -410,6 +411,25 @@ display: block; } +table.categoriesTable { + border: 1px solid #cbeaf4; + margin-bottom: 20px; +} + +.art_category { + color: #5b5b5b; + font-size: 11px; + margin-top: 5px; + text-transform: uppercase; + letter-spacing: 2px; + font-weight: bold; + margin-bottom: 20px; +} + +.art_category a { + font-weight: bold; +} + #article p { margin-bottom: 40px; } @@ -421,7 +441,7 @@ margin-left: 680px; } -.panel_title { +.panel_title, .panel_title_gray { background: url(images/bg_panel_title.gif) no-repeat; width: 240px; height: 35px; @@ -442,6 +462,18 @@ color: #02628d; } +.panel_title_gray a { + margin-left: 10px; + vertical-align: middle; + font-weight: normal; + font-style: normal; + text-decoration: none; + line-height: 35px; + font-size: 1.5em; + color: #3b3b3b; +} + + .panel { width: 250px; margin-top: 20px; @@ -456,19 +488,42 @@ .panel_bottom { height: 10px; margin-top: 0; - background: url(images/bg_panel.png) no-repeat 0 bottom; + background: url(images/bg_panel.gif) no-repeat 0 bottom; } +.panel_gray { + width: 250px; + margin-top: 20px; + padding-bottom: 5px; + padding-top: 1px; + font-weight: normal; + background: url(images/bg_panel_gray.gif) no-repeat; + font-style: normal; +} + +.panel_bottom_gray { + height: 10px; + margin-top: 0; + background: url(images/bg_panel_gray.gif) no-repeat 0 bottom; +} + hr { margin-top: 15px; border: 1px solid #4d8bff; } -.inside_panel { +.inside_panel, .inside_panel_gray { padding: 0 10px; } -.inside_panel ul { padding-left: 2px; } +.inside_panel_gray { + color: #434d5d; +} + +.inside_panel ul, .inside_panel_gray ul { + padding-left: 2px; +} + .inside_panel li { list-style-type: none; border-bottom: 1px solid #4d8bff; @@ -481,16 +536,69 @@ background-color: #6cb2f8; } +.inside_panel_gray li { + list-style-type: none; + border-bottom: 1px solid #b0bac6; + font-weight: bold; + font-size: 1em; + padding: 5px 4px; +} + +.inside_panel_gray li:hover { + background-color: #b0c7d5; +} + +.inside_panel ol, .inside_panel_gray ol { + margin: 0; + padding: 0; +} + .inside_panel a { - color: #004379; + color: #004e8c; font-weight: bold; - font-size: 1.1em; + font-size: 1em; } .inside_panel a:hover { text-decoration: none; + color: #2f6fab; } +.inside_panel_gray a { + color: #3b3b3b; + font-weight: bold; + font-size: 1.1em; +} + +.inside_panel_gray a:hover { + text-decoration: none; + color: #53565c; +} + +.inside_panel_gray .category { + color: #537386; +} + +.advanced { + text-align: right; + margin-top: 5px; + margin-bottom: 0; + padding-top: 5px; + border-top: 1px solid #429bea; +} + +.target { + margin-top: 5px; + margin-bottom: 10px; + font-size: 0.8em; +} + +.category { + color: #fff; + text-transform: uppercase; + font-size: 0.8em; +} + .add { text-align: right; } @@ -512,8 +620,14 @@ text-decoration: none; } + +.panel li a { + color: #005396; + font-weight: bold; +} + + .input_p { - margin-bottom: 10px; background-color: #006dc3; border-style: none; padding: 5px; @@ -522,12 +636,11 @@ } #query { - margin-bottom: 10px; background-color: #006dc3; border-style: none; padding: 5px; color: #fff; - width: 150px; + width: 160px; float: left; } @@ -565,6 +678,7 @@ padding-right:5px; padding-bottom: 0; padding-left: 10px; + margin-top: 1px; } .button_panel a:hover { @@ -630,14 +744,20 @@ border-spacing:0; } +.row_off td { + border-style: none; +} + +td { + border-style: none; +} + table th { - border-right: 1px solid #81a1c6; - border-bottom: 1px solid #81a1c6; - border-top: 1px solid #81a1c6; letter-spacing: 1px; text-align: left; padding: 4px 4px 4px 8px; background: url(images/bg_table_head.jpg) no-repeat; + border: 1px solid #81a1c6; } .specth { @@ -658,6 +778,39 @@ /* foot */ +#pagination { + text-align: center; +} + +#pagination ul { + margin-top: 40px; +} + +#pagination li { + display: inline; +} + +#pagination a { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + background-color: #ededed; + padding: 4px 8px; + color: #566168; +} + +#pagination a:hover { + text-decoration: none; + background-color: #d1e6f2; + color: #67aff5; +} + +.selectedPage { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + padding: 4px 8px; + background-color: #d1e6f2; +} + #foot { margin-left: auto; margin-right: auto; Modified: trunk/templates/AdvancedSearch.tpl =================================================================== --- trunk/templates/AdvancedSearch.tpl 2008-09-15 11:31:44 UTC (rev 670) +++ trunk/templates/AdvancedSearch.tpl 2008-09-15 11:33:08 UTC (rev 671) @@ -12,9 +12,9 @@ <form method="GET" action="{formAction}"> <input type="hidden" name="view" value="SearchResults" /> <input type="hidden" name="advancedSearch" value="1" /> - <table style="border:1px solid black; margin:5px auto"> + <table> <tr class=th> - <td colspan=2 align=center><b>[l]Advanced Search[/l]</b></td> + <th colspan=2 >[l]Advanced Search[/l]</th> </tr> <tr class="row_off"> <td colspan="2"> @@ -109,7 +109,7 @@ (*): [l]Separate word list with spaces[/l] </td> </tr> - <tr> + <tr> <td colspan=2 align=center style="padding: 10px 0 10px 0"> <input type="submit" name="adv_search" value="[l]Search[/l]"> </td> Modified: trunk/templates/MainView.tpl =================================================================== --- trunk/templates/MainView.tpl 2008-09-15 11:31:44 UTC (rev 670) +++ trunk/templates/MainView.tpl 2008-09-15 11:33:08 UTC (rev 671) @@ -57,7 +57,7 @@ <div> {modifOrCreated} {art_date} - {img_stars} {attachment} </div> -<div style='font-size:15px;color:green'>{art_category}</div> +<div class="art_category">{art_category}</div> <p>{art_excerpt}</p> <div class="author"><span>{art_author}</span></div> <!-- END articles_block --> Modified: trunk/templates/footer.tpl =================================================================== --- trunk/templates/footer.tpl 2008-09-15 11:31:44 UTC (rev 670) +++ trunk/templates/footer.tpl 2008-09-15 11:33:08 UTC (rev 671) @@ -38,11 +38,13 @@ <span class="button_panel"> <a href="javascript:void(0)" onclick="submitSearch()"><span>[l]Search[/l]</span></a> </span> - <a href="{advancedSearchLink}">[l]Advanced Search[/l]</a> - <p><strong>[l]Target[/l]:</strong></p> + <p class="target"> + <strong>[l]Target[/l]:</strong> <input type="radio" name="set" value="all" {checked_all} />[l]All[/l] <input type="radio" name="set" value="articles" {checked_articles} />[l]Articles[/l] - <input type="radio" name="set" value="bookmarks" {checked_bookmarks} />[l]Bookmarks[/l] + <input type="radio" name="set" value="bookmarks" {checked_bookmarks} />[l]Bookmarks[/l] + </p> + <p class="advanced"><a href="{advancedSearchLink}">[l]Advanced Search[/l]</a></p> </form> </div> </div> @@ -71,51 +73,70 @@ <!-- END todosLink_block --> <!-- BEGIN latestArts_block --> - <div class="panel"> - <div class="panel_title"><a href="">[l]Latest[/l]</a></div> + <div class="panel_gray"> + <div class="panel_title_gray"><a href="">[l]Latest[/l]</a></div> + <div class="inside_panel_gray"> <ol> <!-- BEGIN latestArtsItem_block --> <li> <a href="{latestLink}">{latestTitle} </a><span style='font-size: 80%'>({latestDate})</span><br> - <span style='font-size:80%;color:green'>{latestCategory}</span> + <span class="category">{latestCategory}</span> </li> <!-- END latestArtsItem_block --> - </ol> + </ol> + </div> </div> - <div class="panel_bottom"></div> + <div class="panel_bottom_gray"></div> <!-- END latestArts_block --> <!-- BEGIN mostViewedArts_block --> - <div class="panel"> - <div class="panel_title"><a href="">[l]Most Viewed[/l]</a></div> - <ol> + <div class="panel_gray"> + <div class="panel_title_gray"><a href="">[l]Most Viewed[/l]</a></div> + <div class="inside_panel_gray"> + <ol> <!-- BEGIN mostViewedArtsItem_block --> <li> <a href="{mostViewedLink}">{mostViewedTitle} </a><span style='font-size: 80%'>({mostViewedViews} [l]views[/l])</span><br> - <span style='font-size:80%;color:green'>{mostViewedCategory}</span> + <span class="category">{mostViewedCategory}</span> </li> <!-- END mostViewedArtsItem_block --> - </ol> + </ol> + </div> </div> - <div class="panel_bottom"></div> + <div class="panel_bottom_gray"></div> <!-- END mostViewedArts_block --> <!-- BEGIN unansweredQuestions_block --> - <div class="panel"> - <div class="panel_title"><a href="">[l]Unanswered Questions[/l]</a></div> - <ul> + <div class="panel_gray"> + <div class="panel_title_gray"><a href="">[l]Unanswered Questions[/l]</a></div> + <div class="inside_panel_gray"> + <ul> <!-- BEGIN unansweredQuestionsItem_block --> <li> {questionSummary} ({questionUserName}) <!-- BEGIN answerLink_block --> <a href="{answerLink}" style="font-size:10px">[l]answer[/l]</a><br> <!-- END answerLink_block --> - <span style='font-size:80%;color:green'>{questionCategory}</span> + <span class="category">{questionCategory}</span> </li> <!-- END unansweredQuestionsItem_block --> - </ul> + </ul> + + <ul> + <!-- BEGIN unansweredQuestionsItem_block --> + <li> + {questionSummary} ({questionUserName}) + <!-- BEGIN answerLink_block --> + <a href="{answerLink}" style="font-size:10px">[l]answer[/l]</a><br> + <!-- END answerLink_block --> + <span class="category">{questionCategory}</span> + </li> + <!-- END unansweredQuestionsItem_block --> + </ul> + </div> + </div> - <div class="panel_bottom"></div> + <div class="panel_bottom_gray"></div> <!-- END unansweredQuestions_block --> </div><!--end panel_right--> Modified: trunk/templates/pagination.tpl =================================================================== --- trunk/templates/pagination.tpl 2008-09-15 11:31:44 UTC (rev 670) +++ trunk/templates/pagination.tpl 2008-09-15 11:33:08 UTC (rev 671) @@ -8,17 +8,16 @@ * @packager Keyboard Monkeys */ --> - -<div style="text-align:center;"> - <table class="paginationTable" cellpadding="5" cellspacing="3" border="0" style="margin:20px auto"> - <tr> + + <div id="pagination"> + <ul> <!-- BEGIN previousPage_block --> - <td><a href="{previousLink}{linkQuery}" class="previousNext">[l]Previous[/l]</a></td> + <li><a href="{previousLink}{linkQuery}" class="previousNext">[l]Previous[/l]</a></li> <!-- END previousPage_block --> - <td nowrap="true" >{pageItems}</td> + <li nowrap="true" >{pageItems}</li> <!-- BEGIN nextPage_block --> - <td><a href="{nextLink}{linkQuery}" class="previousNext">[l]Next[/l]</a></td> - <!-- END nextPage_block --> - </tr> - </table> -</div> + <li><a href="{nextLink}{linkQuery}" class="previousNext">[l]Next[/l]</a></li> + <!-- END nextPage_block --> + <ul> + </div> + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <al...@us...> - 2008-09-16 07:23:41
|
Revision: 673 http://sciret.svn.sourceforge.net/sciret/?rev=673&view=rev Author: alpeb Date: 2008-09-16 14:23:39 +0000 (Tue, 16 Sep 2008) Log Message: ----------- favorites and todo boxes weren't sliding all the way to the bottom Modified Paths: -------------- trunk/javascript/general.js trunk/templates/FavoritesDropdown.tpl trunk/templates/TodosDropdown.tpl Modified: trunk/javascript/general.js =================================================================== --- trunk/javascript/general.js 2008-09-15 13:22:11 UTC (rev 672) +++ trunk/javascript/general.js 2008-09-16 14:23:39 UTC (rev 673) @@ -35,6 +35,8 @@ isIE7 = false; } +isSafari = (document.childNodes && !document.all && !navigator.taintEnabled && !navigator.accentColorName)? true : false; + var onloadFunctions = new Array(); // ********************************************************* @@ -329,6 +331,9 @@ var favoritesDropdown = YAHOO.util.Dom.get('favoritesDropdown'); favoritesDropdown.innerHTML = responseObj.responseText; + if (isSafari) { + favoritesDropdown.style.paddingBottom = '25px'; + } new YAHOO.widget.Effects.BlindDown('favoritesDropdown'); isFavoritesDropdownShown = true; @@ -422,6 +427,9 @@ var todosDropdown = YAHOO.util.Dom.get('todosDropdown'); todosDropdown.innerHTML = responseObj.responseText; + if (isSafari) { + todosDropdown.style.paddingBottom = '25px'; + } new YAHOO.widget.Effects.BlindDown('todosDropdown'); isTodosDropdownShown = true; Modified: trunk/templates/FavoritesDropdown.tpl =================================================================== --- trunk/templates/FavoritesDropdown.tpl 2008-09-15 13:22:11 UTC (rev 672) +++ trunk/templates/FavoritesDropdown.tpl 2008-09-16 14:23:39 UTC (rev 673) @@ -9,18 +9,20 @@ */ --> -<!-- BEGIN favoritesList_block --> -<ul class="headerLinks"> - <!-- BEGIN favoriteItem_block --> - <li> - <!-- BEGIN favoriteItem_img_block --> - <img src="images/{articleImage}" /> - <!-- END favoriteItem_img_block --> - <a href="{favoriteItemURL}">{favoriteItemLabel}</a> - </li> - <!-- END favoriteItem_block --> -</ul> -<!-- END favoritesList_block --> -<!-- BEGIN noFavorites_block --> -<div class="headerLinks" style="text-align:center">[l]You have no Favorites[/l]</div> -<!-- END noFavorites_block --> +<div style="padding-bottom:5px"> + <!-- BEGIN favoritesList_block --> + <ul class="headerLinks"> + <!-- BEGIN favoriteItem_block --> + <li> + <!-- BEGIN favoriteItem_img_block --> + <img src="images/{articleImage}" /> + <!-- END favoriteItem_img_block --> + <a href="{favoriteItemURL}">{favoriteItemLabel}</a> + </li> + <!-- END favoriteItem_block --> + </ul> + <!-- END favoritesList_block --> + <!-- BEGIN noFavorites_block --> + <div class="headerLinks" style="text-align:center">[l]You have no Favorites[/l]</div> + <!-- END noFavorites_block --> +</div> Modified: trunk/templates/TodosDropdown.tpl =================================================================== --- trunk/templates/TodosDropdown.tpl 2008-09-15 13:22:11 UTC (rev 672) +++ trunk/templates/TodosDropdown.tpl 2008-09-16 14:23:39 UTC (rev 673) @@ -9,35 +9,37 @@ */ --> -<!-- BEGIN todosList_block --> -<ul> - <!-- BEGIN todoItem_block --> - <li> - <!-- BEGIN checkTodo_block --> - <input id="todoCheck_{todoId}" type="checkbox" onchange="tickTodo({todoId})" /><img id="todoProgressImg_{todoId}" src="images/progress.gif" style="display:none" /> - <!-- END checkTodo_block --> - <!-- BEGIN linkTodo1_block --> - <a id="todoLink_{todoId}" href="javascript:void(0)" onclick="showEditTodoForm({todoId})" style="text-decoration:{textDecoration}; {colorStyle}"> - <!-- END linkTodo1_block --> - <span class="headerLinks" {descriptionPopup}>{todoTitle}</span> - <!-- BEGIN linkTodo2_block --> - </a> - <!-- END linkTodo2_block --> - <!-- BEGIN privateTodo_block --> - <img src="images/private.png" /> - <!-- END privateTodo_block --> - <!-- BEGIN hasRelatedFinal_block --> - <img src="images/article.png" /> - <!-- END hasRelatedFinal_block --> - <!-- BEGIN hasRelatedDraft_block --> - <img src="images/article_draft.png" /> - <!-- END hasRelatedDraft_block --> - </li> - <!-- END todoItem_block --> -</ul> -<!-- END todosList_block --> -<!-- BEGIN noTodos_block --> -<div class="headerLinks" style="text-align:center">[l]You have no To-Do's[/l]</div> -<!-- END noTodos_block --> +<div style="padding-bottom:5px"> + <!-- BEGIN todosList_block --> + <ul> + <!-- BEGIN todoItem_block --> + <li> + <!-- BEGIN checkTodo_block --> + <input id="todoCheck_{todoId}" type="checkbox" onchange="tickTodo({todoId})" /><img id="todoProgressImg_{todoId}" src="images/progress.gif" style="display:none" /> + <!-- END checkTodo_block --> + <!-- BEGIN linkTodo1_block --> + <a id="todoLink_{todoId}" href="javascript:void(0)" onclick="showEditTodoForm({todoId})" style="text-decoration:{textDecoration}; {colorStyle}"> + <!-- END linkTodo1_block --> + <span class="headerLinks" {descriptionPopup}>{todoTitle}</span> + <!-- BEGIN linkTodo2_block --> + </a> + <!-- END linkTodo2_block --> + <!-- BEGIN privateTodo_block --> + <img src="images/private.png" /> + <!-- END privateTodo_block --> + <!-- BEGIN hasRelatedFinal_block --> + <img src="images/article.png" /> + <!-- END hasRelatedFinal_block --> + <!-- BEGIN hasRelatedDraft_block --> + <img src="images/article_draft.png" /> + <!-- END hasRelatedDraft_block --> + </li> + <!-- END todoItem_block --> + </ul> + <!-- END todosList_block --> + <!-- BEGIN noTodos_block --> + <div class="headerLinks" style="text-align:center">[l]You have no To-Do's[/l]</div> + <!-- END noTodos_block --> -<p class="add"><span class="button_green"><a href="javascript:void(0)" onclick="showEditTodoForm()">[l]Add new[/l]</a></span></p> + <p class="add"><span class="button_green"><a href="javascript:void(0)" onclick="showEditTodoForm()">[l]Add new[/l]</a></span></p> +</div> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <al...@us...> - 2008-09-16 15:56:28
|
Revision: 676 http://sciret.svn.sourceforge.net/sciret/?rev=676&view=rev Author: alpeb Date: 2008-09-16 22:56:26 +0000 (Tue, 16 Sep 2008) Log Message: ----------- added entry in views array to determine whether they should load the html head section Modified Paths: -------------- trunk/classes/Controller.php trunk/flowMap.php Modified: trunk/classes/Controller.php =================================================================== --- trunk/classes/Controller.php 2008-09-16 21:28:15 UTC (rev 675) +++ trunk/classes/Controller.php 2008-09-16 22:56:26 UTC (rev 676) @@ -11,8 +11,9 @@ define('MINIMUM_ROLE', 0); define('LOAD_CONFIGURATION', 1); -define('SHOW_HEADER', 2); -define('ALLOW_VIEW_ONLY_IF_PUBLIC_KB', 3); +define('SHOW_HEAD', 2); +define('SHOW_HEADER', 3); +define('ALLOW_VIEW_ONLY_IF_PUBLIC_KB', 4); define('ALLOW_ACTION_ONLY_IF_PUBLIC_KB', 2); require 'models/Configuration.php'; @@ -68,7 +69,9 @@ $obj = new $view($this->user, $this->configuration); $obj->setTemplate(new KB_Template('templates', $this->user)); $obj->preDispatch(); - $obj->setHTMLHeader($this->views[$view][SHOW_HEADER]); + if ($this->views[$view][SHOW_HEAD]) { + $obj->setHTMLHeader($this->views[$view][SHOW_HEADER]); + } $obj->dispatch(); if ($this->views[$view][SHOW_HEADER]) { $obj->showFooter(); Modified: trunk/flowMap.php =================================================================== --- trunk/flowMap.php 2008-09-16 21:28:15 UTC (rev 675) +++ trunk/flowMap.php 2008-09-16 22:56:26 UTC (rev 676) @@ -11,37 +11,37 @@ define('VIEW_DEFAULT', 'MainView'); -// ClassName => array(minimumRole, loadConfiguration, showHeader, allowOnlyIfPublicKB(for User::ROLE_ANONYMOUS)?) +// ClassName => array(minimumRole, loadConfiguration, showHead, showHeader, allowOnlyIfPublicKB(for User::ROLE_ANONYMOUS)?) $views = array( - 'NotInstalled' => array(User::ROLE_ANONYMOUS, false, false, false), - 'InstallEnterCredentials' => array(User::ROLE_ANONYMOUS, false, false, false), - 'InstallOk' => array(User::ROLE_ANONYMOUS, true, false, false), - 'Login' => array(User::ROLE_ANONYMOUS, true, true, false), - 'MainView' => array(User::ROLE_ANONYMOUS, true, true, true), - 'EditArticle' => array(User::ROLE_REGISTERED, true, true), - 'EditBookmark' => array(User::ROLE_REGISTERED, true, true), - 'ViewArticle' => array(User::ROLE_ANONYMOUS, true, true, true), - 'ViewBookmark' => array(User::ROLE_ANONYMOUS, true, true, true), - 'ManageUsers' => array(User::ROLE_ADMIN, true, true), - 'EditUser' => array(User::ROLE_REGISTERED, true, true), - 'AddQuestion' => array(User::ROLE_ANONYMOUS, true, true, true), - 'EditCategories' => array(User::ROLE_ANONYMOUS, true, true, true), - 'EditCategory' => array(User::ROLE_ADMIN, true, true), - 'EditPreferences' => array(User::ROLE_ANONYMOUS, true, true, true), - 'ManageArticles' => array(User::ROLE_REGISTERED, true, false), - 'ManageQuestions' => array(User::ROLE_REGISTERED, true, true), - 'SearchResults' => array(User::ROLE_ANONYMOUS, true, true, true), - 'AdvancedSearch' => array(User::ROLE_ANONYMOUS, true, true, true), - 'PrinterView' => array(User::ROLE_ANONYMOUS, true, false, true), - 'MailArticle' => array(User::ROLE_ANONYMOUS, true, true, true), - 'ViewComments' => array(User::ROLE_ANONYMOUS, true, false, true), - 'ViewBookmarkDetails' => array(User::ROLE_ANONYMOUS, true, false, true), - 'ViewRelatedArticles' => array(User::ROLE_ANONYMOUS, true, false, true), - 'GetFavoritesDropdown' => array(User::ROLE_REGISTERED, true, false), - 'GetTodosDropdown' => array(User::ROLE_REGISTERED, true, false), - 'EditTodo' => array(User::ROLE_REGISTERED, true, false), - 'Upgrade' => array(User::ROLE_ANONYMOUS, true, true, false), - 'UpgradeOk' => array(User::ROLE_ANONYMOUS, true, true, false), + 'NotInstalled' => array(User::ROLE_ANONYMOUS, false, true, false, false), + 'InstallEnterCredentials' => array(User::ROLE_ANONYMOUS, false, true, false, false), + 'InstallOk' => array(User::ROLE_ANONYMOUS, true, true, false, false), + 'Login' => array(User::ROLE_ANONYMOUS, true, true, true, false), + 'MainView' => array(User::ROLE_ANONYMOUS, true, true, true, true), + 'EditArticle' => array(User::ROLE_REGISTERED, true, true, true), + 'EditBookmark' => array(User::ROLE_REGISTERED, true, true, true), + 'ViewArticle' => array(User::ROLE_ANONYMOUS, true, true, true, true), + 'ViewBookmark' => array(User::ROLE_ANONYMOUS, true, true, true, true), + 'ManageUsers' => array(User::ROLE_ADMIN, true, true, true), + 'EditUser' => array(User::ROLE_REGISTERED, true, true, true), + 'AddQuestion' => array(User::ROLE_ANONYMOUS, true, true, true, true), + 'EditCategories' => array(User::ROLE_ANONYMOUS, true, true, true, true), + 'EditCategory' => array(User::ROLE_ADMIN, true, true, true), + 'EditPreferences' => array(User::ROLE_ANONYMOUS, true, true, true, true), + 'ManageArticles' => array(User::ROLE_REGISTERED, true, true, false), + 'ManageQuestions' => array(User::ROLE_REGISTERED, true, true, true), + 'SearchResults' => array(User::ROLE_ANONYMOUS, true, true, true, true), + 'AdvancedSearch' => array(User::ROLE_ANONYMOUS, true, true, true, true), + 'PrinterView' => array(User::ROLE_ANONYMOUS, true, true, false, true), + 'MailArticle' => array(User::ROLE_ANONYMOUS, true, true, true, true), + 'ViewComments' => array(User::ROLE_ANONYMOUS, true, true, false, true), + 'ViewBookmarkDetails' => array(User::ROLE_ANONYMOUS, true, true, false, true), + 'ViewRelatedArticles' => array(User::ROLE_ANONYMOUS, true, true, false, true), + 'GetFavoritesDropdown' => array(User::ROLE_REGISTERED, true, true, false), + 'GetTodosDropdown' => array(User::ROLE_REGISTERED, true, true, false), + 'EditTodo' => array(User::ROLE_REGISTERED, true, false, false), + 'Upgrade' => array(User::ROLE_ANONYMOUS, true, true, true, false), + 'UpgradeOk' => array(User::ROLE_ANONYMOUS, true, true, true, false), ); // ClassName => array(minimumRole, loadConfiguration, allowOnlyIfPublicKB(for User::ROLE_ANONYMOUS)?) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <al...@us...> - 2008-09-16 15:58:29
|
Revision: 679 http://sciret.svn.sourceforge.net/sciret/?rev=679&view=rev Author: alpeb Date: 2008-09-16 22:58:24 +0000 (Tue, 16 Sep 2008) Log Message: ----------- refactored todo popup Modified Paths: -------------- trunk/actions/CompleteTodo.php trunk/actions/DeleteTodo.php trunk/actions/SaveTodo.php trunk/javascript/general.js trunk/style.css trunk/templates/EditTodo.tpl trunk/templates/TodosDropdown.tpl trunk/templates/footer.tpl trunk/templates/head.tpl trunk/views/EditTodo.php Modified: trunk/actions/CompleteTodo.php =================================================================== --- trunk/actions/CompleteTodo.php 2008-09-16 22:57:52 UTC (rev 678) +++ trunk/actions/CompleteTodo.php 2008-09-16 22:58:24 UTC (rev 679) @@ -16,15 +16,16 @@ function dispatch() { $todo = new Todo($_POST['todoId']); + $jsonObj = new StdClass(); if ($todo->getUserId() != $this->user->id) { - echo 'FAILURE|' . $this->user->lang('Cannot complete other people\'s todo\'s'); + $jsonObj->message = $this->user->lang('Cannot complete other people\'s todo\'s'); exit; + } else { + $todo->setStatus(TODO_STATUS_COMPLETED); + $todo->save(); } - $todo->setStatus(TODO_STATUS_COMPLETED); - $todo->save(); - - echo 'OK|OK'; + echo Zend_Json::encode($jsonObj); } } Modified: trunk/actions/DeleteTodo.php =================================================================== --- trunk/actions/DeleteTodo.php 2008-09-16 22:57:52 UTC (rev 678) +++ trunk/actions/DeleteTodo.php 2008-09-16 22:58:24 UTC (rev 679) @@ -16,11 +16,13 @@ function dispatch() { $todoGateway = new TodoGateway; + $jsonObj = new StdClass(); if ($todoGateway->deleteTodo($_POST['todoId'], $this->user->id)) { - echo 'OK'; + $jsonObj->message = $this->user->lang('To-Do deleted successfuly'); } else { - echo 'FAILURE'; + $jsonObj->message = $this->user->lang('There was a problem trying to delete this To-Do'); } + echo Zend_Json::encode($jsonObj); } } Modified: trunk/actions/SaveTodo.php =================================================================== --- trunk/actions/SaveTodo.php 2008-09-16 22:57:52 UTC (rev 678) +++ trunk/actions/SaveTodo.php 2008-09-16 22:58:24 UTC (rev 679) @@ -36,11 +36,11 @@ } $todo->save(); - Library::redirect(Library::getLink(array( 'view' => 'EditTodo', - 'id' => $todo->getId(), - 'message' => urlencode($this->user->lang('To-do saved successfully')), - ) - )); + $jsonObj = new StdClass(); + $jsonObj->todoId = $todo->getId(); + $jsonObj->message = $this->user->lang('To-do saved successfully'); + + echo Zend_Json::encode($jsonObj); } } Modified: trunk/javascript/general.js =================================================================== --- trunk/javascript/general.js 2008-09-16 22:57:52 UTC (rev 678) +++ trunk/javascript/general.js 2008-09-16 22:58:24 UTC (rev 679) @@ -23,6 +23,45 @@ // to avoid conflicts with YAHOO.tools' $ function var $j = jQuery.noConflict(); +SCIRET.debugWindow = function() { + var popup = false; + + return { + log: function (str) { + if (!popup) { + popup = window.open('', 'debugging', 'width=400, height=500, scrollbars=yes, resizable=yes'); + popup.document.write('<pre>\n'); + } + popup.document.write(str + '\n'); + } + } +}(); + +SCIRET.utils = function() { + return { + isSafari: (document.childNodes && !document.all && !navigator.taintEnabled && !navigator.accentColorName)? true : false, + + isKhtml: /Konqueror|Safari|KHTML/i.test(navigator.userAgent), + + isIE: (document.all)? true : false, + + isIE5: ( this.is_ie && /msie 5\.0/i.test(navigator.userAgent) )? true : false, + + evalScripts: function (el) { + el = (typeof el =="string")? $(el) : el; + var scripts = el.getElementsByTagName("script"); + for(var i=0; i < scripts.length;i++) { + eval(scripts[i].innerHTML); + } + }, + + replaceContent: function(responseObj, elId) { + $(elId).innerHTML = responseObj.responseText; + SCIRET.utils.evalScripts(elId); + } + }; +}(); + // ********************************************************* // ** BROWSER DETECTION ** // ********************************************************* @@ -35,15 +74,12 @@ isIE7 = false; } -isSafari = (document.childNodes && !document.all && !navigator.taintEnabled && !navigator.accentColorName)? true : false; - var onloadFunctions = new Array(); // ********************************************************* // ** STATE VARIABLES ** // ********************************************************* var isFavoritesDropdownShown = false; -var isTodosDropdownShown = false; function triggerOnloadFunctions() { for (var i = 0; i < onloadFunctions.length; i++) { @@ -276,24 +312,74 @@ // ********************************************************* // ** CALENDAR FUNCTIONS ** // ********************************************************* -function dateSelected(calendar, date) { - var input_field = $("hiddenDate"); - input_field.value = date; - if (calendar.dateClicked) { - $('dateShow').innerHTML = calendar.date.print(calendar.params.daFormat); - calendar.callCloseHandler(); - $('labelSetDate').style.display = 'none'; - $('removeDateLink').style.display = ''; - } +function dateSelected(type, args, cal) { + var dates = args[0]; + var date = dates[0]; + var year = date[0], month = date[1], day = date[2]; + $("todoHiddenDate").value = year + "-" + month + "-" + day; + $('todoDateShow').innerHTML = formatDate(SCIRET.todos.dateFormat, month, day, year); + cal.hide(); + $('todoLabelSetDate').style.display = 'none'; + $('todoRemoveDateLink').style.display = ''; } function removeDate() { - $('hiddenDate').value = ''; - $('dateShow').innerHTML = ''; - $('labelSetDate').style.display = ''; - $('removeDateLink').style.display = 'none'; + $('todoHiddenDate').value = ''; + $('todoDateShow').innerHTML = ''; + $('todoLabelSetDate').style.display = ''; + $('todoRemoveDateLink').style.display = 'none'; } +/** + * Based on a function from The DHTML Calendar, + * Copyright Mihai Bazon, 2002-2005 | www.bazon.net/mishoo +/* Prints the date in a string according to the given format. +*/ +function formatDate(str, m, d, y) { + var _MN = new Array + ("January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December"); + + var ar = new Array(); + for (var i = 12; i > 0;) { + ar[--i] = _MN[i].substr(0, 3); + } + + var s = {}; + s["%b"] = ar[m]; // abbreviated month name [FIXME: I18N] + s["%d"] = (d < 10) ? ("0" + d) : d; // the day of the month (range 01 to 31) + s["%e"] = d; // the day of the month (range 1 to 31) + s["%m"] = (m < 9) ? ("0" + (1+m)) : (1+m); // month, range 01 to 12 + s["%Y"] = y; // year with the century + s["%%"] = "%"; // a literal '%' character + + var re = /%./g; + if (!SCIRET.utils.isIE5 && !SCIRET.utils.isKhtml) { + return str.replace(re, function (par) { return s[par] || par; }); + } + + var a = str.match(re); + for (var i = 0; i < a.length; i++) { + var tmp = s[a[i]]; + if (tmp) { + re = new RegExp(a[i], 'g'); + str = str.replace(re, tmp); + } + } + + return str; +}; + // ********************************************************* // ** Favorites FUNCTIONS ** // ********************************************************* @@ -307,8 +393,8 @@ return; } - if (isTodosDropdownShown) { - isTodosDropdownShown = false; + if (SCIRET.todos.isTodosDropdownShown) { + SCIRET.todos.setIsTodosDropdownShown(false); $('todosDropdown').style.display = 'none'; } @@ -331,7 +417,7 @@ var favoritesDropdown = YAHOO.util.Dom.get('favoritesDropdown'); favoritesDropdown.innerHTML = responseObj.responseText; - if (isSafari) { + if (SCIRET.utils.isSafari) { favoritesDropdown.style.paddingBottom = '25px'; } new YAHOO.widget.Effects.BlindDown('favoritesDropdown'); @@ -394,82 +480,203 @@ // ********************************************************* // ** TODOS FUNCTIONS ** // ********************************************************* -function dropdownTodos() { - if (isTodosDropdownShown) { - isTodosDropdownShown = false; - $('todosDropdown').style.display = 'none'; - if (isIE && !isIE7) { - _showSelects(); - } - return; - } +SCIRET.todos = function() { - if (isFavoritesDropdownShown) { - isFavoritesDropdownShown = false; - $('favoritesDropdown').style.display = 'none'; - } + return { + isTodosDropdownShown: false, - showLoading('todosLoading'); - var transaction = YAHOO.util.Connect.asyncRequest('GET', - 'index.php?view=GetTodosDropdown', - { - success: showDropDownTodos, - failure: function() {alert('operation failed')} - }, - null); -} + todoDialog: null, -function showDropDownTodos(responseObj) { - successAjax('todosLoading') - if (isIE && !isIE7) { - _hideSelects(); - } + cal: null, - var todosDropdown = YAHOO.util.Dom.get('todosDropdown'); - todosDropdown.innerHTML = responseObj.responseText; - if (isSafari) { - todosDropdown.style.paddingBottom = '25px'; - } - new YAHOO.widget.Effects.BlindDown('todosDropdown'); + dateFormat: null, - isTodosDropdownShown = true; -} + setIsTodosDropdownShow: function (is) { + isTodosDropdownShown = is; + }, -function showEditTodoForm(todoId) { - if (!todoId) { - todoId = 0; - } + dropdown: function() { + if (this.isTodosDropdownShown) { + this.isTodosDropdownShown = false; + $('todosDropdown').style.display = 'none'; + if (isIE && !isIE7) { + _showSelects(); + } + return; + } - openSimDialog('index.php?view=EditTodo&id=' + todoId, 310, 360); -} + if (isFavoritesDropdownShown) { + isFavoritesDropdownShown = false; + $('favoritesDropdown').style.display = 'none'; + } -function tickTodo(todoId) { - if (!confirm('Are you sure you wish to mark this TO-DO as completed?')) { - $('todoCheck_' + todoId).checked = false; - return; - } - $('todoCheck_' + todoId).style.display = 'none'; - $('todoProgressImg_' + todoId).style.display = 'inline'; + showLoading('todosLoading'); + YAHOO.util.Connect.asyncRequest('GET', + 'index.php?view=GetTodosDropdown', + { + success: this.showDropDownTodos, + failure: function() {alert('operation failed')} + }, + null); + }, - var transaction = YAHOO.util.Connect.asyncRequest('POST', - 'index.php?action=CompleteTodo', - { - success: function (response) {successAjax('todoProgressImg_' + todoId), completeTickTodo(response, todoId)}, - failure: function() {alert('operation failed')} - }, - 'todoId=' + todoId); -} + showDropDownTodos: function(responseObj) { + successAjax('todosLoading') + if (isIE && !isIE7) { + _hideSelects(); + } -function completeTickTodo(responseObj, todoId) { - var responseArr = responseObj.responseText.split('|'); - if (responseArr[0] != 'OK') { - alert('There was a problem trying to complete this TO-DO'); - return; - } + var todosDropdown = YAHOO.util.Dom.get('todosDropdown'); + todosDropdown.innerHTML = responseObj.responseText; + if (SCIRET.utils.isSafari) { + todosDropdown.style.paddingBottom = '25px'; + } + new YAHOO.widget.Effects.BlindDown('todosDropdown'); - $('todoLink_' + todoId).style.textDecoration = 'line-through'; -} + this.isTodosDropdownShown = true; + }, + showForm: function(todoId) { + if (!todoId) { + todoId = 0; + } + + YAHOO.util.Connect.asyncRequest('GET', + 'index.php?view=EditTodo&id=' + todoId, + { + success: this.showEditTodoForm2, + argument: [todoId], + failure: function() {alert('operation failed')}, + scope: this + }, + null); + }, + + showEditTodoForm2: function(responseObj) { + SCIRET.utils.replaceContent(responseObj, 'todoDialog'); + + YAHOO.util.Event.onDOMReady(function() { + YAHOO.util.Event.addListener($("dueDateButton"), + "click", + SCIRET.todos.showCalendar); + }); + + var buttons = [{text: "Save", handler: this.save}]; + if (responseObj.argument > 0) { + buttons.push({text: "Delete", handler: function() {SCIRET.todos.delete(responseObj.argument)}}); + } + buttons.push({text: "Cancel", handler: function() {this.cancel()}}); + + this.todoDialog = new YAHOO.widget.Dialog("todoDialog", + { + fixedcenter: true, + buttons: buttons + }); + this.todoDialog.callback.success = SCIRET.todos.saveCompleted; + this.todoDialog.callback.scope = this; + this.todoDialog.render(); + this.todoDialog.show(); + }, + + showCalendar: function() { + this.cal = new YAHOO.widget.Calendar("todoCalContainer", { + close: true + }); + this.cal.selectEvent.subscribe(dateSelected, this.cal, true); + this.cal.render(); + this.cal.show(); + }, + + // the scope here is the dialog instance + save: function() { + $('todoProgressImg').style.display = 'inline'; + + $('todosDropdown').style.display = 'none'; + SCIRET.todos.isTodosDropdownShown = false; + + this.submit(); + }, + + saveCompleted: function(responseObj) { + try { + var response = YAHOO.lang.JSON.parse(responseObj.responseText); + } catch (e) { + alert("Operation failed. Here's the result returned:\n\n" + responseObj.responseText); + return; + } + alert(response.message); + + this.showForm(response.todoId); + }, + + delete: function(todoId) { + if (!confirm("Are you sure you wish to delete this To-Do?")) { + return; + } + + showLoading('todoProgressImg'); + YAHOO.util.Connect.asyncRequest('POST', + 'index.php?action=DeleteTodo', + { + success: this.deleteCompleted, + failure: function() {alert('operation failed')} + }, + 'todoId='+todoId); + }, + + deleteCompleted: function(responseObj) { + successAjax('todoProgressImg'); + + try { + var response = YAHOO.lang.JSON.parse(responseObj.responseText); + } catch (e) { + alert("Operation failed. Here's the result returned:\n\n" + responseObj.responseText); + return; + } + alert(response.message); + $('todosDropdown').style.display = 'none'; + SCIRET.todos.isTodosDropdownShown = false; + + SCIRET.todos.todoDialog.cancel(); + }, + + tick: function(todoId) { + if (!confirm('Are you sure you wish to mark this TO-DO as completed?')) { + $('todoCheck_' + todoId).checked = false; + return; + } + $('todoCheck_' + todoId).style.display = 'none'; + $('todoProgressImg_' + todoId).style.display = 'inline'; + + YAHOO.util.Connect.asyncRequest('POST', + 'index.php?action=CompleteTodo', + { + success: function (response) {SCIRET.todos.completeTick(response, todoId)}, + failure: function() {alert('operation failed')} + }, + 'todoId=' + todoId); + }, + + completeTick: function(responseObj, todoId) { + successAjax('todoProgressImg_' + todoId); + + try { + var response = YAHOO.lang.JSON.parse(responseObj.responseText); + } catch (e) { + alert("Operation failed. Here's the result returned:\n\n" + responseObj.responseText); + return; + } + + if (typeof response.message != 'undefined') { + alert(response.message); + return; + } + + $('todoLink_' + todoId).style.textDecoration = 'line-through'; + } + }; +}(); + // ********************************************************* // ** HELPER FUNCTIONS ** // ********************************************************* Modified: trunk/style.css =================================================================== --- trunk/style.css 2008-09-16 22:57:52 UTC (rev 678) +++ trunk/style.css 2008-09-16 22:58:24 UTC (rev 679) @@ -200,6 +200,8 @@ background: url(images/bg_content.jpg) repeat-y; } +.clear { clear:both; } + /* ########################## */ /* MENU */ /* ########################## */ Modified: trunk/templates/EditTodo.tpl =================================================================== --- trunk/templates/EditTodo.tpl 2008-09-16 22:57:52 UTC (rev 678) +++ trunk/templates/EditTodo.tpl 2008-09-16 22:58:24 UTC (rev 679) @@ -8,121 +8,44 @@ * @packager Keyboard Monkeys */ --> +<div class="hd"> + {formTitle} + <img id="todoProgressImg" src="images/progress.gif" style="display:none" /> +</div> +<div class="bd"> + <script> + SCIRET.todos.dateFormat = "{jsCalDateFormat}"; + </script> + <form action="{formAction}" method="POST"> + <div id="relatedArtsMessage">{message}</div> + <input type="hidden" name="todoId" value="{todo_id}" /> -<script type="text/javascript"> -function saveTodo(form) { - $('todoProgressImg').style.display = 'inline'; + <label for="title">[l]Title[/l]</label> + <input type="text" name="title" value="{title}" /> + <div class="clear"></div> - opener.isTodosDropdownShown = false; - opener.$('todosDropdown').style.display = 'none'; + <label for="content">[l]Contents[/l]</label> + <textarea id="content" name="content" style="width:170px; height:100px">{content}</textarea> + <div class="clear"></div> - form.submit(); -} + <label for="dueDate">[l]Due Date[/l]</label> + <input type="hidden" id="todoHiddenDate" name="dueDate" value="{dueDate}" /> + <span id="todoDateShow">{dueDateContents}</span> + <img src="images/datepopup.gif" id="dueDateButton" style="cursor:pointer" /> + <div id="todoCalContainer" style="display:none; position:absolute; left:10px; z-index:1"></div> + <span id="todoLabelSetDate" style="display:{labelSetDueDateDisplay}; font: normal 12px sans-serif">([l]Currently none.<br />Click icon to set one.[/l])</span><br /> + <a id="todoRemoveDateLink" href="javascript:void(0);" onclick="removeDate();" style="display:{removeDueDateLinkDisplay};">[l]Remove due date[/l]</a> + <div class="clear"></div> -function deleteTodo() { - new Ajax.Request( - 'index.php?action=DeleteTodo', - { - method : 'post', - parameters : 'todoId=' + {todo_id}, - onLoading : function() {showLoading('todoProgressImg');}, - onComplete : deleteTodoCompleted - } - ); -} + <label for="private">[l]Private[/l]</label> + <input type="checkbox" id="private" name="private" {privateChecked}/> + <div class="clear"></div> -function deleteTodoCompleted(responseObj) { - successAjax('todoProgressImg'); - - if (responseObj.responseText == 'OK') { - opener.isTodosDropdownShown = false; - opener.$('todosDropdown').style.display = 'none'; - - alert('To-Do deleted successfuly'); - setTimeout("window.close();", 100); - } else { - alert('There was a problem trying to delete this To-Do'); - } -} - -</script> -<div id="formWrapper" style="position:relative; background-color: #faf8f3; height:340px; overflow:scroll"> - <div style="text-align:center"> - <div id="relatedArtsMessage" style="display:inline;">{message}</div> + <label for="completed">[l]Completed[/l]</label> + <input type="checkbox" id="completed" name="completed" {completedChecked}/> + <div class="clear"></div> + </form> + <div id="relatedArticlesDiv"> + {relatedArticlesTable} </div> - <div style="position:relative; border:1px solid black"> - <table class="todoTable" cellspacing="1" cellpadding="0" border="0"> - <form action="{formAction}" method="POST"> - <input type="hidden" name="todoId" value="{todo_id}" /> - <tr class="th"> - <td colspan="2" width="1%" style="padding:3px 0 3px 0px; font-weight:bold; text-align:center"> - <div style="position:relative; text-align:center; font-weight:bold;"> - {formTitle} - <span style="position:absolute; right:0"> - <img id="todoProgressImg" src="images/progress.gif" style="display:none" /> - </span> - </div> - </td> - </tr> - <tr class="row_on"> - <td style="font:normal 12px sans-serif; font-weight:bold; text-align:right">[l]Title[/l]:</td> - <td><input type="text" name="title" value="{title}" style="width:170px" /></td> - </tr> - <tr class="row_on"> - <td style="font:normal 12px sans-serif; font-weight:bold; text-align:right" valign="top">[l]Contents[/l]:</td> - <td><textarea name="content" style="width:170px; height:100px">{content}</textarea></td> - </tr> - <tr class="row_on"> - <td style="font:normal 12px sans-serif; font-weight:bold; text-align:right">[l]Due Date[/l]:</td> - <td> - <input type="hidden" id="hiddenDate" name="dueDate" value="{dueDate}" /> - <span id="dateShow">{dueDateContents}</span> - <img src="images/datepopup.gif" id="dueDateButton" style="cursor:pointer" /> - <span id="labelSetDate" style="display:{labelSetDueDateDisplay}; font: normal 12px sans-serif">([l]Currently none.<br />Click icon to set one.[/l])</span><br /> - <a id="removeDateLink" href="javascript:void(0);" onclick="removeDate();" style="display:{removeDueDateLinkDisplay}; font-weight:bold; font-size:10px">[l]Remove due date[/l]</a> - </td> - </tr> - <tr class="row_on"> - <td colspan="2" style="text-align:center"> - <table width="100%" border="0"> - <tr> - <td style="width:1%; font:normal 12px sans-serif; font-weight:bold; text-align:right" valign="bottom">[l]Private[/l]:</td> - <td style="width:1%;" valign="bottom"><input type="checkbox" name="private" {privateChecked}/></td> - <td style="font:normal 12px sans-serif; font-weight:bold; text-align:right" valign="bottom">[l]Completed[/l]:</td> - <td style="width:1%;" valign="bottom"><input type="checkbox" name="completed" {completedChecked}/></td> - </tr> - </table> - </td> - </tr> - <tr class="row_on"> - <td colspan="2" style="text-align:right"> - <input type="button" value="[l]Save[/l]" onclick="saveTodo(form);"/> - <!-- BEGIN deleteButton_block --> - <input type="button" value="[l]Delete[/l]" onclick="deleteTodo();" /> - <!-- END deleteButton_block --> - </td> - </tr> - </form> - </table> - <div id="relatedArticlesDiv"> - {relatedArticlesTable} - </div> - </div> </div> -<script type="text/javascript"> - Calendar.setup( - { - inputField : "hiddenDate", - ifFormat : "%Y-%m-%d", - daFormat : "{jsCalDateFormat}", - button : "dueDateButton", - onSelect : dateSelected - } - ); - <!-- BEGIN adjustWinSize_block --> - _adjustWinSize(300, 460); - $('formWrapper').style.height = '450px'; - <!-- END adjustWinSize_block --> -</script> -</body> -</html> Modified: trunk/templates/TodosDropdown.tpl =================================================================== --- trunk/templates/TodosDropdown.tpl 2008-09-16 22:57:52 UTC (rev 678) +++ trunk/templates/TodosDropdown.tpl 2008-09-16 22:58:24 UTC (rev 679) @@ -15,10 +15,10 @@ <!-- BEGIN todoItem_block --> <li> <!-- BEGIN checkTodo_block --> - <input id="todoCheck_{todoId}" type="checkbox" onchange="tickTodo({todoId})" /><img id="todoProgressImg_{todoId}" src="images/progress.gif" style="display:none" /> + <input id="todoCheck_{todoId}" type="checkbox" onchange="SCIRET.todos.tick({todoId})" /><img id="todoProgressImg_{todoId}" src="images/progress.gif" style="display:none" /> <!-- END checkTodo_block --> <!-- BEGIN linkTodo1_block --> - <a id="todoLink_{todoId}" href="javascript:void(0)" onclick="showEditTodoForm({todoId})" style="text-decoration:{textDecoration}; {colorStyle}"> + <a id="todoLink_{todoId}" href="javascript:void(0)" onclick="SCIRET.todos.showForm({todoId})" style="text-decoration:{textDecoration}; {colorStyle}"> <!-- END linkTodo1_block --> <span class="headerLinks" {descriptionPopup}>{todoTitle}</span> <!-- BEGIN linkTodo2_block --> @@ -41,5 +41,5 @@ <div class="headerLinks" style="text-align:center">[l]You have no To-Do's[/l]</div> <!-- END noTodos_block --> - <p class="add"><span class="button_green"><a href="javascript:void(0)" onclick="showEditTodoForm()">[l]Add new[/l]</a></span></p> + <p class="add"><span class="button_green"><a href="javascript:void(0)" onclick="SCIRET.todos.showForm()">[l]Add new[/l]</a></span></p> </div> Modified: trunk/templates/footer.tpl =================================================================== --- trunk/templates/footer.tpl 2008-09-16 22:57:52 UTC (rev 678) +++ trunk/templates/footer.tpl 2008-09-16 22:58:24 UTC (rev 679) @@ -64,7 +64,7 @@ <!-- BEGIN todosLink_block --> <div class="panel" id="favorites"> <div class="panel_title"> - <a href="javascript:void(0)" onclick="dropdownTodos();">[l]ToDo[/l]</a> + <a href="javascript:void(0)" onclick="SCIRET.todos.dropdown();">[l]ToDo[/l]</a> <img id='todosLoading' src='images/progress.gif' style='visibility:hidden' /> </div> <div class="inside_panel" id="todosDropdown"></div> Modified: trunk/templates/head.tpl =================================================================== --- trunk/templates/head.tpl 2008-09-16 22:57:52 UTC (rev 678) +++ trunk/templates/head.tpl 2008-09-16 22:58:24 UTC (rev 679) @@ -6,6 +6,8 @@ <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" type="text/css" href="javascript/yui/build/assets/skins/sam/skin.css"> <link type="text/css" rel="stylesheet" href="javascript/yui/build/logger/assets/skins/sam/logger.css"> + <link rel="stylesheet" type="text/css" href="javascript/yui/build/container/assets/skins/sam/container.css"> + <link rel="stylesheet" type="text/css" href="javascript/yui/build/calendar/assets/skins/sam/calendar.css"> <link rel="stylesheet" href="style.css" type="text/css" media="screen" charset="utf-8"/> <!--[if IE 6]><link rel="stylesheet" href="style_ie6.css" type="text/css" media="screen" charset="utf-8"><![endif]--> <!--[if IE 7]><link rel="stylesheet" href="style_ie7.css" type="text/css" media="screen" charset="utf-8"><![endif]--> @@ -16,14 +18,16 @@ <![endif]-> <!-- basic YUI libraries --> <script type="text/javascript" src="javascript/yui/build/yahoo-dom-event/yahoo-dom-event.js"></script> + <script type="text/javascript" src="javascript/yui/build/connection/connection.js"></script> <script type="text/javascript" src="javascript/tools-min.js"></script> - <script type="text/javascript" src="javascript/yui/build/container/container_core-min.js"></script> <script type="text/javascript" src="javascript/yui/build/element/element-beta-min.js"></script> <script type="text/javascript" src="javascript/yui/build/dragdrop/dragdrop-min.js"></script> + <script type="text/javascript" src="javascript/yui/build/container/container.js"></script> <script type="text/javascript" src="javascript/yui/build/animation/animation-min.js"></script> <script type="text/javascript" src="javascript/yui/build/button/button-min.js"></script> - <script type="text/javascript" src="javascript/yui/build/connection/connection-min.js"></script> + <script type="text/javascript" src="javascript/yui/build/calendar/calendar-min.js"></script> <script type="text/javascript" src="javascript/yui/build/logger/logger-min.js"></script> + <script type="text/javascript" src="javascript/yui/build/json/json-min.js"></script> <!-- required by effects.js --> <script type="text/javascript" src="javascript/effects-min.js"></script> @@ -31,10 +35,6 @@ <script type="text/javascript" src="javascript/general.js"></script> <script type="text/javascript" src="javascript/simModal.js"></script> <script type="text/javascript" src="javascript/overlib.js"></script> - <style type="text/css">@import url(javascript/jscalendar/calendar-blue.css);</style> - <script type="text/javascript" src="javascript/jscalendar/calendar.js"></script> - <script type="text/javascript" src="javascript/jscalendar/lang/calendar-en.js"></script> - <script type="text/javascript" src="javascript/jscalendar/calendar-setup.js"></script> <!-- BEGIN rtl_block --> <style> input, textarea { @@ -48,3 +48,4 @@ // var myLogReader = new YAHOO.widget.LogReader(); </script> <div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div> + <div id="todoDialog"></div> Modified: trunk/views/EditTodo.php =================================================================== --- trunk/views/EditTodo.php 2008-09-16 22:57:52 UTC (rev 678) +++ trunk/views/EditTodo.php 2008-09-16 22:58:24 UTC (rev 679) @@ -18,8 +18,6 @@ $todoId = isset($_GET['id'])? (int)$_GET['id'] : 0; $this->tpl->set_file('editTodo', 'EditTodo.tpl'); - $this->tpl->set_block('editTodo', 'adjustWinSize_block', 'adjustWinSize'); - $this->tpl->set_block('editTodo', 'deleteButton_block', 'deleteButton'); if (isset($_GET['message'])) { $this->tpl->set_var('message', '<span class="successMessage"> '.$_GET['message'].' </span>'); @@ -67,8 +65,6 @@ $relatedArticles->setTemplate($this->tpl); $this->tpl->set_var('relatedArticlesTable', $relatedArticles->dispatch(true)); - $this->tpl->parse('deleteButton', 'deleteButton_block'); - $this->tpl->parse('adjustWinSize', 'adjustWinSize_block'); } else { $this->tpl->set_var(array( 'formTitle' => $this->user->lang('NEW TO-DO'), This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <al...@us...> - 2008-09-16 16:09:06
|
Revision: 680 http://sciret.svn.sourceforge.net/sciret/?rev=680&view=rev Author: alpeb Date: 2008-09-16 23:09:03 +0000 (Tue, 16 Sep 2008) Log Message: ----------- fixed little jump when popping-up the todo popup Modified Paths: -------------- trunk/javascript/general.js trunk/templates/head.tpl Modified: trunk/javascript/general.js =================================================================== --- trunk/javascript/general.js 2008-09-16 22:58:24 UTC (rev 679) +++ trunk/javascript/general.js 2008-09-16 23:09:03 UTC (rev 680) @@ -575,6 +575,9 @@ this.todoDialog.callback.success = SCIRET.todos.saveCompleted; this.todoDialog.callback.scope = this; this.todoDialog.render(); + + $('todoDialog').style.display = "block"; + this.todoDialog.show(); }, Modified: trunk/templates/head.tpl =================================================================== --- trunk/templates/head.tpl 2008-09-16 22:58:24 UTC (rev 679) +++ trunk/templates/head.tpl 2008-09-16 23:09:03 UTC (rev 680) @@ -48,4 +48,4 @@ // var myLogReader = new YAHOO.widget.LogReader(); </script> <div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div> - <div id="todoDialog"></div> + <div id="todoDialog" style="display:none"></div> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |