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

Ignore:
Timestamp:
Dec 23, 2008, 4:16:49 PM (12 years ago)
Author:
ShogoKawahara
Message:

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • OpenPNE3/trunk/apps/pc_backend/modules/profile/actions/actions.class.php

    r8567 r9640  
    1818  public function executeList($request)
    1919  {
    20     $this->profiles = ProfilePeer::doSelect(new Criteria());
     20    $criteria = new Criteria();
     21    $criteria->addAscendingOrderByColumn(ProfilePeer::SORT_ORDER);
     22    $this->profiles = ProfilePeer::doSelect($criteria);
    2123    $this->option_form = array();
     24
     25    $criteria = new Criteria();
     26    $criteria->addAscendingOrderByColumn(ProfileOptionPeer::SORT_ORDER);
    2227    foreach ($this->profiles as $value) {
    2328      $this->option_form[$value->getId()] = array();
    24       foreach ($value->getProfileOptions() as $option) {
     29      foreach ($value->getProfileOptions($criteria) as $option) {
    2530        $this->option_form[$value->getId()][$option->getId()] = new ProfileOptionForm(ProfileOptionPeer::retrieveByPk($option->getId()));
    2631      }
     
    100105    $this->redirect('profile/list');
    101106  }
     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  }
    102162}
Note: See TracChangeset for help on using the changeset viewer.