protected static function actionDelete() { if (!empty($_GET['product'])) { unset($_SESSION['cart'][$_GET['product']]); } if (App::isAjax()) { return 'success'; } }
protected static function init() { parent::init(); /* * Если текущий запрос не ajax * Происходит привязка текущего пользователя к шаблонам */ if (!App::isAjax()) { // Привязка списка категорий static::templateGlobal('customer', App::currentUser()); } }
protected static function actionDefault() { /* * Если выводиться вся страница то списко товаров передается шаблону products-list таким образом * Controller -> index -> products-list * Если запрос аяксовый то переменные передаются напрямую шаблону products-list * Controller -> products-list * Но при создании этих переменных мы не думаем о том какой шаблон будет выводиться. */ // Заголовок списка товаров self::templateVar('product_list_title', 'Последние товары'); // товары в списке (6 последних добавленных в соотвествии с фильтром цен) $collection = new Collection('Product', App::currentLang()->getId()); $collection->link('cover'); $collection->order("`add` DESC"); $where = "`active` = 1"; if (isset($_POST['submitPriceRange'])) { $where .= " AND `price` >= {$_POST['min']} AND `price` <= {$_POST['max']}"; } $collection->where($where); $collection->limit(6); self::templateVar('product_list_items', $collection->items()); if (App::isAjax()) { // Если это ajax выводим чанк списка товаров return self::displayPage('chunks/product-list'); } // Привязка категорий для табов под списком товаров // Получаем две категории из базы $collection = new Collection('Category', App::currentLang()->getId()); $collection->where("`active` = 1"); $collection->limit(2); $categories = $collection->items(); foreach ($categories as $category) { $collection = new Collection('Product', App::currentLang()->getId()); $collection->where("`id_category` = " . $category->getId() . " AND `active` = 1"); $collection->limit(4); $category->setLink('products', $collection->items()); } foreach ($categories as $index => $category) { if (empty($category->products)) { unset($categories[$index]); } } // Привязываем к шаблону static::templateVar('tab_categories', $categories); return self::displayPage('index'); }
protected static function actionSearch() { // Заголовок над списком твоаров self::templateVar('product_list_title', 'Результаты поиска'); // Товары $products = new Collection('Product', App::currentLang()->getId()); $products->link('cover'); $products->where("`active` = 1 AND `name` LIKE '%{$_GET['q']}%'" . (isset($_POST['submitPriceRange']) ? " AND `price` >= {$_POST['min']} AND `price` <= {$_POST['max']}" : '')); $products->order("`add` DESC"); $products->limit(12); self::templateVar('product_list_items', $products->items()); // Если это ajax выводим только чанк product-list if (App::isAjax()) { return self::displayPage('chunks/product-list'); } return self::displayPage('catalog'); }
protected static function init() { parent::init(); /* * Если текущий запрос не ajax * Происходит привязка глобальных данных для левого меню */ if (!App::isAjax()) { // Привязка списка категорий $collection = new Collection('Category', App::currentLang()->getId()); $collection->where("`active` = 1"); static::templateGlobal('aside_categories', $collection->items()); // Привязка списка производителей $collection = new Collection('Brand', App::currentLang()->getId()); $collection->where("`active` = 1"); static::templateGlobal('aside_brands', $collection->items()); // Привязка данных для фильтра цен static::templateGlobal('filter_price', Database::getRow("\n SELECT\n MIN(`price`) AS `min`,\n MAX(`price`) AS `max`\n FROM `product`\n WHERE `active` = 1\n ")); } }
$sError = $aRow->error_message; } unlink(APP_DIR . 'uploads/' . $sName); } else { $sError = 'Not a valid image. We only accept .png, .gif or .jpg images.'; } } else { $sError = 'Unable to upload the photo.'; } } if (!empty($sError)) { echo '<script type="text/javascript">window.parent.$App.error(\'photo\', \'' . $sError . '\');</script>'; } exit; } if (!App::isAjax()) { ?> <div class="app_form"> <form method="post" action="<?php echo App::link('photos'); ?> " enctype="multipart/form-data" target="app_iframe_src"> <div id="app_form_photo_upload_holder"> <div class="app_form_input"> Share a Photo </div> <input type="file" name="photo" id="app_form_photo_upload" /> </div> <div class="app_form_hidden"> <textarea cols="60" rows="10" name="status" id="app_form_status" placeholder="Say something about this photo..."></textarea>
/** +---------------------------------------------------------- * 用户访问权限验证 +---------------------------------------------------------- * @access private +---------------------------------------------------------- * @return void +---------------------------------------------------------- */ private static function checkUser() { global $ts; // 邀请 if ($_GET['validationcode'] && $_GET['validationid']) { service('Validation')->dispatchValidation(); } // 验证登陆 if (!service('Passport')->isLogged()) { // 未登陆 // 邀请 if (APP_NAME == 'home' && MODULE_NAME == 'Index' && ACTION_NAME == 'index' && isset($_REQUEST['invite'])) { redirect(SITE_URL . '/index.php?app=home&mod=Public&act=register&invite=' . $_REQUEST['invite']); } // 是否开启游客访问 if (APP_NAME == 'home' && MODULE_NAME == 'Space' && !$ts['site']['site_anonymous']) { redirect(U('home/Public/login')); } // 匿名访问控制 if (!canAccess()) { if (App::isAjax() || strpos($_SERVER['REQUEST_URI'], "addon") != FALSE) { // Ajax访问禁止匿名的资源时, 不做自动跳转 exit; } else { // 记录登陆前的url地址 $_SESSION['refer_url'] = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; redirect(U('home/Public/login')); } } } else { // 已登录 // 设为在线 setOnline($_SESSION['mid']); // 检查用户权限. 管理后台的权限由它自己控制. if (!service('SystemPopedom')->hasPopedom()) { if (APP_NAME == 'admin') { redirect(U('home/Public/adminlogin'), 5, '您无权查看'); } else { redirect(U('home'), 5, '您无权查看'); } } } return; }
$iId = 'app_new_status_' . $aRow->id . ''; echo '$App.addItem(\'status\', \'' . $iId . '\', \'' . App::cleanJs($sItem) . '\');'; exit; } if (!App::isAjax()) { ?> <div class="app_form"> <form method="post" action="#"> <div><input type="hidden" name="do" value="index" id="app_form_action" /></div> <textarea cols="60" rows="10" name="status" id="app_form_status" placeholder="What's going on?"></textarea> <div class="app_submit"> <input type="submit" value="Post" class="app_button" id="app_form_button" /> <div class="app_form_process"></div> </div> </form> </div> <div id="app_new_status_updates"></div> <?php } $aRows = (array) App::api('user.status'); foreach ($aRows as $aRow) { App::item(array('id' => $aRow->id, 'module' => 'user_status', 'display_name' => $aRow->profile_full_name, 'profile_image' => $aRow->profile_image, 'content' => $aRow->update, 'likes' => $aRow->likes, 'is_liked' => $aRow->is_liked, 'comments' => $aRow->comments, 'time' => $aRow->convert_time_stamp)); } if (empty($aRows)) { if (App::isAjax()) { echo '<div class="app_item_done">No more updates to view at this time.</div>'; } else { } } else { App::pager(''); }