public function work($id)
 {
     if (!($id && ($work = Work::find('one', array('conditions' => array('id = ? AND is_enabled = ? AND destroy_user_id IS NULL', $id, Work::ENABLE_YES)))))) {
         return array();
     }
     if ($work->tags) {
         usort($work->tags, function ($a, $b) {
             return count($a->mappings) < count($b->mappings);
         });
     }
     if ($work->tags && ($work_ids = column_array(WorkTagMapping::find('all', array('select' => 'work_id', 'order' => 'RAND()', 'limit' => 5, 'conditions' => array('work_id != ? AND work_tag_id = ?', $work->id, $work->tags[0]->id))), 'work_id'))) {
         Work::addConditions($conditions, 'id IN (?)', $work_ids);
     } else {
         Work::addConditions($conditions, 'id != ?', $work->id);
     }
     Work::addConditions($conditions, 'is_enabled = ? AND destroy_user_id IS NULL', Work::ENABLE_YES);
     $others = Work::find('all', array('select' => 'id, title', 'limit' => 5, 'conditions' => $conditions));
     return array('work' => array_merge($work->to_array(array('only' => array('id', 'title', 'content', 'pv'), 'methods' => array('site_show_page_last_uri'))), array('mini_content' => array('150' => $work->mini_content(150), '300' => $work->mini_content(300)), 'cover_url' => array('1200x630c' => $work->cover->url('1200x630c')), 'updated_at' => array('c' => $work->updated_at->format('c'), 'Y-m-d H:i:s' => $work->updated_at->format('Y-m-d H:i:s')), 'created_at' => array('c' => $work->created_at->format('c'), 'Y-m-d H:i:s' => $work->created_at->format('Y-m-d H:i:s')))), 'tags' => array_map(function ($tag) {
         return $tag->to_array(array('only' => array('id', 'name')));
     }, $work->tags), 'others' => array_map(function ($work) {
         return $work->to_array(array('only' => array(), 'methods' => array('site_show_page_last_uri')));
     }, $others), 'blocks' => array_map(function ($block) {
         return array('title' => $block->title, 'items' => array_map(function ($item) {
             return $item->to_array(array('only' => array('link', 'title')));
         }, $block->items));
     }, WorkBlock::find('all', array('include' => array('items'), 'conditions' => array('work_id = ?', $work->id)))), 'pictures' => array_map(function ($picture) {
         return array('name' => array('800w' => $picture->name->url('800w')));
     }, $work->pictures));
 }
Exemple #2
0
 public function sitmap()
 {
     $this->load->library('Sitemap');
     // 基礎設定
     $domain = 'http://www.zeusdesign.com.tw';
     $sit_map = new Sitemap($domain);
     $sit_map->setPath(FCPATH . 'sitemap' . DIRECTORY_SEPARATOR);
     $sit_map->setDomain($domain);
     // main pages
     $sit_map->addItem('/', '0.5', 'weekly', date('c'));
     $sit_map->addItem('/abouts/', '0.5', 'weekly', date('c'));
     $sit_map->addItem('/contacts/', '0.5', 'weekly', date('c'));
     $sit_map->addItem('/works/', '0.8', 'daily', date('c'));
     $sit_map->addItem('/articles/', '0.8', 'daily', date('c'));
     // all articles
     foreach (Article::find('all', array('select' => 'id, title, updated_at', 'order' => 'id DESC', 'conditions' => array('is_visibled = ? AND destroy_user_id IS NULL', Article::IS_VISIBLED))) as $article) {
         $sit_map->addItem('/article/' . $article->site_show_page_last_uri(), '1', 'daily', $article->updated_at->format('c'));
     }
     // all article tags
     foreach (ArticleTag::all(array('select' => 'id')) as $tag) {
         $sit_map->addItem('/article-tag/' . $tag->id . '/articles/', '0.8', 'daily', date('c'));
     }
     // all works
     foreach (Work::find('all', array('select' => 'id, title, updated_at', 'order' => 'id DESC', 'conditions' => array('is_enabled = ? AND destroy_user_id IS NULL', Work::ENABLE_YES))) as $work) {
         $sit_map->addItem('/work/' . $work->site_show_page_last_uri(), '1', 'daily', $work->updated_at->format('c'));
     }
     // all work tags
     foreach (WorkTag::all(array('select' => 'id')) as $tag) {
         $sit_map->addItem('/work-tag/' . $tag->id . '/works/', '0.8', 'daily', date('c'));
     }
     $sit_map->createSitemapIndex($domain . '/sitemap/', date('c'));
 }
