diff options
| author | Bharat Mediratta <bharat@menalto.com> | 2010-01-21 20:38:25 -0800 | 
|---|---|---|
| committer | Bharat Mediratta <bharat@menalto.com> | 2010-01-21 20:38:25 -0800 | 
| commit | 318c86ab56ec63f2f65af0581991c7a5dc8ae433 (patch) | |
| tree | eb4de1e0d3bb4c800c9fdd1e4ed45a0b66961426 /modules/gallery/controllers/admin_modules.php | |
| parent | 8788880065ca199216df552f66fd065c3f35a0aa (diff) | |
| parent | 0da5d9e606fba5b6dc6137812df32cd1d0f5750f (diff) | |
Merge branch 'master' of git@github.com:gallery/gallery3 into bharat_dev
Diffstat (limited to 'modules/gallery/controllers/admin_modules.php')
| -rw-r--r-- | modules/gallery/controllers/admin_modules.php | 41 | 
1 files changed, 40 insertions, 1 deletions
| diff --git a/modules/gallery/controllers/admin_modules.php b/modules/gallery/controllers/admin_modules.php index 549718e7..46defbef 100644 --- a/modules/gallery/controllers/admin_modules.php +++ b/modules/gallery/controllers/admin_modules.php @@ -25,9 +25,48 @@ class Admin_Modules_Controller extends Admin_Controller {      print $view;    } + +  public function confirm() { +    access::verify_csrf(); + +    $messages = array("error" => array(), "warn" => array()); +    $desired_list = array(); +    foreach (module::available() as $module_name => $info) { +      if ($info->locked) { +        continue; +      } + +      if ($desired = Input::instance()->post($module_name) == 1) { +        $desired_list[] = $module_name; +      } +      if ($info->active && !$desired && module::is_active($module_name)) { +        $messages = array_merge($messages, module::can_deactivate($module_name)); +      } else if (!$info->active && $desired && !module::is_active($module_name)) { +        $messages = array_merge($messages, module::check_environment($module_name)); +      } +    } + +    if (empty($messages["error"]) && empty($messages["warn"])) { +      $this->_do_save(); +      $result["reload"] = 1; +    } else { +      $v = new View("admin_modules_confirm.html"); +      $v->messages = $messages; +      $v->modules = $desired_list; +      $result["dialog"] = (string)$v; +      $result["allow_continue"] = empty($messages["error"]); +    } +    print json_encode($result); +  } +    public function save() {      access::verify_csrf(); +    $this->_do_save(); +    url::redirect("admin/modules"); +  } + +  private function _do_save() {      $changes->activate = array();      $changes->deactivate = array();      $activated_names = array(); @@ -45,6 +84,7 @@ class Admin_Modules_Controller extends Admin_Controller {        } else if (!$info->active && $desired && !module::is_active($module_name)) {          $changes->activate[] = $module_name;          $activated_names[] = t($info->name); +          if (module::is_installed($module_name)) {            module::upgrade($module_name);          } else { @@ -63,7 +103,6 @@ class Admin_Modules_Controller extends Admin_Controller {      if ($deactivated_names) {        message::success(t("Deactivated: %names", array("names" => join(", ", $deactivated_names))));      } -    url::redirect("admin/modules");    }  } | 
