diff --git a/webtools/partytool/config/database.php b/webtools/partytool/config/database.php index 30d4210f7198..21266d8a1363 100755 --- a/webtools/partytool/config/database.php +++ b/webtools/partytool/config/database.php @@ -6,7 +6,6 @@ class DATABASE_CONFIG { 'host' => 'localhost', 'login' => '', 'password' => '', - 'database' => '', - 'prefix' => ''); + 'database' => ''); } ?> \ No newline at end of file diff --git a/webtools/partytool/config/routes.php b/webtools/partytool/config/routes.php index 68be9b05c718..ca9a6317bc2c 100755 --- a/webtools/partytool/config/routes.php +++ b/webtools/partytool/config/routes.php @@ -1,5 +1,5 @@ connect('/tests', array('controller' => 'tests', 'action' => 'index')); + + $Route->connect('/privacy-policy', array('controller' => 'pages', 'action' => 'privacy')); ?> \ No newline at end of file diff --git a/webtools/partytool/config/sql/dist.sql b/webtools/partytool/config/sql/dist.sql index 7533383be9c4..32935b724da2 100755 --- a/webtools/partytool/config/sql/dist.sql +++ b/webtools/partytool/config/sql/dist.sql @@ -14,19 +14,23 @@ CREATE TABLE IF NOT EXISTS `parties` ( `vname` tinytext, `address` tinytext NOT NULL, `tz` int(2) NOT NULL default '0', - `website` tinytext, + `website` text, `notes` text, `date` int(10) default NULL, - `duration` int(11) default NULL, - `guests` tinytext NOT NULL, + `duration` tinyint(2) NOT NULL default '2', + `guests` text NOT NULL, `confirmed` tinyint(1) NOT NULL default '0', + `canceled` tinyint(1) NOT NULL default '0', + `guestcomments` tinyint(1) NOT NULL default '0', `inviteonly` tinyint(1) NOT NULL default '0', `invitecode` tinytext NOT NULL, `lat` float default NULL, `long` float default NULL, `zoom` tinyint(2) NOT NULL default '8', `useflickr` tinyint(1) NOT NULL default '0', + `flickrperms` tinyint(1) default '0', `flickrid` tinytext NOT NULL, + `flickrusr` tinytext NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; diff --git a/webtools/partytool/controllers/comment_controller.php b/webtools/partytool/controllers/comment_controller.php index f4511ff19397..bce21b3e1ead 100755 --- a/webtools/partytool/controllers/comment_controller.php +++ b/webtools/partytool/controllers/comment_controller.php @@ -12,7 +12,7 @@ * for the specific language governing rights and limitations under the * License. * - * The Original Code is Firefox Party Tool + * The Original Code is Mozilla Party Tool * * The Initial Developer of the Original Code is * Ryan Flint @@ -45,10 +45,10 @@ class CommentController extends AppController { } function add($pid, $uid) { - if (!$this->Session->check('User')) + if (!$this->Session->check('User') || $uid != $_SESSION['User']['id']) $this->redirect('/'); - if (!empty($this->data)) { + if (!empty($this->data) && $this->Comment->canComment($pid, $uid)) { // Explictly destroy the last model to avoid an edit instead of an insert $this->Comment->create(); @@ -60,9 +60,12 @@ class CommentController extends AppController { $this->data['Comment']['time'] = gmmktime(); if ($this->Comment->save($this->data)) { - $this->redirect('/party/view/'.$pid); + $this->redirect('/party/view/'.$pid.'#c'.$this->Comment->getLastInsertID()); } } + + else + $this->redirect('/party/view/'.$pid); } } ?> \ No newline at end of file diff --git a/webtools/partytool/controllers/feeds_controller.php b/webtools/partytool/controllers/feeds_controller.php index 1ccb261880a4..e648db06aa05 100755 --- a/webtools/partytool/controllers/feeds_controller.php +++ b/webtools/partytool/controllers/feeds_controller.php @@ -12,7 +12,7 @@ * for the specific language governing rights and limitations under the * License. * - * The Original Code is Firefox Party Tool + * The Original Code is Mozilla Party Tool * * The Initial Developer of the Original Code is * Ryan Flint @@ -48,6 +48,12 @@ class FeedsController extends AppController { $this->layout = 'ajax'; $this->set('latest', $this->Feed->findAll('', '', 'id DESC', 10, 1)); } + + function users() { + header('Content-type: text/xml'); + $this->layout = 'ajax'; + $this->set('count', $this->Feed->getUserCount()); + } function comments($id = null) { $this->layout = 'ajax'; @@ -67,7 +73,7 @@ class FeedsController extends AppController { function ical() { $this->layout = 'ajax'; - header('Content-type: text/plain'); + header('Content-type: text/calendar'); $weekago = time() - 604800; $this->set('events', $this->Feed->findAll('WHERE date > '. $weekago, '', 'date ASC', 50, 1)); } diff --git a/webtools/partytool/controllers/pages_controller.php b/webtools/partytool/controllers/pages_controller.php index ed9447688ad2..1883e52e2921 100755 --- a/webtools/partytool/controllers/pages_controller.php +++ b/webtools/partytool/controllers/pages_controller.php @@ -12,7 +12,7 @@ * for the specific language governing rights and limitations under the * License. * - * The Original Code is Firefox Party Tool + * The Original Code is Mozilla Party Tool * * The Initial Developer of the Original Code is * Ryan Flint @@ -40,7 +40,12 @@ class PagesController extends AppController { function display() { $this->pageTitle = APP_NAME." - Home"; + $this->set('current', "home"); $this->set('pcount', $this->Page->findCount()); $this->set('ucount', $this->Page->getUsers()); } + + function privacy() { + $this->pageTitle = APP_NAME." - Privacy Policy"; + } } \ No newline at end of file diff --git a/webtools/partytool/controllers/party_controller.php b/webtools/partytool/controllers/party_controller.php index 5a3b69757afb..6047460a8c06 100755 --- a/webtools/partytool/controllers/party_controller.php +++ b/webtools/partytool/controllers/party_controller.php @@ -40,7 +40,6 @@ uses('sanitize'); class PartyController extends AppController { var $name = 'Party'; var $pageTitle; - var $components = array('RequestHandler'); var $components = array('Security'); function beforeFilter() { @@ -51,14 +50,16 @@ class PartyController extends AppController { if (GMAP_API_KEY != null) $this->set('body_args', ' onload="initMashUp()" onunload="GUnload()"'); $this->pageTitle = APP_NAME." - Party Map"; + $this->set('current', "map"); } function register() { if (!$this->Session->check('User')) { - $this->redirect('/user'); + $this->redirect('/user/login'); } $this->pageTitle = APP_NAME." - Register"; + $this->set('current', "create"); $this->set('error', false); if (GMAP_API_KEY != null) @@ -87,6 +88,7 @@ class PartyController extends AppController { $this->data['Party']['date'] = ($offsetdate + $secoffset); $this->data['Party']['owner'] = $_SESSION['User']['id']; + $this->data['Party']['duration'] = intval($this->data['Party']['duration']); $key = null; $chars = "1234567890abcdefghijklmnopqrstuvwxyz"; @@ -129,6 +131,7 @@ class PartyController extends AppController { $party = $this->Party->read(); $this->set('party', $party); $this->pageTitle = APP_NAME." - Edit Party"; + $this->set('current', "create"); if (empty($_SESSION['User']['id'])) $this->redirect('/user/login/'); @@ -139,12 +142,15 @@ class PartyController extends AppController { else { if (empty($this->data)) { $this->data = $party; - - $this->data['Party']['hour_hour'] = intval(date('h', $party['Party']['date'])); - $this->data['Party']['minute_min'] = intval(date('i', $party['Party']['date'])); - $this->data['Party']['month_hour'] = intval(date('m', $party['Party']['date'])); - $this->data['Party']['day_day'] = intval(date('d', $party['Party']['date'])); - $this->data['Party']['year_year'] = intval(date('Y', $party['Party']['date'])); + + $date = array('hour' => intval(date('h', $party['Party']['date'])), + 'min' => intval(date('i', $party['Party']['date'])), + 'mon' => intval(date('m', $party['Party']['date'])), + 'day' => intval(date('d', $party['Party']['date'])), + 'year' => intval(date('Y', $party['Party']['date'])), + 'tz' => $party['Party']['tz']); + + $this->set('date', $date); if (GMAP_API_KEY != null) { if ($this->data['Party']['lat']) @@ -178,10 +184,11 @@ class PartyController extends AppController { $this->data['Party']['year_year']); $this->data['Party']['date'] = ($offsetdate - $secoffset); - $this->data['Party']['owner'] = $_SESSION['User']['id']; - - if (!empty($this->data['Party']['flickrusr'])) { - $params = array('type' => 'flickr', 'userid' => $this->data['Party']['flickrusr']); + $this->data['Party']['owner'] = $party['Party']['owner']; + $this->data['Party']['duration'] = intval($this->data['Party']['duration']); + + if ($this->data['Party']['flickrusr'] != $party['Party']['flickrusr']) { + $params = array('type' => 'flickr', 'username' => $this->data['Party']['flickrusr']); $flick = new webServices($params); $this->data['Party']['flickrid'] = $flick->getFlickrId(); } @@ -195,6 +202,7 @@ class PartyController extends AppController { function view($id = null, $page = null) { if ($id == "all") { $this->pageTitle = APP_NAME." - All Parties"; + $this->set('current', "parties"); $count = $this->Party->findCount(); $pages = ceil($count/10); if ($page == null) @@ -213,12 +221,17 @@ class PartyController extends AppController { $this->set('party', $party); $this->pageTitle = APP_NAME." - ".$party['Party']['name']; - - if ($party['Party']['useflickr'] == 1) { - $data = array('type' => 'flickr', 'userid' => $party['Party']['flickrid']); - $flickr = new webServices($data); - $this->set('flickr', ($flickr->fetchPhotos(FLICKR_TAG_PREFIX.$party['Party']['id'], 8))); + $this->set('current', "parties"); + + if (FLICKR_API_KEY != null) { + if ($party['Party']['useflickr'] == 1) { + $data = array('type' => 'flickr', 'userid' => $party['Party']['flickrid']); + $flickr = new webServices($data); + $photoset = $flickr->fetchPhotos(FLICKR_TAG_PREFIX.$party['Party']['id'], 15, (($party['Party']['flickrperms']) ? false : true)); + $this->set('flickr', array_slice($photoset, 0, 9)); + } } + if (!empty($party['Party']['guests'])) { $guests = explode(',', $party['Party']['guests']); $names = array(); diff --git a/webtools/partytool/controllers/user_controller.php b/webtools/partytool/controllers/user_controller.php index 6ad21ef54784..e4dd2442ecaa 100755 --- a/webtools/partytool/controllers/user_controller.php +++ b/webtools/partytool/controllers/user_controller.php @@ -38,7 +38,6 @@ vendor('mail'); uses('sanitize'); class UserController extends AppController { var $name = 'User'; - var $helpers = array('Html'); var $pageTitle; function index() { @@ -63,6 +62,7 @@ class UserController extends AppController { $this->User->id = $_SESSION['User']['id']; $this->data = $this->User->read(); $this->data['User']['password'] = ""; + $this->set('utz', $this->data['User']['tz']); if (GMAP_API_KEY != null && !empty($this->data['User']['lat'])) $this->set('body_args', @@ -72,7 +72,23 @@ class UserController extends AppController { else { $user = $this->User->findById($_SESSION['User']['id']); $this->User->id = $user['User']['id']; + + $clean = new Sanitize(); + $temp = array('password' => $this->data['User']['password'], + 'confpassword' => $this->data['User']['confpassword'], + 'lat' => $clean->sql($this->data['User']['lat']), + 'long' => $clean->sql($this->data['User']['long']), + 'tz' => $clean->sql($this->data['User']['tz'])); + //Nuke everything else + $clean->cleanArray($this->data); + $this->data['User']['email'] = $user['User']['email']; + $this->data['User']['password'] = $temp['password']; + $this->data['User']['confpassword'] = $temp['confpassword']; + $this->data['User']['lat'] = floatval($temp['lat']); + $this->data['User']['long'] = floatval($temp['long']); + $this->data['User']['tz'] = intval($temp['tz']); + $this->data['User']['role'] = $user['User']['role']; if (!empty($this->data['User']['password'])) { if ($this->data['User']['password'] === $this->data['User']['confpassword']) { @@ -87,18 +103,21 @@ class UserController extends AppController { } else $this->data['User']['password'] = $user['User']['password']; - - + if ($this->User->save($this->data)) { + $sess = $this->User->findById($user['User']['id']); + $this->Session->destroy(); + $this->Session->delete('User'); + $this->Session->write('User', $sess['User']); $this->redirect('/user/'); } } } function view($aUid = null) { - if ($aUid === null || !is_numeric($aUid)) + if (!is_numeric($aUid)) $this->redirect('/'); - + else { $user = $this->User->findById($aUid); $this->pageTitle = APP_NAME." - ".$user['User']['name']; @@ -106,8 +125,8 @@ class UserController extends AppController { if (GMAP_API_KEY != null && !empty($user['User']['lat'])) $this->set('body_args', ' onload="mapInit('.$user["User"]["lat"].', '.$user["User"]["long"].', '.$user["User"]["zoom"].', \'stationary\');" onunload="GUnload()"'); - $parties = $this->User->memberOf($user['User']['id']); - $this->set('parties', $parties); + + $this->set('parties', $this->User->memberOf($user['User']['id'])); $this->set('hparties', $this->User->hostOf($user['User']['id'])); } } @@ -132,6 +151,7 @@ class UserController extends AppController { if (!empty($this->data)) { $clean = new Sanitize(); $temp = array('email' => $this->data['User']['email'], + 'cemail' => $this->data['User']['confemail'], 'password' => $this->data['User']['password'], 'confpassword' => $this->data['User']['confpassword'], 'lat' => $clean->sql($this->data['User']['lat']), @@ -141,6 +161,7 @@ class UserController extends AppController { $clean->cleanArray($this->data); $this->data['User']['email'] = $temp['email']; + $this->data['User']['confemail'] = $temp['cemail']; $this->data['User']['password'] = $temp['password']; $this->data['User']['confpassword'] = $temp['confpassword']; $this->data['User']['lat'] = floatval($temp['lat']); @@ -148,55 +169,68 @@ class UserController extends AppController { $this->data['User']['role'] = 0; $this->data['User']['tz'] = intval($temp['tz']); - if (!$this->User->findByEmail($this->data['User']['email'])) { - if ($this->data['User']['password'] === $this->data['User']['confpassword']) { - if ($this->User->validates($this->data)) { - $string = $this->data['User']['email'].uniqid(rand(), true).$this->data['User']['password']; - $this->data['User']['salt'] = substr(md5($string), 0, 9); - $this->data['User']['password'] = sha1($this->data['User']['password'] . $this->data['User']['salt']); + if ($this->data['User']['email'] === $temp['cemail']) { + if (!$this->User->findByEmail($this->data['User']['email'])) { + if ($this->data['User']['password'] === $this->data['User']['confpassword']) { + if ($this->User->validates($this->data)) { + $string = $this->data['User']['email'].uniqid(rand(), true).$this->data['User']['password']; + $this->data['User']['salt'] = substr(md5($string), 0, 9); + $this->data['User']['password'] = sha1($this->data['User']['password'] . $this->data['User']['salt']); - $key = null; - $chars = "1234567890abcdefghijklmnopqrstuvwxyz"; - for ($i = 0; $i < 10; $i++) { - $key .= $chars{rand(0,35)}; + $key = null; + $chars = "1234567890abcdefghijklmnopqrstuvwxyz"; + for ($i = 0; $i < 10; $i++) { + $key .= $chars{rand(0,35)}; + } + + $this->data['User']['active'] = $key; + + if ($this->User->save($this->data)) { + $message = array('from' => APP_NAME.' <'.APP_EMAIL.'>', + 'envelope' => APP_EMAIL, + 'to' => $this->data['User']['email'], + 'subject' => 'Your '.APP_NAME.' Registration', + 'link' => APP_BASE.'/user/activate/'.$key, + 'type' => 'act'); + + $mail = new mail($message); + $mail->send(); + + if (!empty($this->data['User']['icode'])) + $this->User->addToParty($this->data['User']['icode'], $this->User->getLastInsertID()); + + $this->redirect('/user/login/new'); + } } - $this->data['User']['active'] = $key; - - if ($this->User->save($this->data)) { - $message = array( - 'from' => APP_NAME.' <'.APP_EMAIL.'>', - 'envelope' => APP_EMAIL, - 'to' => $this->data['User']['email'], - 'subject' => 'Your '.APP_NAME.' Registration', - 'link' => APP_BASE.'/user/activate/'.$key, - 'type' => 'act'); - - $mail = new mail($message); - $mail->send(); - - if (!empty($this->data['User']['icode'])) - $this->User->addToParty($this->data['User']['icode'], $this->User->getLastInsertID()); - - $this->redirect('/user/login/new'); + else { + $this->validateErrors($this->User); + $this->data['User']['password'] = null; + $this->data['User']['confpassword'] = null; + $this->render(); } } - + else { - $this->validateErrors($this->User); + $this->User->invalidate('confpassword'); + $this->data['User']['password'] = null; + $this->data['User']['confpassword'] = null; $this->render(); } } - + else { - $this->User->invalidate('password'); - $this->User->invalidate('confpassword'); + $this->User->invalidate('email'); + $this->data['User']['password'] = null; + $this->data['User']['confpassword'] = null; $this->render(); } } else { - $this->User->invalidate('email'); + $this->User->invalidate('confemail'); + $this->data['User']['password'] = null; + $this->data['User']['confpassword'] = null; $this->render(); } } @@ -256,7 +290,7 @@ class UserController extends AppController { $this->render(); } - if ($user['User']['active'] == 1 && $user['User']['password'] == sha1($this->data['User']['password'] . $user['User']['salt'])) { + if ($user['User']['active'] == 1 && $user['User']['password'] == sha1($this->data['User']['password'].$user['User']['salt'])) { $this->Session->write('User', $user['User']); $this->redirect('/user/'); } @@ -268,6 +302,7 @@ class UserController extends AppController { } function logout() { + $this->Session->destroy(); $this->Session->delete('User'); $this->redirect('/'); } @@ -276,8 +311,10 @@ class UserController extends AppController { switch ($aType) { case "password": $this->pageTitle = APP_NAME." - Password Recovery"; + $this->set('atitle', 'Password Recovery'); $this->set('hideInput', false); $this->set('url', 'password'); + if (!empty($this->data)) { $user = $this->User->findByEmail($this->data['User']['email']); @@ -324,6 +361,7 @@ class UserController extends AppController { break; case "activate": $this->pageTitle = APP_NAME." - Resend Activation Code"; + $this->set('atitle', 'Resend Activation Code'); $this->set('hideInput', false); $this->set('url', 'activate'); @@ -373,6 +411,7 @@ class UserController extends AppController { break; default: $this->redirect('/'); + break; } } diff --git a/webtools/partytool/models/comment.php b/webtools/partytool/models/comment.php index 48384b66d7b5..f41525c9a8b3 100755 --- a/webtools/partytool/models/comment.php +++ b/webtools/partytool/models/comment.php @@ -12,7 +12,7 @@ * for the specific language governing rights and limitations under the * License. * - * The Original Code is Firefox Party Tool + * The Original Code is Mozilla Party Tool * * The Initial Developer of the Original Code is * Ryan Flint @@ -40,5 +40,19 @@ class Comment extends AppModel { var $validate = array( 'text' => VALID_NOT_EMPTY ); + + function canComment($pid, $uid) { + $status = $this->query("SELECT guests, guestcomments FROM parties WHERE id = ".$pid); + + if ($status[0]['parties']['guestcomments'] == 1) { + if (in_array($uid, explode(',', $status[0]['parties']['guests']))) + return true; + else + return false; + } + + else + return true; + } } ?> \ No newline at end of file diff --git a/webtools/partytool/models/feed.php b/webtools/partytool/models/feed.php index 51b79434066b..21b7caf39185 100755 --- a/webtools/partytool/models/feed.php +++ b/webtools/partytool/models/feed.php @@ -12,7 +12,7 @@ * for the specific language governing rights and limitations under the * License. * - * The Original Code is Firefox Party Tool + * The Original Code is Mozilla Party Tool * * The Initial Developer of the Original Code is * Ryan Flint @@ -42,5 +42,10 @@ class Feed extends AppModel { $rv = $this->query("SELECT * FROM comments WHERE assoc = ".$aParty." LIMIT 10"); return $rv; } + + function getUserCount() { + $rv = $this->query("SELECT COUNT(*) FROM users"); + return $rv[0][0]['COUNT(*)']; + } } ?> \ No newline at end of file diff --git a/webtools/partytool/models/page.php b/webtools/partytool/models/page.php index 0ff42dae2846..3191011c0a6f 100755 --- a/webtools/partytool/models/page.php +++ b/webtools/partytool/models/page.php @@ -1,4 +1,39 @@ + * Portions created by the Initial Developer are Copyright (C) 2006 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ class Page extends AppModel { var $name = 'Page'; var $useTable = 'parties'; diff --git a/webtools/partytool/models/user.php b/webtools/partytool/models/user.php index 65f8c358e88c..6a54944bd3db 100755 --- a/webtools/partytool/models/user.php +++ b/webtools/partytool/models/user.php @@ -38,8 +38,10 @@ class User extends AppModel { var $name = 'User'; var $validate = array( - 'email' => VALID_EMAIL, - 'password' => VALID_NOT_EMPTY + 'email' => VALID_EMAIL, + 'confemail' => VALID_EMAIL, + 'name' => VALID_NOT_EMPTY, + 'password' => VALID_NOT_EMPTY ); function memberOf($uid) { diff --git a/webtools/partytool/vendors/webServices.php b/webtools/partytool/vendors/webServices.php index 12e02b86af8d..a99670c2ccd3 100755 --- a/webtools/partytool/vendors/webServices.php +++ b/webtools/partytool/vendors/webServices.php @@ -12,7 +12,7 @@ * for the specific language governing rights and limitations under the * License. * - * The Original Code is Firefox Party Tool + * The Original Code is Mozilla Party Tool * * The Initial Developer of the Original Code is * Ryan Flint @@ -78,8 +78,8 @@ class webServices { return $this->userid; } - function fetchPhotos($tags, $num_results) { - $head = "GET /services/rest/?method=flickr.photos.search&api_key=".FLICKR_API_KEY."&user_id=".$this->userid."&tags=".$tags."&per_page=".$num_results." HTTP/1.1\r\n"; + function fetchPhotos($tags, $num_results, $single_user) { + $head = "GET /services/rest/?method=flickr.photos.search&api_key=".FLICKR_API_KEY.(($single_user) ? "&user_id=" : '').$this->userid."&tags=".$tags."&per_page=".$num_results." HTTP/1.1\r\n"; $head .= "Host: ".$this->host."\r\n"; $head .= "Connection: Close\r\n\r\n"; @@ -99,6 +99,9 @@ class webServices { 'title' => $titles[$i][1]); } + // Randomize the results + shuffle($arr); + return $arr; } return 0; diff --git a/webtools/partytool/views/elements/user_options.thtml b/webtools/partytool/views/elements/user_options.thtml index d5ccb5b36210..408c15d1d821 100755 --- a/webtools/partytool/views/elements/user_options.thtml +++ b/webtools/partytool/views/elements/user_options.thtml @@ -1,10 +1,9 @@ -Welcome guest! +Welcome Guest! Login Register Welcome ! My Account Logout - -
\ No newline at end of file + \ No newline at end of file diff --git a/webtools/partytool/views/feeds/ical.thtml b/webtools/partytool/views/feeds/ical.thtml index 6ddb092d84b5..83334f55246b 100755 --- a/webtools/partytool/views/feeds/ical.thtml +++ b/webtools/partytool/views/feeds/ical.thtml @@ -13,7 +13,7 @@ DTSTAMP: LOCATION: SUMMARY: DTSTART: -DURATION:PT2H +DURATION:PTH URL:url('/party/view/'.$event['Feeds']['id'])."\n"; ?> STATUS: DESCRIPTION: diff --git a/webtools/partytool/views/feeds/users.thtml b/webtools/partytool/views/feeds/users.thtml new file mode 100644 index 000000000000..7991e68e914b --- /dev/null +++ b/webtools/partytool/views/feeds/users.thtml @@ -0,0 +1,14 @@ +\n"; ?> + + + + + url('/'); ?> + <?php echo APP_NAME." - Total Users"; ?> + + <?php echo $count; ?> + Total Users + url('/'); ?> + + + \ No newline at end of file diff --git a/webtools/partytool/views/layouts/default.thtml b/webtools/partytool/views/layouts/default.thtml index 457fbca19f23..f073337c0cab 100755 --- a/webtools/partytool/views/layouts/default.thtml +++ b/webtools/partytool/views/layouts/default.thtml @@ -10,14 +10,29 @@ >
-
- Visit Mozilla.com + + + -
- renderElement('user_options'); ?> +
+ +
+ - -
\ No newline at end of file diff --git a/webtools/partytool/views/pages/display.thtml b/webtools/partytool/views/pages/display.thtml index e2e8881edcab..7db92365fdab 100755 --- a/webtools/partytool/views/pages/display.thtml +++ b/webtools/partytool/views/pages/display.thtml @@ -1,24 +1,28 @@ -

- -
-
-

-Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla porta tellus ac leo suscipit euismod. Aenean id ante. Vestibulum consectetuer. Integer diam neque, iaculis eget, ultricies ac, elementum sit amet, risus. Proin blandit. Cras quam. Aenean sollicitudin, lorem vel lobortis bibendum, lorem nibh gravida elit, et aliquam dolor libero bibendum sem. Cras pharetra. Vivamus ligula nisl, mattis sed, molestie nec, interdum ac, massa. In eros pede, dictum at, mollis eu, adipiscing eget, ante. Nunc elit nunc, tincidunt sit amet, tincidunt eu, euismod id, massa. Vivamus molestie. Sed non dui non velit semper egestas. Maecenas vulputate. Quisque sapien. Pellentesque interdum, libero rutrum tincidunt molestie, dui pede eleifend quam, quis tempor sapien ligula et turpis. -Maecenas ut sem. Nam adipiscing sem sit amet magna. Curabitur a risus non ipsum mattis tempor. Fusce in arcu. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed eu diam nec nisi ultrices laoreet. Pellentesque tincidunt, enim nec malesuada tristique, est neque luctus dui, sit amet posuere nunc nulla vel diam. Phasellus pharetra tortor ut massa lacinia adipiscing. Morbi in nulla. Proin ut diam et tortor hendrerit congue. Mauris porttitor fringilla augue. Etiam faucibus rutrum enim. -Maecenas varius massa sit amet nulla. Nunc sit amet mauris. Nunc eu purus a sapien aliquam aliquam. Donec sodales commodo dolor. Fusce volutpat. Sed quis ipsum nec dolor facilisis facilisis. Fusce leo massa, tincidunt in, sodales eu, sodales nec, libero. Etiam vehicula. Ut egestas. Ut consectetuer dolor ac est. Phasellus viverra euismod nisl. Nunc ut felis nec erat vulputate ullamcorper. Praesent rhoncus cursus nunc. Quisque elementum. Etiam euismod erat sit amet lorem. -

-
- -
\ No newline at end of file + //Tuesday, October 24th 2006, 23:59:59 + $difference = 1161734399 - time(); + $days_left = floor($difference/60/60/24); +?> +
+

+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla porta tellus ac leo suscipit euismod. Aenean id ante. Vestibulum consectetuer. Integer diam neque, iaculis eget, ultricies ac, elementum sit amet, risus. Proin blandit. Cras quam. Aenean sollicitudin, lorem vel lobortis bibendum, lorem nibh gravida elit, et aliquam dolor libero bibendum sem. Cras pharetra. Vivamus ligula nisl, mattis sed, molestie nec, interdum ac, massa. In eros pede, dictum at, mollis eu, adipiscing eget, ante. Nunc elit nunc, tincidunt sit amet, tincidunt eu, euismod id, massa. Vivamus molestie. Sed non dui non velit semper egestas. Maecenas vulputate. Quisque sapien. Pellentesque interdum, libero rutrum tincidunt molestie, dui pede eleifend quam, quis tempor sapien ligula et turpis. + Maecenas ut sem. Nam adipiscing sem sit amet magna. Curabitur a risus non ipsum mattis tempor. Fusce in arcu. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed eu diam nec nisi ultrices laoreet. Pellentesque tincidunt, enim nec malesuada tristique, est neque luctus dui, sit amet posuere nunc nulla vel diam. Phasellus pharetra tortor ut massa lacinia adipiscing. Morbi in nulla. Proin ut diam et tortor hendrerit congue. Mauris porttitor fringilla augue. Etiam faucibus rutrum enim. + Maecenas varius massa sit amet nulla. Nunc sit amet mauris. Nunc eu purus a sapien aliquam aliquam. Donec sodales commodo dolor. Fusce volutpat. Sed quis ipsum nec dolor facilisis facilisis. Fusce leo massa, tincidunt in, sodales eu, sodales nec, libero. Etiam vehicula. Ut egestas. Ut consectetuer dolor ac est. Phasellus viverra euismod nisl. Nunc ut felis nec erat vulputate ullamcorper. Praesent rhoncus cursus nunc. Quisque elementum. Etiam euismod erat sit amet lorem. +

+
+
+
+
".(($pcount == 1) ? ' Party' : ' Parties'); ?> +
+ iCALRSS +
+
+
+
".(($ucount == 1) ? ' Partygoer' : ' Partygoers'); ?> +
+ RSS +
+
+

".(($days_left == 1) ? ' Day' : ' Days'); ?> left until Firefox 2!
+
+
\ No newline at end of file diff --git a/webtools/partytool/views/pages/privacy.thtml b/webtools/partytool/views/pages/privacy.thtml new file mode 100644 index 000000000000..30b62d7b3ae6 --- /dev/null +++ b/webtools/partytool/views/pages/privacy.thtml @@ -0,0 +1,42 @@ +

Mozilla Privacy Policy

+ +

Website Visitors

+ +

Except as described below, the Mozilla Foundation and the Mozilla Corporation (collectively "Mozilla") do not collect or require visitors to its Web sites to furnish personally-identifying information such as names, email addresses and phone numbers. Like most Web site operators, Mozilla does collect non-personally-identifying information of the sort that web browsers and servers typically make available, such as the browser type, language preference, referring site, and date and time of each visitor request. Mozilla also collects potentially personally-identifying information like Internet Protocol (IP) addresses, which are non-personally-identifying in and of themselves but could be used in conjunction with other information to personally identify users.

+ +

Mozilla's purpose in collecting this information is to better understand how Mozilla's visitors use its Web sites. To that end, Mozilla may share potentially personally-identifying information with its employees, contractors and affiliated organizations. Mozilla may also release non-personally-identifying information about visitors, e.g. by publishing a report on Web site usage trends. Otherwise, Mozilla will not publicly release potentially personally-identifying information except under the same circumstances as Mozilla releases personally-identifying information. Those circumstances are explained in detail below.

+ +

Community Members

+ +

Certain members of the Mozilla community (contributors, customers, etc.) choose to interact with Mozilla in ways that require Mozilla and others to know more about them. The amount and type of information that Mozilla gathers from those members depends on the nature of the interaction. For example, members who wish to post content to certain portions of Mozilla's Web sites are asked to provide usernames that identify that content as having been posted by a particular member. Developers, by comparison, are asked to provide contact information, up to and sometimes including telephone or fax numbers, so that they can be contacted as necessary. Customers of the Mozilla store are asked to provide even more information, including billing and shipping addresses and credit card or similar information. In each case, Mozilla collects personally-identifying information only insofar as is necessary to fulfill the purpose of the community member's interaction with Mozilla.

+ +

Mozilla is an open organization that believes in sharing as much information as possible about its products, its operations and its associations. Accordingly, community members should assume - as should most folks who interact with Mozilla - that any personally-identifying information provided to Mozilla will be made available to the public. There are three broad exceptions to that rule:

+ +
    + +
  1. Mozilla does not publicly release information gathered in connection with commercial transactions (i.e., transactions involving money), including transactions conducted through the Mozilla Store.
  2. +
  3. Mozilla does not make publicly available information that is used to authenticate users the publication of which would compromise the security of Mozilla's Web sites (e.g., passwords).
  4. +
  5. Mozilla does not make publicly available information that it specifically promises at the time of collection to maintain in confidence.
  6. +
+ +

Outside those three contexts, users should assume that personally-identifying information provided through Mozilla's Web sites will be made available to the public.

+ +

Interactive Product Features

+ +

Certain Mozilla products contain features that report, or that permit users to report, the user's usage patterns and problems - whether caused by Mozilla's software, third party software, or third-party Web sites - to Mozilla. The reports generated by these features typically include non-personally-identifying information such as the configuration of the user's computer and the code running at the time the problem occurred. Some of these features give users the option of providing personally-identifying information, though none of these features require it. Some Mozilla software features that do permit users to provide personally-identifying information advise in advance that such information will not be made publicly available. Mozilla analyzes the information provided by these interactive product features to develop a better understanding of how its products are performing and being used. It does not use the information to track the usage of its products by identifiable individuals.

+ +

Cookies

+ +

A cookie is a string of information that a Web site stores on a visitor's computer, and that the visitor's browser provides to the Web site each time the visitor returns. Mozilla's Web sites use cookies to help Mozilla identify and track visitors, their usage of Mozilla Web sites, and their Web site access preferences across multiple requests and visits to Mozilla's Web sites. It is possible to link cookies to personally-identifying information, thereby permitting Web site operators to track the online movements of particular individuals. Mozilla, however, does not do so. Instead, it uses the information provided by cookies to develop a better understanding of how Mozilla's visitors use, and to facilitate those visitors' interactions with, Mozilla's Web sites. Mozilla visitors who do not wish to have cookies placed on their computers by Mozilla or its contractors should set their browsers to refuse cookies before linking to Mozilla's Web sites. Certain features of Mozilla's Web sites may not function properly without the aid of cookies.

+ +

Protection of Certain Personally-Identifying Information

+ +

Where Mozilla has collected personally-identifying information subject to one of the three exceptions described in the Contributors and Customers section, above, it discloses that information only to those of its employees, contractors and affiliated organizations that need to know that information in order to process it on Mozilla's behalf and that have agreed not to disclose it to others. Some of those employees, contractors and affiliated organizations may be located outside of your home country; by using Mozilla's Web sites, you consent to the transfer of your information to them. Mozilla does not rent or sell such information to anyone. Other than to its employees, contractors and affiliated organizations, as described above, Mozilla discloses such information only when required to do so by law, or when Mozilla believes in good faith that disclosure is reasonably necessary to protect the property or rights of Mozilla, members of the Mozilla community, or the public at large. Mozilla takes all measures reasonably necessary to protect against the unauthorized access, use, alteration or destruction of such information

+ +

Updating of Personally-Identifying Information

+ +

Mozilla permits users to freely update and correct their personally-identifying information as maintained by Mozilla. To do so, users need only look for the links and other tools available on Mozilla's Web sites or contact Mozilla by email.

+ +

Privacy Policy Changes

+ +

Although changes are likely to be minor, Mozilla may change its Privacy Policy from time to time. Any and all changes will be reflected on this page. Substantive changes will also be announced through the standard mechanisms through which Mozilla communicates with the Mozilla community, including Mozilla's "mozilla-announce" mailing lists.

\ No newline at end of file diff --git a/webtools/partytool/views/party/edit.thtml b/webtools/partytool/views/party/edit.thtml index e25666f00965..764940ea28d8 100755 --- a/webtools/partytool/views/party/edit.thtml +++ b/webtools/partytool/views/party/edit.thtml @@ -1,22 +1,21 @@ -
+ hidden('Party/id'); ?> +

Details

-

Details

-
- - input('Party/name', array('size' => 35)); ?> + + input('Party/name', array('size' => 40)); ?>
- - input('Party/vname', array('size' => 35)); ?> + + input('Party/vname', array('size' => 40)); ?>
- - input('Party/website', array('size' => 35)); ?> + + input('Party/website', array('size' => 40)); ?>
- - input('Party/address', array('size' => 35, 'id' => 'location', 'onkeypress' => 'capture(event)', 'onblur' => 'update()')); ?> + + input('Party/address', array('size' => 40, 'id' => 'location', 'onkeypress' => 'capture(event)', 'onblur' => 'update()')); ?>
@@ -45,76 +44,82 @@ } //]]> -
- -
+

+
+ + textarea('Party/notes', array('rows' => 10, 'cols' => 50)); ?> +
+

Date

+
+ + yearOptionTag('Party/year', null, date('Y'), MAX_YEAR, $date['year'], null, null, false); ?>-hourOptionTag('Party/month', null, false, $date['mon']); ?>-dayOptionTag('Party/day', null, $date['day'], null, false); ?>
- Additional notes:
- textarea('Party/notes'); ?> -
-
-

Date

-
- - yearOptionTag('Party/year', null, date('Y'), MAX_YEAR, date('Y'), null, null, false); ?>-hourOptionTag('Party/month', null, false, date('m')); ?>-dayOptionTag('Party/day', null, date('d'), null, false); ?> -
-
- - hourOptionTag('Party/hour', null, true);?>:minuteOptionTag('Party/minute');?> + + hourOptionTag('Party/hour', null, true, $date['hour']);?>:minuteOptionTag('Party/minute', null, $date['min']);?> radio('Party/confirmed', array(0 => 'Tentative', 1 => 'Confirmed')); ?>
- - + + 'GMT-12', + '-11' => 'GMT-11', + '-10' => 'GMT-10', + '-9' => 'GMT-9', + '-8' => 'GMT-8', + '-7' => 'GMT-7', + '-6' => 'GMT-6', + '-5' => 'GMT-5', + '-4' => 'GMT-4', + '-3' => 'GMT-3', + '-2' => 'GMT-2', + '-1' => 'GMT-1', + '0' => 'GMT+0', + '1' => 'GMT+1', + '2' => 'GMT+2', + '3' => 'GMT+3', + '4' => 'GMT+4', + '5' => 'GMT+5', + '6' => 'GMT+6', + '7' => 'GMT+7', + '8' => 'GMT+8', + '9' => 'GMT+9', + '10' => 'GMT+10', + '11' => 'GMT+11', + '12' => 'GMT+12'); + + echo $html->selectTag('Party/tz', $tzs, $date['tz'], null, null, false);?> + (current time is GMT)
-

flickr integration

-
-

To show photos of your party, simply tag them with and fill out the information below.

- - checkbox('Party/useflickr'); ?>
- - radio('Party/flickruse', array(0 => 'Only my photos', 1 => 'Anyone\'s photos')); ?>
- - input('Party/flickrusr', array('size' => 35)); ?> + + input('Party/duration', array('size' => 5)); ?> +
+

flickrTM Options

+

To show photos of your party, simply tag them with and fill out the information below.

+
+ + checkbox('Party/useflickr'); ?> +
+

To show photos from anyone using your party's tag, please note that no photos will show until two or more people are using the tag.

+
+ + radio('Party/flickrperms', array(0 => 'Only my photos', 1 => 'Anyone\'s photos')); ?>
-

Privacy

-
- - checkbox('Party/inviteonly'); ?>
- - checkbox('Party/guestsonly'); ?>
- - checkbox('Party/guestcomments'); ?>
+ + input('Party/flickrusr', array('size' => 40)); ?>
+

Privacy

+
+ + checkbox('Party/inviteonly'); ?> +
+
+ + checkbox('Party/guestcomments'); ?> +
+
hidden('Party/lat', array('id' => 'lat')); echo $html->hidden('Party/long', array('id' => 'long')); echo $html->hidden('Party/zoom', array('id' => 'zoom')); diff --git a/webtools/partytool/views/party/index.thtml b/webtools/partytool/views/party/index.thtml index d6fa109da458..ea9ec8d15596 100755 --- a/webtools/partytool/views/party/index.thtml +++ b/webtools/partytool/views/party/index.thtml @@ -3,5 +3,5 @@ type="text/javascript"> -
+
\ No newline at end of file diff --git a/webtools/partytool/views/party/invite.thtml b/webtools/partytool/views/party/invite.thtml new file mode 100644 index 000000000000..ae9423622808 --- /dev/null +++ b/webtools/partytool/views/party/invite.thtml @@ -0,0 +1,15 @@ + +
+

An email has been sent to . You can invite another + guest below or go back to your party. +

+
+ +

Since your party is invite only, you'll need to invite your guests. You can do this by + entering their email address into the field below, or by handing them a link to +

+ + +input('Party/einvite')."\n".$html->submit('Submit')."\n"; ?> +tagErrorMsg('Party/einvite', 'Invalid email address')?> + \ No newline at end of file diff --git a/webtools/partytool/views/party/register.thtml b/webtools/partytool/views/party/register.thtml index bd1e5ccce9bb..438ecfd55237 100755 --- a/webtools/partytool/views/party/register.thtml +++ b/webtools/partytool/views/party/register.thtml @@ -1,30 +1,39 @@ +

Create a Party

-

There was an error in your submission, please try again.

+
+ There was an error in your submission, please try again. +
-
+
- - input('Party/name', array('size' => 35)); ?> + + input('Party/name', array('size' => 40)); ?>
- - input('Party/vname', array('size' => 35)); ?> + + input('Party/vname', array('size' => 40)); ?>
- - input('Party/address', array('size' => 35, 'id' => 'location', 'onkeypress' => 'capture(event)', 'onblur' => 'update()')); ?> + + input('Party/address', array('size' => 40, 'id' => 'location', 'onkeypress' => 'capture(event)', 'onblur' => 'update()')); ?>
+

Enter your party's time and date (in your local time) here. If you're not ready to commit to a specific time or date, select the 'Tentative' + radio button. Otherwise select 'Confirmed'.

- + yearOptionTag('Party/year', null, date('Y'), MAX_YEAR, date('Y'), null, null, false); ?>-hourOptionTag('Party/month', null, false, date('m')); ?>-dayOptionTag('Party/day', null, date('d'), null, false); ?>
- + hourOptionTag('Party/hour', null, true);?>:minuteOptionTag('Party/minute');?> radio('Party/confirmed', array(0 => 'Tentative', 1 => 'Confirmed')); ?>
- - @@ -51,24 +60,27 @@ + (this page was loaded at GMT)
- - input('Party/website', array('size' => 35)); ?> + + input('Party/duration', array('size' => 5)); ?>
+

Enter a website (complete with http://) that guests can visit to learn more about your party. If you don't have one, simply leave it blank.

- + + input('Party/website', array('size' => 40)); ?> +
+

If you choose to make your party invite only, you will have to send guests an invite containing a random invite code to allow them to join your party.

+
+ checkbox('Party/inviteonly'); ?>
-
- Additional notes:
- textarea('Party/notes'); ?> -
- -
- -
-
+

Drag the map or the marker to specify a location. Set the zoom by using the '+' or '-' buttons on the left.

+

hidden('Party/lat', array('id' => 'lat')); echo $html->hidden('Party/long', array('id' => 'long')); echo $html->hidden('Party/zoom', array('id' => 'zoom')); echo $html->hidden('Party/geocoded', array('id' => 'geocoded', 'value' => 0)); ?> +
+ + textarea('Party/notes', array('rows' => 10, 'cols' => 50)); ?> +
submit('Register'); ?>
\ No newline at end of file diff --git a/webtools/partytool/views/party/view.thtml b/webtools/partytool/views/party/view.thtml index 051e2b77e70b..67b035e08be4 100755 --- a/webtools/partytool/views/party/view.thtml +++ b/webtools/partytool/views/party/view.thtml @@ -1,6 +1,8 @@ - +

+
Host: '.$host; ?>
\n"; echo 'Date: '.(($party['Party']['confirmed'] == 1) ? gmdate('Y-m-d h:ia', $party['Party']['date'] + (@$_SESSION['User']['tz'] * 60 * 60))." GMT".@$_SESSION['User']['tz'] : "TBA")."
\n"; + echo 'Duration: '.$party['Party']['duration']." hours\n
"; if (!empty($party['Party']['website'])) echo 'Website: '.$party['Party']['website']."
\n"; @@ -21,8 +24,8 @@ -
-

Who's coming

+
+

Who's coming



url('/party/edit/'.$party['Party']['id']);?>">Edit party Invite a guest - -

Photos

- - ">"/> - -
+

Photos

+
+ +

No photos yet, tag your flickr pictures with to display them here.

+ + ">" title=""/> + +
+
-

Comments

+

Comments

-
-
Posted by - on +
+ +

Posted by + on
+
-

Add a comment

+ if (isset($_SESSION['User'])): + if ($party['Party']['guestcomments'] && $isguest): ?> +

Add a comment

textarea('Comment/text', array('rows' => 10, 'cols' => 50))."
".$html->submit('Submit'); ?>
- - + url('/party/view/all/'.$next).'">Next Page'; $i = 0; - foreach ($parties as $party): - if ($i % 2 == 0) - $color = "white"; - else - $color = "#DDD"; - $i++; ?> -
-

- \n"; - - if (!empty($party['Party']['vname'])) - echo 'Venue: '.$party['Party']['vname']."
\n"; + foreach ($parties as $party): ?> +
+

+

+ \n"; + + if (!empty($party['Party']['vname'])) + echo 'Venue: '.$party['Party']['vname']."
\n"; - echo 'Date: '.(($party['Party']['confirmed'] == 1) ? gmdate('Y-m-d h:ia', $party['Party']['date'] + (@$_SESSION['User']['tz'] * 60 * 60))." GMT".@$_SESSION['User']['tz'] : "TBA")."
\n"; - - if (!empty($party['Party']['website'])) - echo 'Website: '.$party['Party']['website']."
\n"; - - echo 'View Party'; - - ?> + echo 'Date: '.(($party['Party']['confirmed'] == 1) ? gmdate('Y-m-d h:ia', $party['Party']['date'] + (@$_SESSION['User']['tz'] * 60 * 60))." GMT".@$_SESSION['User']['tz'] : "TBA")."
\n"; + + if (!empty($party['Party']['website'])) + echo 'Website: '.$party['Party']['website']."
\n"; + + echo 'View Party'; + ?> +

-

There was an error in your submission, please try again.

+
+ There was an error in your submission, please try again. +
-
+ hidden('User/id'); ?> +

Profile

-

Profile

-
- - input('User/name', array('size' => 20)); ?> + + input('User/name', array('size' => 40)); ?>
- - input('User/website', array('size' => 20)); ?> + + input('User/website', array('size' => 40)); ?>
- - input('User/location', array('id' => 'location', 'size' => 20, 'onkeypress' => 'capture(event)')); ?> + + input('User/location', array('id' => 'location', 'size' => 40, 'onkeypress' => 'capture(event)')); ?> +
+
+ + 'GMT-12', + '-11' => 'GMT-11', + '-10' => 'GMT-10', + '-9' => 'GMT-9', + '-8' => 'GMT-8', + '-7' => 'GMT-7', + '-6' => 'GMT-6', + '-5' => 'GMT-5', + '-4' => 'GMT-4', + '-3' => 'GMT-3', + '-2' => 'GMT-2', + '-1' => 'GMT-1', + '0' => 'GMT+0', + '1' => 'GMT+1', + '2' => 'GMT+2', + '3' => 'GMT+3', + '4' => 'GMT+4', + '5' => 'GMT+5', + '6' => 'GMT+6', + '7' => 'GMT+7', + '8' => 'GMT+8', + '9' => 'GMT+9', + '10' => 'GMT+10', + '11' => 'GMT+11', + '12' => 'GMT+12'); + echo $html->selectTag('User/tz', $tzs, $utz, null, null, false); + ?> + (current time is GMT)
- Update map @@ -38,34 +70,29 @@ } //]]> -
- -
-
-
-

Privacy

-
- - checkbox('User/showemail'); ?>
- - checkbox('User/showloc'); ?>
- - checkbox('User/showmap'); ?>
-
-
-

Password

-
- - password('User/password', array('size' => 20)); ?> - tagErrorMsg('User/password', 'Passwords don\'t match!')?> -
-
- - password('User/confpassword', array('size' => 20)); ?> -
+

hidden('User/lat', array('id' => 'lat')); echo $html->hidden('User/long', array('id' => 'long')); echo $html->hidden('User/zoom', array('id' => 'zoom')); ?> +

Privacy

+
+ + checkbox('User/showemail'); ?>
+ + checkbox('User/showloc'); ?>
+ + checkbox('User/showmap'); ?>
+
+

Password

+
+ + password('User/password', array('size' => 20)); ?> + tagErrorMsg('User/password', 'Passwords don\'t match!')?> +
+
+ + password('User/confpassword', array('size' => 20)); ?> +
submit('Update'); ?>
\ No newline at end of file diff --git a/webtools/partytool/views/user/index.thtml b/webtools/partytool/views/user/index.thtml index cb63c695045d..8aeac82b3342 100755 --- a/webtools/partytool/views/user/index.thtml +++ b/webtools/partytool/views/user/index.thtml @@ -1,25 +1,43 @@ -Parties I'm attending: -url('/party/view/'.$party['parties']['id']).'">'.$party['parties']['name'].''; - echo ($i < $c) ? ', ' : ''; - $i++; - } -?> +

My Profile


-Parties I'm hosting: +

Parties I'm attending

+

url('/party/view/'.$party['parties']['id']).'">'.$party['parties']['name'].''; - echo ($i < $c) ? ', ' : ''; - $i++; + $num_parties = count($parties); + if ($num_parties == 0) + echo 'None yet. Find one!'; + + else { + $c = $num_parties - 1; + $i = 0; + foreach ($parties as $party) { + echo ''.$party['parties']['name'].''; + echo ($i < $c) ? ', ' : ''; + $i++; + } } ?> +

+

Parties I'm hosting

+

+url('/party/register').'">Create one!'; + + else { + $c = $num_parties - 1; + $i = 0; + foreach ($hparties as $party) { + echo ''.$party['parties']['name'].''; + echo ($i < $c) ? ', ' : ''; + $i++; + } + } +?> +

+

Account Options

\ No newline at end of file diff --git a/webtools/partytool/views/user/login.thtml b/webtools/partytool/views/user/login.thtml index 1d2432f3139e..2ba4ee831022 100755 --- a/webtools/partytool/views/user/login.thtml +++ b/webtools/partytool/views/user/login.thtml @@ -1,22 +1,27 @@ +

Login

-

The email address and password you supplied do not match. Please try again.

+
+ The email address and password you supplied do not match. Please try again. +
-
- -
+
+ +
-
-
- - input('User/email', array('size' => 20)); ?> -
-
- - password('User/password', array('size' => 20)); ?> - Forgot your password? -
-
+ +
+ + input('User/email', array('size' => 40)); ?> +
+
+ + password('User/password', array('size' => 40)); ?> +
+
submit('Login'); ?> -
+
+

+ Create an account | Forgot your password? +

\ No newline at end of file diff --git a/webtools/partytool/views/user/recover.thtml b/webtools/partytool/views/user/recover.thtml index 9adf13ec3f27..65aae7242e59 100755 --- a/webtools/partytool/views/user/recover.thtml +++ b/webtools/partytool/views/user/recover.thtml @@ -1,4 +1,5 @@ -
Email address: + input('User/email'); ?> - + password('User/password'); ?>
- + password('User/confirm'); ?>
diff --git a/webtools/partytool/views/user/register.thtml b/webtools/partytool/views/user/register.thtml index c158cf5ebc71..31ce98138920 100755 --- a/webtools/partytool/views/user/register.thtml +++ b/webtools/partytool/views/user/register.thtml @@ -1,32 +1,44 @@ +

Register

-

There was an error in your submission, please try again.

+
+ There was an error in your submission, please try again. +
- + +

Your e-mail address is used as your username to login. You'll also receive a confirmation e-mail to + this address. In order for your account to be activated successfully, you must specify a valid e-mail address.

- - input('User/email', array('size' => 20)); ?> - tagErrorMsg('User/email', 'Email invalid or already registered.')?> + + input('User/email', array('size' => 40)); ?> + tagErrorMsg('User/email', 'The email address you entered is invalid or has already been registered.')?>
- - input('User/name', array('size' => 20)); ?> -
+ + input('User/confemail', array('size' => 40)); ?> + tagErrorMsg('User/confemail', 'The email addresses you entered do not match.')?> +
+

How do you want to be known to visitors of ?

- - password('User/password', array('size' => 20)); ?> - tagErrorMsg('User/password', 'Passwords don\'t match!')?> + + input('User/name', array('size' => 40)); ?> + tagErrorMsg('User/name', 'You must enter a name.')?> +
+

If you choose to enter it, your location will be shown on your profile. This + field is optional. +

+ + input('User/location', array('id' => 'location', 'size' => 40, 'onkeypress' => 'capture(event)')); ?> +
+

If you have a website, enter the URL here. (including the http:// ) Your website will be + shown to site visitors on your author profile page. This field is optional; if you don't + have a website or don't want it linked to from , leave this box blank.

+
+ + input('User/website', array('size' => 40)); ?>
- - password('User/confpassword', array('size' => 20)); ?> -
-
- - input('User/location', array('id' => 'location', 'size' => 20, 'onkeypress' => 'capture(event)')); ?> -
-
- - @@ -53,13 +65,19 @@ + (this page was loaded at GMT)
- - input('User/website', array('size' => 20)); ?> + + password('User/password', array('size' => 40)); ?> + tagErrorMsg('User/password', 'You must enter a password.')?> +
+
+ + password('User/confpassword', array('size' => 40)); ?> + tagErrorMsg('User/confpassword', 'The passwords you supplied do not match.')?>
- Update map @@ -79,15 +97,13 @@ } //]]> -
- -
-
+

Drag the map or the marker to specify a location. Set the zoom by using the '+' or '-' buttons on the left.

+

hidden('User/lat', array('id' => 'lat')); echo $html->hidden('User/long', array('id' => 'long')); echo $html->hidden('User/zoom', array('id' => 'zoom')); - echo $html->hidden('User/icode', array('value' => $icode)); ?> + echo $html->hidden('User/icode', array('value' => @$icode)); ?>
submit('Register'); ?> diff --git a/webtools/partytool/webroot/css/main.css b/webtools/partytool/webroot/css/main.css index a32ed2d97f78..f40f1966ab91 100755 --- a/webtools/partytool/webroot/css/main.css +++ b/webtools/partytool/webroot/css/main.css @@ -21,17 +21,82 @@ margin: 5px 0 5px 0; } -#user { -position: absolute; -right: 0; +#f-left { + width: 75%; + float: left; } -img { border: 1px solid #555 } +#f-right { + width: 25%; + float: right; +} -h2 + hr { padding: 0; margin: 0;} +.cbox { + text-align: center; + border: 1px solid #808080; + background: #eee; + padding: 5px; + margin: 10px; +} + +.ctxt{ + font-size: 200%; + font-weight: bold; +} + +.cfeed { + position: relative; + bottom: 15px; + float: right; + height: 16px; + width: 16px; +} + +.ifeed { + position: relative; + bottom: 15px; + float: right; + height: 16px; + width: 34px; +} + +.required { color: red; font-weight: bold;} + +.fxform div { margin: 1em 0; } + +.label-large, .label-medium, .label-small { + border-bottom: 1px dashed #eee; + float: left; + font-weight: bold; +} + +.label-large { width: 14em; } + +.large-map { width: 700px; height: 500px; margin: 0 auto; } +.med-map-r { width: 500px; height: 300px; margin: 0 auto; } +.med-map-r div { margin: 0; } +.small-map { width: 400px; height: 200px;} +.small-map div { margin: 0; } + +.comment { + border: 1px solid #ccc; + border-top: 0; + padding: 10px 5px 0 5px; +} +.comment-mod { background: #ecedf3; } + +.comment-content { font-size: 125%; padding-bottom: 50px; } +.comment-tag { font-size: 75%; } + +h1 { border-bottom: 1px solid #ccc; + margin-bottom: 0;} + +#footer { padding: 30px 0 20px 0; } + +img { border: none } body { - background: #fff url("/cake/img/body_back.png") top repeat-x; + background: #fff url("../img/body_back.png") top repeat-x; color: #555; font-family: arial, sans-serif; margin: 0 10px; @@ -46,35 +111,112 @@ a { color: #34518c; text-decoration: none; } a:hover { text-decoration: underline; } #container { - width: 742px; - position: relative; + width: 740px; margin: 0 auto; - padding: 22px 0; } #mozilla-com a { - position: absolute; - top: 0; - left: 0; + float: right; display: block; text-indent: -5000em; width: 110px; height: 25px; text-decoration: none; - background: url("/cake/img/mozilla-org.png") no-repeat; + background: url("../img/mozilla-org.png") no-repeat; } +#key-menu { + background: #B2C1C8 url("../img/header-bottom.gif") 0 100% no-repeat; + padding: 0 0 10px 0; + overflow: auto; + margin-bottom: 1em; +} + +* html #key-menu { + overflow: visible; + height: 1px; +} + +#key-menu ul, #key-menu li { + margin: 0; + padding: 0; + list-style: none; +} + +#key-menu ul { + padding: 14px 12px 0 12px; + background: url("../img/header-top.gif") 0 0 no-repeat; +} + +#key-menu li { + float: left; + background: url("../img/tabs.gif") 100% -50px; + padding-right: 5px; + margin-right: 2px; + border-bottom: 1px solid #849CA4; + margin-bottom: -10px; +} + +#key-menu li a, #key-menu li span { + display: block; + float: left; + padding: 3px 15px 2px 20px; + background: url("../img/tabs.gif") 0 -50px; + color: #5A7CBA; + text-decoration: none; +} + +#key-menu li:hover a { + background-position: 0 -100px; +} + +#key-menu li:hover { + background-position: 100% -100px; +} + +#key-menu li.current { + background: url("../img/tabs.gif") 100% 0; + border-bottom-color: white; +} + +#key-menu li.current a, #key-menu li.current span { + background: url("../img/tabs.gif") 0 0; + color: #999; +} + +#key-menu a:focus { outline: none; } + #header { - background: url("/cake/img/header.gif") no-repeat; - color: white; - font-family: Arial; - font-size: 30px; - font-weight: bold; - text-align: center; - height: 127px; + clear: both; + padding-top: 40px; + position: relative; +} * html #header { padding-top: 20px; } + +#header h1 { + height: 46px; + margin: 0; + font-size: 2px; + position: absolute; + top: 0; + left: -4px; + border: none; + z-index: 5000; } -#header a { color: white; text-decoration: none; } +#user { + position: absolute; + right: 0; + top: 9px; + margin-left: 200px; + font-family: tahoma, arial, sans-serif; + font-size: 95%; +} + +.skipLink { + position: absolute; + left: -1200px; + width: 990px; +} #map { border: 1px solid #555; diff --git a/webtools/partytool/webroot/favicon.ico b/webtools/partytool/webroot/favicon.ico index 8c5c557bf7bc..d44438903b75 100755 Binary files a/webtools/partytool/webroot/favicon.ico and b/webtools/partytool/webroot/favicon.ico differ diff --git a/webtools/partytool/webroot/img/feed16.png b/webtools/partytool/webroot/img/feed16.png new file mode 100755 index 000000000000..f21e796414d5 Binary files /dev/null and b/webtools/partytool/webroot/img/feed16.png differ diff --git a/webtools/partytool/webroot/img/firefox-title.png b/webtools/partytool/webroot/img/firefox-title.png new file mode 100755 index 000000000000..d15a519ddfe3 Binary files /dev/null and b/webtools/partytool/webroot/img/firefox-title.png differ diff --git a/webtools/partytool/webroot/img/header-bottom.gif b/webtools/partytool/webroot/img/header-bottom.gif new file mode 100755 index 000000000000..c5036808eea1 Binary files /dev/null and b/webtools/partytool/webroot/img/header-bottom.gif differ diff --git a/webtools/partytool/webroot/img/header-top.gif b/webtools/partytool/webroot/img/header-top.gif new file mode 100755 index 000000000000..03972f77fbd0 Binary files /dev/null and b/webtools/partytool/webroot/img/header-top.gif differ diff --git a/webtools/partytool/webroot/img/header.gif b/webtools/partytool/webroot/img/header.gif deleted file mode 100755 index 7930671185c1..000000000000 Binary files a/webtools/partytool/webroot/img/header.gif and /dev/null differ diff --git a/webtools/partytool/webroot/img/header.png b/webtools/partytool/webroot/img/header.png deleted file mode 100755 index 472f91b93c5c..000000000000 Binary files a/webtools/partytool/webroot/img/header.png and /dev/null differ diff --git a/webtools/partytool/webroot/img/ical.png b/webtools/partytool/webroot/img/ical.png new file mode 100755 index 000000000000..cef3e5a57d69 Binary files /dev/null and b/webtools/partytool/webroot/img/ical.png differ diff --git a/webtools/partytool/webroot/img/tabs.gif b/webtools/partytool/webroot/img/tabs.gif new file mode 100755 index 000000000000..a35b5e335670 Binary files /dev/null and b/webtools/partytool/webroot/img/tabs.gif differ diff --git a/webtools/partytool/webroot/img/title-firefox.gif b/webtools/partytool/webroot/img/title-firefox.gif new file mode 100755 index 000000000000..458fbae6c20d Binary files /dev/null and b/webtools/partytool/webroot/img/title-firefox.gif differ