Exemple #3
0
 public function index($tag_id, $offset = 0)
 {
     $columns = array();
     $configs = array('work-tag', $this->tag->id, 'works', '%s');
     $conditions = conditions($columns, $configs);
     WorkTagMapping::addConditions($conditions, 'work_tag_id = ?', $this->tag->id);
     $limit = 12;
     $total = WorkTagMapping::count(array('conditions' => $conditions));
     $offset = $offset < $total ? $offset : 0;
     $this->load->library('pagination');
     $pagination = $this->pagination->initialize(array_merge(array('total_rows' => $total, 'num_links' => 3, 'per_page' => $limit, 'uri_segment' => 0, 'base_url' => '', 'page_query_string' => false, 'first_link' => '第一頁', 'last_link' => '最後頁', 'prev_link' => '上一頁', 'next_link' => '下一頁', 'full_tag_open' => '<ul class="pagination">', 'full_tag_close' => '</ul>', 'first_tag_open' => '<li class="f">', 'first_tag_close' => '</li>', 'prev_tag_open' => '<li class="p">', 'prev_tag_close' => '</li>', 'num_tag_open' => '<li>', 'num_tag_close' => '</li>', 'cur_tag_open' => '<li class="active"><a href="#">', 'cur_tag_close' => '</a></li>', 'next_tag_open' => '<li class="n">', 'next_tag_close' => '</li>', 'last_tag_open' => '<li class="l">', 'last_tag_close' => '</li>'), $configs))->create_links();
     $work_ids = column_array(WorkTagMapping::find('all', array('select' => 'work_id', 'offset' => $offset, 'limit' => $limit, 'order' => 'work_id DESC', 'conditions' => $conditions)), 'work_id');
     $works = $work_ids ? Work::find('all', array('order' => 'FIELD(id,' . implode(',', $work_ids) . ')', 'conditions' => array('is_enabled = ? AND id IN (?) AND destroy_user_id IS NULL', Work::ENABLE_YES, $work_ids))) : array();
     if ($works) {
         $this->add_meta(array('name' => 'keywords', 'content' => implode(',', column_array($works, 'title')) . ',' . implode(',', Cfg::setting('site', 'site', 'keywords'))))->add_meta(array('name' => 'description', 'content' => $works[0]->mini_content(150)))->add_meta(array('property' => 'og:title', 'content' => $this->tag->name . '作品' . ' - ' . Cfg::setting('site', 'site', 'title')))->add_meta(array('property' => 'og:description', 'content' => $works[0]->mini_content(300)))->add_meta(array('property' => 'og:image', 'tag' => 'larger', 'content' => $img = $works[0]->cover->url('1200x630c'), 'alt' => $this->tag->name . '作品' . ' - ' . Cfg::setting('site', 'site', 'title')))->add_meta(array('property' => 'og:image:type', 'tag' => 'larger', 'content' => 'image/' . pathinfo($img, PATHINFO_EXTENSION)))->add_meta(array('property' => 'og:image:width', 'tag' => 'larger', 'content' => '1200'))->add_meta(array('property' => 'og:image:height', 'tag' => 'larger', 'content' => '630'))->add_meta(array('property' => 'article:modified_time', 'content' => $works[0]->updated_at->format('c')))->add_meta(array('property' => 'article:published_time', 'content' => $works[0]->created_at->format('c')));
         if (($tags = column_array($works[0]->tags, 'name')) || ($tags = Cfg::setting('site', 'site', 'keywords'))) {
             foreach ($tags as $i => $tag) {
                 if (!$i) {
                     $this->add_meta(array('property' => 'article:section', 'content' => $tag))->add_meta(array('property' => 'article:tag', 'content' => $tag));
                 } else {
                     $this->add_meta(array('property' => 'article:tag', 'content' => $tag));
                 }
             }
         }
     }
     return $this->set_title($this->tag->name . '作品' . ' - ' . Cfg::setting('site', 'site', 'title'))->set_class('works')->set_method('index')->load_view(array('tag' => $this->tag, 'works' => $works, 'pagination' => $pagination, 'columns' => $columns));
 }
 public function editStoreWorkEdit($id)
 {
     $work = Work::find($id);
     $work->name = Input::get('name');
     $work->workgroup_id = Input::get('workgroup_id');
     $work->save();
     return Redirect::to('/admin/workedit')->withErrors(['msg' => ['Работа ' . $work->id . ' change!']]);
 }
 public function index($tag_id, $offset = 0)
 {
     $columns = array(array('key' => 'title', 'title' => '標題', 'sql' => 'title LIKE ?'), array('key' => 'content', 'title' => '內容', 'sql' => 'content LIKE ?'));
     $configs = array('admin', $this->get_class(), $this->tag->id, 'works', '%s');
     $conditions = conditions($columns, $configs);
     Work::addConditions($conditions, 'destroy_user_id IS NULL');
     if ($work_id = column_array(WorkTagMapping::find('all', array('select' => 'work_id', 'conditions' => array('work_tag_id = ?', $this->tag->id))), 'work_id')) {
         Work::addConditions($conditions, 'id IN (?)', $work_id);
     } else {
         Work::addConditions($conditions, 'id = ?', -1);
     }
     $limit = 25;
     $total = Work::count(array('conditions' => $conditions));
     $offset = $offset < $total ? $offset : 0;
     $this->load->library('pagination');
     $pagination = $this->pagination->initialize(array_merge(array('total_rows' => $total, 'num_links' => 5, 'per_page' => $limit, 'uri_segment' => 0, 'base_url' => '', 'page_query_string' => false, 'first_link' => '第一頁', 'last_link' => '最後頁', 'prev_link' => '上一頁', 'next_link' => '下一頁', 'full_tag_open' => '<ul class="pagination">', 'full_tag_close' => '</ul>', 'first_tag_open' => '<li>', 'first_tag_close' => '</li>', 'prev_tag_open' => '<li>', 'prev_tag_close' => '</li>', 'num_tag_open' => '<li>', 'num_tag_close' => '</li>', 'cur_tag_open' => '<li class="active"><a href="#">', 'cur_tag_close' => '</a></li>', 'next_tag_open' => '<li>', 'next_tag_close' => '</li>', 'last_tag_open' => '<li>', 'last_tag_close' => '</li>'), $configs))->create_links();
     $works = Work::find('all', array('offset' => $offset, 'limit' => $limit, 'order' => 'id DESC', 'include' => array('pictures'), 'conditions' => $conditions));
     return $this->set_tab_index(2)->set_subtitle($this->tag->name . '內的作品列表')->load_view(array('tag' => $this->tag, 'works' => $works, 'pagination' => $pagination, 'columns' => $columns));
 }
