/[drupal]/contributions/modules/rpg/contrib/rpg_rulesets/rpg_rulesets.module
ViewVC logotype

Diff of /contributions/modules/rpg/contrib/rpg_rulesets/rpg_rulesets.module

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.3, Sat Mar 8 00:31:03 2008 UTC revision 1.4, Sat Apr 26 00:57:58 2008 UTC
# Line 1  Line 1 
1  <?php  <?php
2  // $Id: rpg_rulesets.module,v 1.2 2008/01/03 01:59:56 aaron Exp $  // $Id: rpg_rulesets.module,v 1.3 2008/03/08 00:31:03 aaron Exp $
3    
4  function rpg_rulesets_menu($may_cache) {  function rpg_rulesets_menu($may_cache) {
5    $items = array();    $items = array();
# Line 71  function rpg_rulesets_admin_page($module Line 71  function rpg_rulesets_admin_page($module
71  }  }
72    
73  function rpg_rulesets_admin_module_page($module) {  function rpg_rulesets_admin_module_page($module) {
74      _rpg_rulesets_include_files($module);
75    $ruleset = module_invoke($module, 'rpg_ruleset');    $ruleset = module_invoke($module, 'rpg_ruleset');
76    $form = array();    $form = array();
77    $form['ruleset'] = array(    $form['ruleset'] = array(
# Line 131  function rpg_rulesets_admin_module_page( Line 132  function rpg_rulesets_admin_module_page(
132        }        }
133      }      }
134    }    }
135      if (module_exists('rpg_achieve')) {
136        $form['ruleset']['achieve'] = _rpg_rulesets_achieve_form($module, $ruleset);
137      }
138    $form['__module'] = array(    $form['__module'] = array(
139      '#type' => 'value',      '#type' => 'value',
140      '#value' => $module,      '#value' => $module,
# Line 142  function rpg_rulesets_admin_module_page( Line 146  function rpg_rulesets_admin_module_page(
146    return $form;    return $form;
147  }  }
148    
149    function _rpg_rulesets_achieve_form($module, $ruleset) {
150      $form = array(
151        '#type' => 'fieldset',
152        '#title' => t('Achievements'),
153        '#description' => t('This is an overview of all RPG Achievements offered by this ruleset. Achievements already defined in the system are listed in the lower section below; they may be overridden if desired.'),
154        '#collapsible' => TRUE,
155        '#collapsed' => FALSE,
156      );
157      $form['new'] = array(
158        '#type' => 'fieldset',
159        '#title' => t('New achievements'),
160        '#description' => t('Check the boxes of each Achievement you wish to import.'),
161        '#collapsible' => TRUE,
162        '#collapsed' => TRUE,
163      );
164      $form['defined'] = array(
165        '#type' => 'fieldset',
166        '#title' => t('Achievements already defined'),
167        '#description' => t("If an achievement conflicts with an achievement already in the system, you will see that achievement listed here. In such a case, if you select the achievement anyway, the system achievement will be overridden with this ruleset's definition."),
168        '#collapsible' => TRUE,
169        '#collapsed' => TRUE,
170      );
171      $achievements = $ruleset['#achievements'];
172      if (is_array($achievements)) {
173        foreach ($achievements as $name) {
174          $achievement = module_invoke($module, 'rpg_achieve_' . $name);
175          $exists = rpg_achieve_get_achievement_text($name, FALSE);
176          $checkbox = array(
177            '#type' => 'checkbox',
178            '#title' => $achievement['#name'],
179            '#description' => $achievement['#description'],
180          );
181          if ($exists) {
182            $form['defined']['#collapsed'] = FALSE;
183            $form['defined'][$name] = $checkbox;
184          }
185          else {
186            $form['new']['#collapsed'] = FALSE;
187            $form['new'][$name] = $checkbox;
188          }
189        }
190      }
191      return $form;
192    }
193    
194  /**  /**
195   *  This will import the types selected from the admin page.   *  This will import the types selected from the admin page.
196   */   */
197  function rpg_rulesets_admin_page_submit($form_id, $form_values) {  function rpg_rulesets_admin_page_submit($form_id, $form_values) {
198    $module = $form_values['__module'];    $module = $form_values['__module'];
199      _rpg_rulesets_include_files($module);
200    $ruleset = module_invoke($module, 'rpg_ruleset');    $ruleset = module_invoke($module, 'rpg_ruleset');
201    $types = $ruleset['#types'];    $types = $ruleset['#types'];
202    foreach ($types as $type_name) {    foreach ($types as $type_name) {
# Line 195  function rpg_rulesets_admin_page_submit( Line 245  function rpg_rulesets_admin_page_submit(
245      rpg_types(NULL, false);      rpg_types(NULL, false);
246    }    }
247    
248      if (module_exists('rpg_achieve')) {
249        foreach ($ruleset['#achievements'] as $name) {
250          if ($form_values[$name]) {
251            $achievement = module_invoke($module, 'rpg_achieve_' . $name);
252            $achievement = _rpg_rulesets_convert_achievement($achievement);
253            rpg_achieve_set_achievement_text($name, $achievement['name'], $achievement['description'], $achievement['exposed_default']);
254            drupal_set_message(t('Imported RPG Achievement: @achievement', array('@achievement' => $achievement['name'])));
255          }
256        }
257      }
258    
259    return 'admin/rpg/rulesets';    return 'admin/rpg/rulesets';
260  }  }
261    
262    function _rpg_rulesets_convert_achievement($fapi) {
263      $achievement = array();
264      $achievement['achievement'] = $fapi['#achievement'];
265      $achievement['name'] = $fapi['#name'];
266      $achievement['description'] = $fapi['#description'];
267      $achievement['exposed_default'] = $fapi['#exposed_default'];
268      return $achievement;
269    }
270    
271  /**  /**
272   *  This converts the FAPI type of the ruleset into an rpg type, to prepare it for saving.   *  This converts the FAPI type of the ruleset into an rpg type, to prepare it for saving.
273   *  TODO: figure out whatever hooks are called here.   *  TODO: figure out whatever hooks are called here.
# Line 314  function theme_rpg_rulesets_admin_page_r Line 384  function theme_rpg_rulesets_admin_page_r
384    return $output;    return $output;
385  }  }
386    
387    function _rpg_rulesets_include_files($module) {
388      $file = drupal_get_path('module', $module) . "/$module.rpg_ruleset.inc";
389      if (file_exists($file)) {
390        include_once($file);
391      }
392    }

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

  ViewVC Help
Powered by ViewVC 1.1.2