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

Changeset 9640


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

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

Location:
OpenPNE3/trunk/apps/pc_backend/modules/profile
Files:
2 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}
  • OpenPNE3/trunk/apps/pc_backend/modules/profile/templates/listSuccess.php

    r7930 r9640  
     1<?php use_helper('Javascript'); ?>
    12<h2>プロフィール項目設定</h2>
    23
    34<h3>プロフィール項目一覧</h3>
    45<p><?php echo link_to('プロフィール項目登録', 'profile/edit') ?></p>
    5 <table>
     6<table id="profiles">
    67<thead><tr>
    78<th colspan="2">操作</th>
     
    1920</tr></thead>
    2021<?php foreach ($profiles as $value): ?>
     22<tbody id="profile_<?php echo $value->getId() ?>" class="sortable">
    2123<tr>
    2224<td><?php echo link_to('変更', 'profile/edit?id=' . $value->getId()) ?></td>
     
    3436<td><?php echo ($value->getIsDispSearch() ? '○' : '×') ?></td>
    3537</tr>
     38</tbody>
    3639<?php endforeach; ?>
    3740</table>
     41<?php echo sortable_element('profiles',array(
     42  'tag' => 'tbody',
     43  'url' => 'profile/sortProfile'
     44)) ?>
    3845
    3946<h3>プロフィール選択肢一覧</h3>
     
    4249
    4350<h4><?php echo $value->getCaption() ?></h4>
    44 <table>
     51<table id="profile_options_<?php echo $value->getId() ?>">
    4552<thead><tr>
    4653<th>ID</th>
     
    5158<?php foreach ($option_form[$value->getId()] as $form) : ?>
    5259<form action="<?php echo url_for('profile/editOption?id=' . $form->getObject()->getId()) ?>" method="post">
     60<?php if (!$form->getObject()->isNew()) : ?>
     61<tbody id="profile_option_<?php echo $form->getObject()->getId() ?>" class="sortable">
     62<?php else: ?>
     63<tbody>
     64<?php endif; ?>
    5365<tr>
    5466<td><?php echo ($form->getObject()->isNew() ? '-' : $form->getObject()->getId()) ?></td>
     
    8193<?php endif; ?>
    8294</tr>
     95</tbody>
    8396<?php endforeach; ?>
    8497</table>
    85 
     98<?php echo sortable_element('profile_options_'.$value->getId(),array(
     99  'tag'  => 'tbody',
     100  'only' => 'sortable',
     101  'url'  => 'profile/sortProfileOption'
     102)) ?>
    86103<?php endif; ?>
    87104<?php endforeach; ?>
Note: See TracChangeset for help on using the changeset viewer.