ここの情報は古いです。ご理解頂いた上でお取り扱いください。

source: OpenPNE3/trunk/apps/pc_backend/modules/profile/actions/actions.class.php @ 9640

Last change on this file since 9640 was 9640, checked in by ShogoKawahara, 12 years ago

added ability to change sort order of the profile items by Ajax

File size: 4.2 KB
Line 
1<?php
2
3/**
4 * profile actions.
5 *
6 * @package    OpenPNE
7 * @subpackage profile
8 * @author     Kousuke Ebihara <ebihara@tejimaya.com>
9 * @version    SVN: $Id: actions.class.php 9301 2008-05-27 01:08:46Z dwhittle $
10 */
11class profileActions extends sfActions
12{
13 /**
14  * Executes list action
15  *
16  * @param sfRequest $request A request object
17  */
18  public function executeList($request)
19  {
20    $criteria = new Criteria();
21    $criteria->addAscendingOrderByColumn(ProfilePeer::SORT_ORDER);
22    $this->profiles = ProfilePeer::doSelect($criteria);
23    $this->option_form = array();
24
25    $criteria = new Criteria();
26    $criteria->addAscendingOrderByColumn(ProfileOptionPeer::SORT_ORDER);
27    foreach ($this->profiles as $value) {
28      $this->option_form[$value->getId()] = array();
29      foreach ($value->getProfileOptions($criteria) as $option) {
30        $this->option_form[$value->getId()][$option->getId()] = new ProfileOptionForm(ProfileOptionPeer::retrieveByPk($option->getId()));
31      }
32      $newProfileOption = new ProfileOption();
33      $newProfileOption->setProfileId($value->getId());
34      $this->option_form[$value->getId()][] = new ProfileOptionForm($newProfileOption);
35    }
36  }
37
38 /**
39  * Executes edit action
40  *
41  * @param sfRequest $request A request object
42  */
43  public function executeEdit($request)
44  {
45    $this->profile = ProfilePeer::retrieveByPk($request->getParameter('id'));
46    $this->form = new ProfileForm($this->profile);
47
48    if ($request->isMethod('post')) {
49      $this->form->bind($request->getParameter('profile'));
50      if ($this->form->isValid()) {
51        $this->form->save();
52        $this->redirect('profile/list');
53      }
54    }
55  }
56
57 /**
58  * Executes editOption action
59  *
60  * @param sfRequest $request A request object
61  */
62  public function executeEditOption($request)
63  {
64    $this->profileOption = ProfileOptionPeer::retrieveByPk($request->getParameter('id'));
65    $this->form = new ProfileOptionForm($this->profileOption);
66
67    if ($request->isMethod('post')) {
68      $this->form->bind($request->getParameter('profile_option'));
69      if ($this->form->isValid()) {
70        $this->form->save();
71      }
72    }
73    $this->redirect('profile/list');
74  }
75
76 /**
77  * Executes delete action
78  *
79  * @param sfRequest $request A request object
80  */
81  public function executeDelete($request)
82  {
83    $this->profile = ProfilePeer::retrieveByPk($request->getParameter('id'));
84    $this->forward404Unless($this->profile);
85
86    if ($request->isMethod('post')) {
87      $this->profile->delete();
88      $this->redirect('profile/list');
89    }
90  }
91
92 /**
93  * Executes deleteOption action
94  *
95  * @param sfRequest $request A request object
96  */
97  public function executeDeleteOption($request)
98  {
99    $this->profileOption = ProfileOptionPeer::retrieveByPk($request->getParameter('id'));
100    $this->forward404Unless($this->profileOption);
101
102    if ($request->isMethod('post')) {
103      $this->profileOption->delete();
104    }
105    $this->redirect('profile/list');
106  }
107
108  /**
109   * Executes sortProfile action
110   *
111   * @param sfRequest $request A request object
112   */
113  public function executeSortProfile($request)
114  {
115    if ($request->isXmlHttpRequest())
116    {
117      $order = $request->getParameter('profiles');
118      for ($i = 0; $i < count($order); $i++)
119      {
120        $profile = ProfilePeer::retrieveByPk($order[$i]);
121        if ($profile)
122        {
123          $profile->setSortOrder($i * 10);
124          $profile->save();
125        }
126      }
127    }
128    return sfView::NONE;
129  }
130
131  /**
132   * Executes sortProfileOption action
133   *
134   * @param sfRequest $request A request object
135   */
136  public function executeSortProfileOption($request)
137  {
138    if ($request->isXmlHttpRequest())
139    {
140      $parameters = $request->getParameterHolder();
141      $keys       = $parameters->getNames();
142      foreach ($keys as $key)
143      {
144        if (preg_match('/^profile_options_\d+$/', $key, $match))
145        {
146          $order = $parameters->get($match[0]);
147          for ($i = 0; $i < count($order); $i++)
148          {
149            $profileOption = ProfileOptionPeer::retrieveByPk($order[$i]);
150            if ($profileOption)
151            {
152              $profileOption->setSortOrder($i * 10);
153              $profileOption->save();
154            }
155          }
156          break;
157        }
158      }
159    }
160    return sfView::NONE;
161  }
162}
Note: See TracBrowser for help on using the repository browser.