OSDN Git Service

キャラクター画像設定をcharactersに登録に変更
authorCake <cake_67@users.sourceforge.jp>
Thu, 11 Mar 2010 09:01:14 +0000 (18:01 +0900)
committerCake <cake_67@users.sourceforge.jp>
Thu, 11 Mar 2010 10:05:57 +0000 (19:05 +0900)
13 files changed:
app/config/sql/chara-shee.sql
app/config/sql/setup_chara-image.sql
app/controllers/app_controller.php
app/controllers/character_pictures_controller.php
app/controllers/characters_controller.php
app/models/character.php
app/models/character_picture.php
app/views/character_pictures/add.ctp
app/views/character_pictures/admin_index.ctp
app/views/character_pictures/admin_view.ctp
app/views/character_pictures/edit.ctp
app/views/character_pictures/index.ctp
app/views/character_pictures/view.ctp

index 3e200ca..0a2052a 100644 (file)
@@ -28,6 +28,8 @@ CREATE TABLE `characters` (
   `system_id` INTEGER UNSIGNED,
   `user_id` INTEGER UNSIGNED NOT NULL,
   `name` TEXT NOT NULL,
+  `main_picture` VARCHAR(255) NULL,
+  `full_length` VARCHAR(255) NULL,
   `notes` TEXT NOT NULL,
   `public_flag` ENUM('public','private') NOT NULL DEFAULT 'public',
   `status` ENUM('active', 'npc', 'inactive') NOT NULL DEFAULT 'active',
index 54e2413..b359cb1 100644 (file)
@@ -7,8 +7,6 @@ CREATE TABLE `character_pictures` (
   `user_id` INTEGER UNSIGNED NOT NULL,
   `character_id` INTEGER UNSIGNED NOT NULL,
   `public_flag` ENUM('public','private') NOT NULL DEFAULT 'public',
-  `main_picture` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
-  `full_length` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
   `created` DATETIME NULL,
   `modified` DATETIME NULL,
   PRIMARY KEY(`id`),
index d5f90b2..46f6091 100644 (file)
@@ -186,6 +186,37 @@ class AppController extends Controller
                return $user;
        }
 
+       function _get_character4character_id($character_id, $user_id = null, $public_flag = null, $is_deleted = 0)
+       {
+               $conditions = array(
+                       'Character.id' => $character_id,
+                       'Character.deleted' => $is_deleted,
+               );
+               if ($user_id) {
+                       $conditions['Character.user_id'] = $user_id;
+               }
+               if ($public_flag) {
+                       $conditions['Character.public_flag'] = $public_flag;
+               }
+               if (!isset($this->Character)) {
+                       $this->Character = CorePlus::set_model('Character');
+               }
+               $character = $this->Character->find('first', array(
+                       'conditions' => $conditions,
+                       'contain' => array(
+                               'CharacterPicture' => array(
+                                       'Attachment',
+                               ),
+                       ),
+                       'recursive' => 2,
+               ));
+               if (empty($character)) {
+                       $this->Session->setFlash(__('Invalid Character.', true));
+                       $this->redirect(array('controller' => 'characters', 'action'=>'index'));
+               }
+               return $character;
+       }
+
 
 }
 
