Ejemplo n.º 1
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'));
 }
Ejemplo n.º 2
0
 public function __construct()
 {
     parent::__construct();
     if (!(($id = $this->uri->rsegments(3, 0)) && (is_numeric($id) ? $this->tag = WorkTag::find_by_id($id) : ($this->tag = WorkTag::find_by_name(trim(urldecode($id))))))) {
         return redirect_message(array('works'), array('_flash_message' => '找不到該筆資料。'));
     }
     if (in_array($this->uri->rsegments(2, 0), array('edit', 'update', 'destroy', 'sort'))) {
         if (!(($id = $this->uri->rsegments(4, 0)) && ($this->work = Work::find_by_id($id)))) {
             return redirect_message(array('works', $this->tag->id, 'works'), array('_flash_message' => '找不到該筆資料。'));
         }
     }
     $this->add_js(resource_url('resource', 'javascript', 'jquery-timeago_v1.3.1', 'jquery.timeago.js'))->add_js(resource_url('resource', 'javascript', 'jquery-timeago_v1.3.1', 'locales', 'jquery.timeago.zh-TW.js'));
 }
Ejemplo n.º 3
0
      </tr>

      <tr>
        <th>圖 片:</th>
        <td>
          <div class='ps'>
            <button type='button' class='icon-plus' data-i='0'></button>
          </div>
        </td>
      </tr>

      <tr>
        <th class='tst'>分 類:</th>
        <td class='ts'>
    <?php 
if ($tags = WorkTag::find('all', array('include' => array('tags'), 'conditions' => array('work_tag_id = ?', 0)))) {
    foreach ($tags as $i => $tag) {
        ?>
              <div class='t'>
                <label class='main'><input type='checkbox' name='tag_ids[]' value='<?php 
        echo $tag->id;
        ?>
'<?php 
        echo isset($posts['tag_ids']) && $posts['tag_ids'] && in_array($tag->id, $posts['tag_ids']) ? ' checked' : '';
        ?>
 /> <?php 
        echo $tag->name;
        ?>
</label>
          <?php 
        if ($tag->tags) {
Ejemplo n.º 4
0
 public function sort($id, $sort)
 {
     if (!in_array($sort, array('up', 'down'))) {
         return redirect_message(array('admin', $this->get_class()), array('_flash_message' => '排序失敗!'));
     }
     $total = WorkTag::count(array('conditions' => array('work_tag_id = ?', 0)));
     switch ($sort) {
         case 'up':
             $sort = $this->tag->sort;
             $this->tag->sort = $this->tag->sort - 1 < 0 ? $total - 1 : $this->tag->sort - 1;
             break;
         case 'down':
             $sort = $this->tag->sort;
             $this->tag->sort = $this->tag->sort + 1 >= $total ? 0 : $this->tag->sort + 1;
             break;
     }
     WorkTag::addConditions($conditions, 'sort = ? AND work_tag_id = ?', $this->tag->sort, 0);
     $tag = $this->tag;
     $update = WorkTag::transaction(function () use($conditions, $tag, $sort) {
         if (($next = WorkTag::find('one', array('conditions' => $conditions))) && (($next->sort = $sort) || true)) {
             if (!$next->save()) {
                 return false;
             }
         }
         if (!$tag->save()) {
             return false;
         }
         return true;
     });
     if (!$update) {
         return redirect_message(array('admin', $this->get_class()), array('_flash_message' => '排序失敗!', 'posts' => $posts));
     }
     return redirect_message(array('admin', $this->get_class()), array('_flash_message' => '排序成功!'));
 }
Ejemplo n.º 5
0
 public function tags()
 {
     $tags = WorkTag::all(array('select' => 'id, name', 'order' => 'sort ASC', 'include' => array('tags'), 'conditions' => array('work_tag_id = ?', 0)));
     return $this->setUseCssList(true)->load_view(array('tags' => $tags));
 }
Ejemplo n.º 6
0
 public function update()
 {
     if (!$this->has_post()) {
         return redirect_message(array('admin', 'work_tags', $this->tag->id, 'works', $this->work->id, 'edit'), array('_flash_message' => '非 POST 方法,錯誤的頁面請求。'));
     }
     $posts = OAInput::post();
     $cover = OAInput::file('cover');
     if (!((string) $this->work->cover || $cover)) {
         return redirect_message(array('admin', 'work_tags', $this->tag->id, 'works', $this->work->id, 'edit'), array('_flash_message' => '請選擇圖片(gif、jpg、png)檔案!', 'posts' => $posts));
     }
     if ($msg = $this->_validation_posts($posts)) {
         return redirect_message(array('admin', 'work_tags', $this->tag->id, 'works', $this->work->id, 'edit'), array('_flash_message' => $msg, 'posts' => $posts));
     }
     if ($columns = array_intersect_key($posts, $this->work->table()->columns)) {
         foreach ($columns as $column => $value) {
             $this->work->{$column} = $value;
         }
     }
     $work = $this->work;
     $update = WorkTag::transaction(function () use($work, $cover) {
         if (!$work->save()) {
             return false;
         }
         if ($cover && !$work->cover->put($cover)) {
             return false;
         }
         return true;
     });
     if (!$update) {
         return redirect_message(array('admin', 'work_tags', $this->tag->id, 'works', $this->work->id, 'edit'), array('_flash_message' => '更新失敗!', 'posts' => $posts));
     }
     if (($del_ids = array_diff(column_array($work->pictures, 'id'), $posts['pic_ids'])) && ($pictures = WorkPicture::find('all', array('select' => 'id, name', 'conditions' => array('id IN (?)', $del_ids))))) {
         foreach ($pictures as $picture) {
             WorkPicture::transaction(function () use($picture) {
                 return $picture->destroy();
             });
         }
     }
     if ($pictures = OAInput::file('pictures[]')) {
         foreach ($pictures as $picture) {
             WorkPicture::transaction(function () use($picture, $work) {
                 return verifyCreateOrm($pic = WorkPicture::create(array_intersect_key(array_merge($picture, array('work_id' => $work->id)), WorkPicture::table()->columns))) && $pic->name->put($picture);
             });
         }
     }
     $clean_blocks = WorkBlock::transaction(function () use($work) {
         foreach ($work->blocks as $block) {
             if (!$block->destroy()) {
                 return false;
             }
         }
         return true;
     });
     if ($blocks = $posts['blocks']) {
         foreach ($blocks as $block) {
             if (!($b = null) && WorkBlock::transaction(function () use($block, $work, &$b) {
                 return verifyCreateOrm($b = WorkBlock::create(array_intersect_key(array_merge($block, array('work_id' => $work->id)), WorkBlock::table()->columns)));
             })) {
                 if (($items = $block['items']) && $b) {
                     foreach ($items as $item) {
                         WorkBlockItem::transaction(function () use($item, $b) {
                             return verifyCreateOrm(WorkBlockItem::create(array_intersect_key(array_merge($item, array('work_block_id' => $b->id)), WorkBlockItem::table()->columns)));
                         });
                     }
                 }
             }
         }
     }
     return redirect_message(array('admin', 'work_tags', $this->tag->id, 'works', $this->work->id, 'edit'), array('_flash_message' => '更新成功!'));
 }