Exemple #6
0
 public function index($offset = 0)
 {
     $columns = array(array('key' => 'user_id', 'title' => '作者', 'sql' => 'user_id = ?', 'select' => array_map(function ($user) {
         return array('value' => $user->id, 'text' => $user->name);
     }, User::all(array('select' => 'id, name')))), array('key' => 'title', 'title' => '標題', 'sql' => 'title LIKE ?'), array('key' => 'tag_id', 'title' => '分類', 'sql' => '(id != 0 OR id = ?)', 'select' => array_map(function ($tag) {
         return array('value' => $tag->id, 'text' => $tag->name);
     }, WorkTag::all(array('select' => 'id, name')))));
     $configs = array('admin', $this->get_class(), '%s');
     $conditions = conditions($columns, $configs);
     Work::addConditions($conditions, 'destroy_user_id IS NULL');
     if (($tag_id = OAInput::get('tag_id')) && ($ids = column_array(WorkTagMapping::find('all', array('select' => 'work_id', 'conditions' => array('work_tag_id = ?', $tag_id))), 'work_id'))) {
         Work::addConditions($conditions, 'id IN (?)', $ids);
     }
     $limit = 25;
     $total = Work::count(array('conditions' => $conditions));
     $offset = $offset < $total ? $offset : 0;
     $this->load->library('pagination');
     $pagination = $this->pagination->initialize(array_merge(array('total_rows' => $total, 'num_links' => 5, 'per_page' => $limit, 'uri_segment' => 0, 'base_url' => '', 'page_query_string' => false, 'first_link' => '第一頁', 'last_link' => '最後頁', 'prev_link' => '上一頁', 'next_link' => '下一頁', 'full_tag_open' => '<ul class="pagination">', 'full_tag_close' => '</ul>', 'first_tag_open' => '<li>', 'first_tag_close' => '</li>', 'prev_tag_open' => '<li>', 'prev_tag_close' => '</li>', 'num_tag_open' => '<li>', 'num_tag_close' => '</li>', 'cur_tag_open' => '<li class="active"><a href="#">', 'cur_tag_close' => '</a></li>', 'next_tag_open' => '<li>', 'next_tag_close' => '</li>', 'last_tag_open' => '<li>', 'last_tag_close' => '</li>'), $configs))->create_links();
     $works = Work::find('all', array('offset' => $offset, 'limit' => $limit, 'order' => 'id DESC', 'include' => array('user', 'pictures'), 'conditions' => $conditions));
     Session::setData('admin_works_index_url', current_url());
     return $this->set_tab_index(1)->set_subtitle('作品列表')->add_hidden(array('id' => 'is_enabled_url', 'value' => base_url('admin', $this->get_class(), 'is_enabled')))->load_view(array('works' => $works, 'pagination' => $pagination, 'columns' => $columns));
 }
