|
From: Verdon V. <ve...@us...> - 2008-06-13 03:51:11
|
Update of /cvsroot/phpwebsite-comm/modules/rolodex/class In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11911/class Modified Files: RDX_Forms.php Rolodex.php Log Message: new category views Index: RDX_Forms.php =================================================================== RCS file: /cvsroot/phpwebsite-comm/modules/rolodex/class/RDX_Forms.php,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** RDX_Forms.php 12 Jun 2008 21:18:52 -0000 1.10 --- RDX_Forms.php 13 Jun 2008 03:51:17 -0000 1.11 *************** *** 225,228 **** --- 225,236 ---- } + /* search by category */ + if (isset($_REQUEST['categories'])) { + $pager->db->addColumn('category_items.*'); + $pager->db->addWhere('rolodex_member.key_id', 'category_items.key_id'); + $pager->db->addWhere('category_items.cat_id', $_REQUEST['categories']); + $pager->db->addGroupBy('category_items.key_id'); + } + /* the default sort order */ $pager->setOrder($sortby, 'asc', true); *************** *** 347,350 **** --- 355,403 ---- + function listCategories() + { + + $ptags['TITLE_HEADER'] = dgettext('rolodex', 'Title'); + $ptags['DESCRIPTION_HEADER'] = dgettext('rolodex', 'Description'); + $ptags['ALPHA_CLICK'] = $this->rolodex->alpha_click(); + + PHPWS_Core::initCoreClass('DBPager.php'); + $pager = new DBPager('categories'); + $pager->setModule('rolodex'); + $pager->setOrder('title', 'asc', true); + $pager->setTemplate('list_category.tpl'); + $num = $pager->getTotalRows(); + $pager->addRowFunction(array('Rolodex_Forms', 'listCatsRow')); + $pager->addPageTags($ptags); + $pager->addToggle('class="toggle1"'); + $pager->setSearch('title', 'description'); + + // $pager->db->setTestMode(); + $this->rolodex->content = $pager->get(); + $this->rolodex->title = sprintf(dgettext('rolodex', '%s Categories'), PHPWS_Settings::get('rolodex', 'module_title')); + } + + + function listCatsRow($value) + { + $db = new PHPWS_DB('category_items'); + $db->addWhere('cat_id', $value['id']); + $db->addWhere('module', 'rolodex'); + $num = $db->count(); + $tpl['TITLE'] = PHPWS_Text::moduleLink($value['title'], "rolodex", array('uop'=>'view_category', 'category'=>$value['id'])) . ' ('.$num.')'; + + if (empty($value['description'])) { + $tpl['DESCRIPTION'] = ''; + } else { + $tpl['DESCRIPTION'] = substr(ltrim(strip_tags(str_replace('<br />', ' ', PHPWS_Text::parseOutput($value['description'])))), 0, 120) . ' ...'; + } + + PHPWS_Core::initModClass('filecabinet', 'Cabinet.php'); + $tpl['ICON'] = Cabinet::getTag($value['icon']); + + return $tpl; + } + + function advSearchForm() { *************** *** 360,365 **** --- 413,420 ---- $tpl['LOCATION_SELECT'] = $this->rolodex->getItemSelect('location', null, 'locations'); $tpl['FEATURE_SELECT'] = $this->rolodex->getItemSelect('feature', null, 'features'); + $tpl['CATEGORY_SELECT'] = $this->rolodex->getCatSelect(null, 'categories'); $tpl['LOCATION_LABEL'] = dgettext('rolodex', 'Location(s)'); $tpl['FEATURE_LABEL'] = dgettext('rolodex', 'Feature(s)'); + $tpl['CATEGORY_LABEL'] = dgettext('rolodex', 'Category(s)'); $tpl['CRITERIA_LABEL'] = dgettext('rolodex', 'Criteria'); Index: Rolodex.php =================================================================== RCS file: /cvsroot/phpwebsite-comm/modules/rolodex/class/Rolodex.php,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Rolodex.php 12 Jun 2008 21:18:52 -0000 1.8 --- Rolodex.php 13 Jun 2008 03:51:17 -0000 1.9 *************** *** 29,38 **** class Rolodex { ! var $forms = null; ! var $panel = null; ! var $title = null; ! var $message = null; ! var $content = null; ! var $member = null; --- 29,41 ---- class Rolodex { ! var $forms = null; ! var $panel = null; ! var $title = null; ! var $message = null; ! var $content = null; ! var $member = null; ! var $location = null; ! var $feature = null; ! var $category = null; *************** *** 330,334 **** $this->forms = new Rolodex_Forms; $this->forms->rolodex = & $this; ! $this->forms->categories(); } break; --- 333,338 ---- $this->forms = new Rolodex_Forms; $this->forms->rolodex = & $this; ! // $this->forms->categories(); ! $this->forms->listCategories(); } break; *************** *** 465,468 **** --- 469,478 ---- break; + case 'view_category': + $this->loadCategory(); + $this->title = $this->category->getTitle(); + $this->content = $this->categoryView(); + break; + *************** *** 543,546 **** --- 553,573 ---- + function loadCategory($id=0) + { + PHPWS_Core::initModClass('categories', 'Category.php'); + + if ($id) { + $this->category = new Category($id); + } elseif (isset($_REQUEST['category_id'])) { + $this->category = new Category($_REQUEST['category_id']); + } elseif (isset($_REQUEST['category'])) { + $this->category = new Category($_REQUEST['category']); + } else { + $this->category = new Category($_REQUEST['id']); + } + + } + + function loadPanel() { *************** *** 1260,1263 **** --- 1287,1380 ---- + function categoryView() + { + if (!$this->category->id) { + PHPWS_Core::errorPage(404); + } + + Layout::addPageTitle($this->category->getTitle()); + $template['TITLE'] = $this->category->getTitle(true); + $template['DESCRIPTION'] = PHPWS_Text::parseTag($this->category->getDescription(true)); + $template['IMAGE'] = $this->category->getIcon(); + + $links[] = PHPWS_Text::moduleLink(dgettext('rolodex', 'Browse members'), 'rolodex', array('uop'=>'list')); + $links[] = PHPWS_Text::moduleLink(dgettext('rolodex', 'Categories'), "rolodex", array('uop'=>'categories')); + $links[] = PHPWS_Text::moduleLink(dgettext('rolodex', 'Locations'), "rolodex", array('uop'=>'locations')); + $links[] = PHPWS_Text::moduleLink(dgettext('rolodex', 'Features'), "rolodex", array('uop'=>'features')); + $links[] = PHPWS_Text::moduleLink(dgettext('rolodex', 'Advanced'), "rolodex", array('uop'=>'advanced')); + if($links) + $template['CATEGORY_LINKS'] = implode(' | ', $links); + + $members = $this->getCatMembers(true); + if (PHPWS_Error::logIfError($members)) { + $this->rolodex->content = dgettext('rolodex', 'An error occurred when accessing this location\'s members.'); + return; + } + if ($members) { + foreach ($members as $member) { + $template['current-members'][] = $member->viewTpl(); + } + } + + return PHPWS_Template::process($template, 'rolodex', 'view_category.tpl'); + + } + + + function getCatMembers($limit=false, $approved=null, $expired=false) + { + PHPWS_Core::initModClass('rolodex', 'RDX_Member.php'); + + $db = new PHPWS_DB('rolodex_member'); + $db->addColumn('category_items.*'); + $db->addColumn('rolodex_member.*'); + $db->addColumn('demographics.*'); + $db->addWhere('rolodex_member.key_id', 'category_items.key_id'); + $db->addWhere('category_items.cat_id', $this->category->id); + $db->addWhere('rolodex_member.user_id', 'demographics.user_id'); + + /* approved yes/no */ + if (isset($approved)) { + $addWhere('active', $approved); + } + + /* expired yes/no */ + if (PHPWS_Settings::get('rolodex', 'enable_expiry')) { + if ($expired) { + $addWhere('date_expires', mktime(), '<='); + } else { + $addWhere('date_expires', mktime(), '>='); + } + } + + /* make sure only unrestricted users see inactive members */ + if (!Current_User::isUnrestricted('rolodex')) { + $db->addWhere('active', 1); + } + + /* set the default sort order and title column sort */ + if (PHPWS_Settings::get('rolodex', 'sortby')) { + $sortby = 'demographics.last_name'; + // $db->joinResult('user_id', 'demographics', 'user_id', 'last_name', 'title'); + } else { + $sortby = 'demographics.business_name'; + // $db->joinResult('user_id', 'demographics', 'user_id', 'business_name', 'title'); + } + + /* deal with privacy levels */ + if (!$_SESSION['User']->id) { + $db->addWhere('rolodex_member.privacy', 0); + } elseif (!Current_User::allow('rolodex', 'view_privates')) { + $db->addWhere('rolodex_member.privacy', 1, '<='); + } + + /* the default sort order */ + $db->addOrder($sortby, 'asc', true); + + $result = $db->getObjects('Rolodex_Member'); + return $result; + } + + function alpha_click() { *************** *** 1452,1455 **** --- 1569,1614 ---- + function getCatSelect($match=null, $select_name='categories', $multiple=true, $count=true) + { + + PHPWS_Core::initModClass('categories', 'Category.php'); + $db = new PHPWS_DB('categories'); + $db->addOrder('title asc'); + + $result = $db->getObjects('Category'); + + if ($result) { + foreach ($result as $item) { + if ($count) { + $db = new PHPWS_DB('category_items'); + $db->addWhere('cat_id', $item->id); + $db->addWhere('module', 'rolodex'); + $qty = $db->count(); + $items[$item->id] = $item->title . ' ('.$qty.')'; + } else { + $items[$item->id] = $item->title; + } + } + } + + if ($multiple) { + $form = new PHPWS_Form; + $form->addMultiple($select_name, $items); + if (!empty($match) && is_array($match)) { + $form->setMatch($select_name, $match); + } + return $form->get($select_name); + } else { + $form = new PHPWS_Form; + $form->addSelect($select_name, $items); + if (!empty($match) && is_string($match)) { + $form->setMatch($select_name, $match); + } + return $form->get($select_name); + } + + } + + |