diff options
author | Michael Francis <edude03@gmail.com> | 2011-05-29 16:35:13 -0400 |
---|---|---|
committer | Michael Francis <edude03@gmail.com> | 2011-05-29 16:35:13 -0400 |
commit | 88666d9644f06f2dd37516c95661f24d9f2eadbe (patch) | |
tree | a8cf506993598aebe8acbd7755626dd784817907 | |
parent | 5632af0c0e7bf914227cdf237d370858b88ac969 (diff) | |
download | otakuhub-88666d9644f06f2dd37516c95661f24d9f2eadbe.tar.xz |
Implemented / Fixed adding
-rw-r--r-- | controllers/AnimelistController.php | 38 | ||||
-rw-r--r-- | models/Entry.php | 47 | ||||
-rw-r--r-- | views/Anime_list/add.html.php | 41 | ||||
-rw-r--r-- | views/Anime_list/view.html.php | 2 | ||||
-rw-r--r-- | views/anime_list/addsearch.html.php | 21 |
5 files changed, 123 insertions, 26 deletions
diff --git a/controllers/AnimelistController.php b/controllers/AnimelistController.php index c61577a..7eb8c4c 100644 --- a/controllers/AnimelistController.php +++ b/controllers/AnimelistController.php @@ -5,24 +5,29 @@ namespace app\controllers; use app\models\contentList; use app\models\User; use app\models\Anime; +use app\models\Entry; +use \lithium\security\Auth; class AnimeListController extends \lithium\action\Controller { public $publicActions = array('view'); + public function view($username, $sort = "all") { $user = User::find('first', array('conditions' => compact('username'))); - $watching = array(); $paused = array(); $dropped = array(); $planning = array(); $finished = array(); - + //The anime list comes back as a DocumentArray, so we can + //parse through them with a foreach + //For each entry, foreach($user->animelist as $entry) { + //Sort it based on status switch($entry->my_status) { case "Completed": $finished[] = $entry; break; @@ -46,16 +51,33 @@ class AnimeListController extends \lithium\action\Controller { } } - public function add($id) + public function addsearch() + { + if (isset($this->request->query['Search'])) { + $searchParam = '/' . $this->request->query['Search'] . '/i'; + if($this->request->query['Search']) + { + return Anime::search($searchParam); + } + } + } + + //Ensure the correct user here + public function add($id = null) { if (empty($this->request->data)) { - $anime = Anime::find('first', array('conditions' => array('special_id' => $id))); - $entry = null; - return compact('anime', 'entry'); + if ('id' != null) + { + $anime = Anime::find('first', array('conditions' => array('special_id' => $id))); + $entry = null; + return compact('anime', 'entry'); + } + return array('anime' => null, 'entry' => null); } - $entry = Entry::create($this->request->data); + $user = Auth::check('default'); + $username = $user['username']; if (isset($this->request->data['tags'])) { @@ -66,7 +88,7 @@ class AnimeListController extends \lithium\action\Controller { if ($entry->validates()) { $entry->add($username); - return $this->redirects('Animelist::Index'); + return $this->redirect("/animelist/view/$username"); } return $entry; diff --git a/models/Entry.php b/models/Entry.php index 3b27393..e7d089b 100644 --- a/models/Entry.php +++ b/models/Entry.php @@ -2,8 +2,55 @@ namespace app\models; +use app\models\Users; + Class entry extends \lithium\data\Model { public static function __init() { parent::__init(); + + //Validators go here + } + + /* Things to validate: + ["my_watched_episodes"]=> + string(2) "12" is equal to or less than anime->episode_count + ["my_start_date"]=> + string(5) "today" is a date + ["my_finish_date"]=> + string(5) "today" is a date later than start date + ["my_score"]=> + string(3) "15 " is between 0 and 10 + ["my_status"]=> + string(1) "3" + ["my_comments"]=> + string(18) "This anime is tits" + ["my_times_watched"]=> + string(1) "2" is int + ["rewatch_value"]=> + string(1) "2" + ["tags"]=> + string(46) "winning tigerblood childrens_show your_grandma" + ["rewatching"]=> + string(0) "" + **/ + + /* + public function add($entity, $username) + { + var_dump($entity->_data); + exit(); + $updateData = array('$push' => array('animelist' => $entity)); + $conditions = array('username' => $username); + $result = Entry::update($updateData, $conditions, array('atomic' => false)); + return $result; + } + */ + + public function add($entity, $username) + { + $user = User::find('first', array('conditions' => compact('username'))); + $user->animelist[] = $entity; + return $user->save(null, array('validate' => false)); + } }
\ No newline at end of file diff --git a/views/Anime_list/add.html.php b/views/Anime_list/add.html.php index 5e9699a..c5e2fea 100644 --- a/views/Anime_list/add.html.php +++ b/views/Anime_list/add.html.php @@ -1,33 +1,40 @@ <?php if (empty($anime)): ?> -<p> Anime not found </p> +<h2 class="ribbon full">Find an Anime:</h2> +<div class="triangle-ribbon"></div> +<br class="clear" /> <?php else: ?> -<h1><?= $anime->series_title ?></h1> +<h2 class="ribbon full"><?= $anime->title ?></h2> +<div class="triangle-ribbon"></div> +<br class="clear" /> +<?php endif; ?> <?php echo $this->form->create($entry); - echo $this->form->hidden('series_animedb_id', array('value' => $anime->special_id)); - /* - <series_title><![CDATA[.hack//Sign]]></series_title> - <series_type>TV</series_type> - <series_episodes>26</series_episodes> - */ + + //Hidden because the user can't change these. + //These are stored in the anime list for faster lookup times, + //So we can avoid getting this data live for every anime. + if (isset($anime)) { + echo $this->form->hidden('series_animedb_id', array('value' => $anime->special_id)); + echo $this->form->hidden('series_title', array('value' => $anime->title)); + echo $this->form->hidden('series_type', array('value' => $anime->view_type)); + echo $this->form->hidden('series_episodes', array('value' => $anime->episode_count)); + } echo $this->form->field('my_watched_episodes', array('label' => 'Watched Episodes')); echo $this->form->field('my_start_date', array('label' => 'Start Date')); echo $this->form->field('my_finish_date', array('label' => 'Finish Date')); - //Make this Ajax in the future, but it will have to be removed - //If we partner with CR or otherwise - //echo $this->form->field('my_fansub_group', ); echo $this->form->field('my_score', array('label' => 'Score')); - //echo $this->form->field() // <my_dvd></my_dvd> - //<my_storage></my_storage> echo $this->form->label('my_status', 'Status'); - echo $this->form->select('my_status', array('Plan to Watch', 'On-Hold', 'Completed', 'Watching'), array('value' => 0)); //<my_status>Plan to Watch</my_status> + echo $this->form->select('my_status', array('Plan to Watch' => 'Plan to Watch', + 'On-Hold' => 'On-Hold', + 'Completed' => 'Completed', + 'Watching' => 'Watching', + 'Dropped' => 'Dropped')); echo $this->form->field('my_comments', array('label' => 'Comments')); echo $this->form->field('my_times_watched', array('label' => 'Times Watched')); echo $this->form->label('rewatch_value', 'Rewatch Value'); echo $this->form->select('rewatch_value', array('High', 'Medium', 'Low', 'None'), array('value' => 0)); echo $this->form->field('tags', array('type' => 'textarea')); - echo $this->form->field('rewatching', array('value' => false)); + echo $this->form->checkbox('rewatching', array('label' =>'Rewatching?', 'value' => false)); echo $this->form->submit('Save!'); -?> -<?php endif; ?>
\ No newline at end of file +?>
\ No newline at end of file diff --git a/views/Anime_list/view.html.php b/views/Anime_list/view.html.php index 2dec697..4c552d8 100644 --- a/views/Anime_list/view.html.php +++ b/views/Anime_list/view.html.php @@ -41,7 +41,7 @@ echo "</table>"; <br class="cl" /> </div> <div class="grid_2"> -<button class="large" style="margin-left:40px; margin-top:10px"><a href="/animelist/add?iframe=true&height=100%&width=100%">Add</a></button> +<button class="large" style="margin-left:40px; margin-top:10px"><a href="/animelist/addsearch">Add</a></button> </div> </div> diff --git a/views/anime_list/addsearch.html.php b/views/anime_list/addsearch.html.php new file mode 100644 index 0000000..eb5cbe1 --- /dev/null +++ b/views/anime_list/addsearch.html.php @@ -0,0 +1,21 @@ + +<?= $this->form->create(null, array('method' => 'get')); ?> + <?= $this->form->text('Search', array('value' => 'Search for...')); ?> + <?= $this->form->submit('Go', array('class' => 'button')); ?> +<?= $this->form->end(); ?> +<?php if (isset($content)): ?> + <table class="table"> + <tr><th>Entry #</th><th>Name</th><th>Type</th><th>Episodes</th><th>Score</th><th>Add</th></tr> + <?php $i = 1; foreach($content as $result): ?> + <tr> + <td># <?= $i ?></td> + <td><?= $result->title ?></td> + <td><?= $result->view_type ?></td> + <td><?= $result->episode_count ?></td> + <td><?= $result->mal_score ?></td> + <td><button class="green"><a href="/animelist/add/<?= $result->special_id ?>">Add</a></button></td> + <?php $i++; ?> + </tr> + <?php endforeach; ?> + </table> +<?php endif; ?>
\ No newline at end of file |