Exemple #7
0
 /**
  *
  */
 public function pagework($id)
 {
     $work = Work::find($id);
     $group = Group::find($_GET['group']);
     return View::make('pages.work')->with('work', $work)->with('group', $group)->with('title', $work->title);
 }
Exemple #8
0
 /**
  * Remove the specified resource from storage.
  *
  * @param  int  $id
  * @return Response
  */
 public function destroy($id)
 {
     // Check user is logged in
     if (Auth::check()) {
         $work = Work::find($id);
         $work->delete();
         // redirect
         Session::flash('message', 'Successfully deleted the work');
         return Redirect::to('works');
     } else {
         // User is not logged in
         Session::flash('message', 'Please log in');
         return Redirect::to('/');
     }
 }
Exemple #9
0
 /**
  *
  *
  */
 public function save_assigned_work()
 {
     if (Auth::check()) {
         $work = Work::find($_POST['work_id']);
         // only sync the pivot table data if there is any
         if (isset($_POST['groups_data'])) {
             $work->groups()->sync(array_values($_POST['groups_data']));
         } else {
             $work->groups()->detach();
         }
         Session::flash('message', 'Successfully assigned work to group(s)');
         return Redirect::to('works');
     } else {
         Session::flash('message', 'Please log in');
         return Redirect::to('/');
     }
 }
Exemple #10
0
 function get_all_staffs_unsubmitted_works()
 {
     $results = array();
     $works = Work::find('all', array('conditions' => array(' `is_done` = 0 AND `check_date` IS NULL '), 'order' => 'id desc'));
     // 根据用户角色筛选
     // 如果是 操作者
     if (has_perm(8, 4)) {
         $team_id = $_SESSION['team_id'];
         foreach ($works as $key => $work) {
             // 过滤掉不是一个班组的员工
             if ($work->staff->group_id != $team_id) {
                 unset($works[$key]);
             }
         }
     }
     return \Model\Work::get_works_detail($works, 'unsubmitted');
 }