index b7e7f9d..c8be50e 100644 (file)
@@ -10,7 +10,6 @@ class CharacterPicturesController extends AppController {
        /* ACL */
        // 追加アクション用 crudMap
        var $actionMapPlus = array(
-               'set_status' => 'update',
        );
 
        var $disableTokenActions = array();
@@ -18,18 +17,6 @@ class CharacterPicturesController extends AppController {
        var $post_data = array();
 
 
-       var $_default_character_picture = array(
-               'id' => null,
-               'user_id' => null,
-               'character_id' => null,
-               'public_flag' => null,
-               'main_picture' => null,
-               'full_length' => null,
-               'created' => null,
-               'modified' => null,
-               'actions' => null,
-       );
-
        /* メソッド */
 
        function beforeFilter() {
@@ -69,7 +56,6 @@ class CharacterPicturesController extends AppController {
                        ),
                        'recursive' => -1,
                ));
-
                if (empty($character)) {
                        $this->Session->setFlash(__('Invalid Character.', true));
                        $this->redirect(array('controller' => 'characters', 'action'=>'index'));
@@ -91,8 +77,6 @@ class CharacterPicturesController extends AppController {
                        'fields' => array(
                                'CharacterPicture.id',
                                'CharacterPicture.public_flag',
-                               'CharacterPicture.main_picture',
-                               'CharacterPicture.full_length',
                                'CharacterPicture.created',
                        ),
                        'contain' => array(
@@ -101,6 +85,9 @@ class CharacterPicturesController extends AppController {
                        'recursive' => 1,
                        'order' => array('CharacterPicture.id' => 'asc'),
                ));
+               if ($isOwner) {
+                       $character_pictures = $this->_set_image_config($character_pictures, $character['Character']);
+               }
 
                $this->set('characterPictures', $character_pictures);
        }
@@ -174,46 +161,6 @@ class CharacterPicturesController extends AppController {
                $this->set(compact('users','characters'));
        }
 
-       function set_status($character_id = null) {
-               if (!$character_id || !isset($this->params['named']['mode'])) {
-                       $this->Session->setFlash(__('Invalid URL.', true));
-                       $this->redirect(array('controller' => 'characters', 'action'=>'index'));
-               }
-               $character = $this->_get_character4character_id($character_id, $this->user_id);
-
-               if (!isset($this->params['named']['mode']) || ($this->params['named']['mode'] != 'main_picture' && 'main_picture' || $this->params['named']['mode'] != 'full_length')) {
-               } else {
-                       $this->Session->setFlash(__('Invalid URL.', true));
-                       $this->redirect(array('controller' => 'character_pictures', 'action'=>'index', $character_id));
-               }
-
-               // 新設定チェック
-               if (isset($this->params['named']['new_picture_id']) && $this->params['named']['new_picture_id'] != 'null') {
-                       $new_character_picture = $this->__get_character4character_picture_id($this->params['named']['new_picture_id'], $this->user_id);
-
-               }
-
-               // 現在の設定削除
-               $fields = array('CharacterPicture.'.$this->params['named']['mode'] => 0);
-               $conditions = array(
-                       'CharacterPicture.character_id' => $character_id,
-                       'CharacterPicture.'.$this->params['named']['mode'] => 1,
-               );
-               $this->CharacterPicture->updateAll(
-                       $fields, 
-                       $conditions
-               );
-               // 新設定
-               $fields = array('CharacterPicture.'.$this->params['named']['mode'] => 1);
-               $conditions = array('CharacterPicture.id' => $this->params['named']['new_picture_id']);
-               $this->CharacterPicture->updateAll(
-                       $fields, 
-                       $conditions
-               );
-
-               $this->redirect(array('action'=>'index', $character_id));
-       }
-
        function delete($id = null) {
                if (!$id) {
                        $this->Session->setFlash(__('Invalid id for CharacterPicture', true));
@@ -251,34 +198,6 @@ class CharacterPicturesController extends AppController {
        }
 
 
-       function _get_character4character_id($character_id, $user_id = null, $public_flag = null, $is_deleted = 0)
-       {
-               $conditions = array(
-                       'Character.id' => $character_id,
-                       'Character.deleted' => $is_deleted,
-               );
-               if ($user_id) {
-                       $conditions['Character.user_id'] = $user_id;
-               }
-               if ($public_flag) {
-                       $conditions['Character.public_flag'] = $public_flag;
-               }
-               $character = $this->CharacterPicture->Character->find('first', array(
-                       'conditions' => $conditions,
-                       'contain' => array(
-                               'CharacterPicture' => array(
-                                       'Attachment',
-                               ),
-                       ),
-                       'recursive' => 1,
-               ));
-               if (empty($character)) {
-                       $this->Session->setFlash(__('Invalid Character.', true));
-                       $this->redirect(array('controller' => 'characters', 'action'=>'index'));
-               }
-               return $character;
-       }
-
        function __get_character4character_picture_id($character_picture_id, $user_id = null, $public_flag = null)
        {
                $conditions = array(
@@ -304,5 +223,26 @@ class CharacterPicturesController extends AppController {
                return $characterPicture;
        }
 
+       function _set_image_config($character_pictures, $character)
+       {
+               if (!empty($character) && !empty($character_pictures)) {
+                       foreach ($character_pictures as $k => $v) {
+                               if (!empty($character['main_picture']) && $v['Attachment'][0]['basename'] == $character['main_picture'] && $v['CharacterPicture']['public_flag'] == 'public') {
+                                       $character_pictures[$k]['CharacterPicture']['main_picture'] = true;
+                               } else {
+                                       $character_pictures[$k]['CharacterPicture']['main_picture'] = false;
+                               }
+
+                               if (!empty($character['full_length']) && $v['Attachment'][0]['basename'] == $character['full_length'] && $v['CharacterPicture']['public_flag'] == 'public') {
+                                       $character_pictures[$k]['CharacterPicture']['full_length'] = true;
+                               } else {
+                                       $character_pictures[$k]['CharacterPicture']['full_length'] = false;
+                               }
+                       }
+               }
+
+               return $character_pictures;
+       }
+
 }
 ?>
\ No newline at end of file
index 1b8be09..8efc887 100644 (file)
@@ -12,6 +12,7 @@ class CharactersController extends AppController {
        // 追加アクション用 crudMap
        var $actionMapPlus = array(
                'add_milti_profiles' => 'update',
+               'set_status' => 'update',
        );
 
        var $disableTokenActions = array();
@@ -263,6 +264,53 @@ class CharactersController extends AppController {
 
        }
 
+       function set_status($id = null) {
+               if (!$id || !isset($this->params['named']['mode'])) {
+                       $this->Session->setFlash(__('Invalid ID.', true));
+                       $this->redirect(array('controller' => 'characters', 'action'=>'index'));
+               }
+
+               $character = $this->_get_character4character_id($id, $this->user_id, 'public');
+
+               if ($this->params['named']['mode'] != 'main_picture' && $this->params['named']['mode'] != 'full_length') {
+                       $this->Session->setFlash(__('Invalid URL.', true));
+                       $this->redirect(array('controller' => 'character_pictures', 'action'=>'index', $id));
+               }
+
+               // 新picture設定
+               $new_character_picture = null;
+               if (isset($this->params['named']['new_picture_id']) && $this->params['named']['new_picture_id'] != 'null') {
+                       if ($character['CharacterPicture']) {
+                               foreach($character['CharacterPicture'] as $k => $v) {
+                                       if ($v['id'] == $this->params['named']['new_picture_id']) {
+                                               $new_character_picture = CorePlus::get_value($v, 'Attachment.0.basename');
+                                               break;
+                                       }
+                               }
+                       }
+                       if (!$new_character_picture) {
+                               $this->Session->setFlash(__('Invalid data.', true));
+                               $this->redirect(array('controller' => 'character_pictures', 'action'=>'index', $id));
+                       }
+               }
+
+               // 設定変更
+               $this->Character->id = $id;
+               $this->data['Character'][$this->params['named']['mode']] = $new_character_picture;
+               var_dump($this->data);
+               $this->Character->save(
+                       $this->data, 
+                       array(
+                               'fieldList' => array(
+                                       $this->params['named']['mode']
+                               ), 
+                       )
+               );
+
+               $this->Session->setFlash(__('CharacterPicture Configuration has been saved.', true));
+               $this->redirect(array('controller' => 'character_pictures', 'action' => 'index', $id));
+       }
+
        function delete($id = null) {
                if (!$id) {
                        $this->Session->setFlash(__('Invalid id for Character', true));
@@ -353,8 +401,6 @@ class CharactersController extends AppController {
                if (empty($orig_character['Character'])) {
                        return $orig_character;
                }
-               $orig_character['Character']['image_filename'] = null;
-               $orig_character['Character']['full_length'] = null;
 
                if (!empty($orig_character['System']['Profile'])) {
                        $new_profile = array();
index 539550c..1d576c9 100644 (file)
@@ -31,12 +31,6 @@ class Character extends AppModel {
                                'rule' => 'notEmpty',
                        ),
                ),
-               'image_filename' => array(
-                       'url' => array(
-                               'rule' => 'url',
-                               'allowEmpty' => true,
-                       ),
-               ),
                'system_id' => array(
                        'validSystemId' => array(
                                'rule' => array('validSystemId', true),
@@ -93,8 +87,6 @@ class Character extends AppModel {
                        'fields' => array(
                                'CharacterPicture.id',
                                'CharacterPicture.public_flag',
-                               'CharacterPicture.main_picture',
-                               'CharacterPicture.full_length',
                                'CharacterPicture.created',
                        ),
                        'order' => array('CharacterPicture.id' => 'asc'),
index d6d798c..541ceda 100644 (file)
@@ -29,16 +29,6 @@ class CharacterPicture extends AppModel {
                                'allowEmpty' => true,
                        ),
                ),
-               'main_picture' => array(
-                       'boolean' => array(
-                               'rule' => array('boolean'),
-                       ),
-               ),
-               'full_length' => array(
-                       'boolean' => array(
-                               'rule' => array('boolean'),
-                       ),
-               )
        );
 
        //The Associations below have been created with all possible keys, those that are not needed can be removed
index 70c7a63..063e325 100644 (file)
@@ -23,8 +23,6 @@
        echo $select->create_publicflag_select($public_flags, 'public_flag', array(
                'label' => __('Public Flag', true)
        ));
-       echo $form->input('main_picture');
-       echo $form->input('full_length');
 
        echo $token->create();
 ?>
index 028c879..22aa000 100644 (file)
@@ -12,8 +12,6 @@ echo $paginator->counter(array(
        <th><?php echo $paginator->sort('user_id');?></th>
        <th><?php echo $paginator->sort('character_id');?></th>
        <th><?php echo $paginator->sort('public_flag');?></th>
-       <th><?php echo $paginator->sort('main_picture');?></th>
-       <th><?php echo $paginator->sort('full_length');?></th>
        <th><?php echo $paginator->sort('created');?></th>
        <th><?php echo $paginator->sort('modified');?></th>
        <th class="actions"><?php __('Actions');?></th>
@@ -40,12 +38,6 @@ foreach ($characterPictures as $characterPicture):
                        <?php echo $characterPicture['CharacterPicture']['public_flag']; ?>
                </td>
                <td>
-                       <?php echo $characterPicture['CharacterPicture']['main_picture']; ?>
-               </td>
-               <td>
-                       <?php echo $characterPicture['CharacterPicture']['full_length']; ?>
-               </td>
-               <td>
                        <?php echo $characterPicture['CharacterPicture']['created']; ?>
                </td>
                <td>
index e07d560..fa35fc3 100644 (file)
                        <?php echo $characterPicture['CharacterPicture']['public_flag']; ?>
                        &nbsp;
                </dd>
-               <dt<?php if ($i % 2 == 0) echo $class;?>><?php __('Main Picture'); ?></dt>
-               <dd<?php if ($i++ % 2 == 0) echo $class;?>>
-                       <?php echo $characterPicture['CharacterPicture']['main_picture']; ?>
-                       &nbsp;
-               </dd>
-               <dt<?php if ($i % 2 == 0) echo $class;?>><?php __('Full Length'); ?></dt>
-               <dd<?php if ($i++ % 2 == 0) echo $class;?>>
-                       <?php echo $characterPicture['CharacterPicture']['full_length']; ?>
-                       &nbsp;
-               </dd>
                <dt<?php if ($i % 2 == 0) echo $class;?>><?php __('Created'); ?></dt>
                <dd<?php if ($i++ % 2 == 0) echo $class;?>>
                        <?php echo $characterPicture['CharacterPicture']['created']; ?>
index 11637a2..38031ab 100644 (file)
@@ -7,8 +7,6 @@
                echo $form->input('user_id');
                echo $form->input('character_id');
                echo $form->input('public_flag');
-               echo $form->input('main_picture');
-               echo $form->input('full_length');
        ?>
        </fieldset>
 <?php echo $form->end('Submit');?>
index 6c9320f..6355956 100644 (file)
@@ -37,6 +37,7 @@ foreach ($characterPictures as $key => $characterPicture):
                $html->link(
                        __('Delete Main Picture', true),
                        array(
+                               'controller' => 'characters', 
                                'action' => 'set_status', 
                                $character['Character']['id'], 
                                'mode:main_picture', 
@@ -51,6 +52,7 @@ foreach ($characterPictures as $key => $characterPicture):
                $html->link(
                        __('Set Main Picture', true),
                        array(
+                               'controller' => 'characters', 
                                'action' => 'set_status', 
                                $character['Character']['id'], 
                                'mode:main_picture', 
@@ -72,6 +74,7 @@ foreach ($characterPictures as $key => $characterPicture):
                $html->link(
                        __('Delete Background Picture', true),
                        array(
+                               'controller' => 'characters', 
                                'action' => 'set_status', 
                                $character['Character']['id'], 
                                'mode:full_length', 
@@ -86,6 +89,7 @@ foreach ($characterPictures as $key => $characterPicture):
                $html->link(
                        __('Set Background Picture', true),
                        array(
+                               'controller' => 'characters', 
                                'action' => 'set_status', 
                                $character['Character']['id'], 
                                'mode:full_length', 
index e07d560..fa35fc3 100644 (file)
                        <?php echo $characterPicture['CharacterPicture']['public_flag']; ?>
                        &nbsp;
                </dd>
-               <dt<?php if ($i % 2 == 0) echo $class;?>><?php __('Main Picture'); ?></dt>
-               <dd<?php if ($i++ % 2 == 0) echo $class;?>>
-                       <?php echo $characterPicture['CharacterPicture']['main_picture']; ?>
-                       &nbsp;
-               </dd>
-               <dt<?php if ($i % 2 == 0) echo $class;?>><?php __('Full Length'); ?></dt>
-               <dd<?php if ($i++ % 2 == 0) echo $class;?>>
-                       <?php echo $characterPicture['CharacterPicture']['full_length']; ?>
-                       &nbsp;
-               </dd>
                <dt<?php if ($i % 2 == 0) echo $class;?>><?php __('Created'); ?></dt>
                <dd<?php if ($i++ % 2 == 0) echo $class;?>>
                        <?php echo $characterPicture['CharacterPicture']['created']; ?>