_get_admin_form(); $this->_print_screen($form); } public function save() { access::verify_csrf(); $form = $this->_get_admin_form(); if ($form->validate()) { foreach (array('jpg', 'png', 'gif') as $type) { module::set_var("image_optimizer", "path_".$type, $form->paths->{"path_".$type}->value); module::set_var("image_optimizer", "optlevel_thumb_".$type, $form->thumb->{"optlevel_thumb_".$type}->value); module::set_var("image_optimizer", "optlevel_resize_".$type, $form->resize->{"optlevel_resize_".$type}->value); } module::set_var("image_optimizer", "rotate_jpg", ($form->rotate->rotate_jpg->value == 1)); foreach (array('thumb', 'resize') as $target) { module::set_var("image_optimizer", "convert_".$target."_gif", $form->$target->{"convert_".$target."_gif"}->value); module::set_var("image_optimizer", "convert_".$target."_png", $form->$target->{"convert_".$target."_png"}->value); module::set_var("image_optimizer", "metastrip_".$target, ($form->$target->{"metastrip_".$target}->value == 1)); module::set_var("image_optimizer", "progressive_".$target, ($form->$target->{"progressive_".$target}->value == 1)); // deal with enable changes $enable_old = module::get_var("image_optimizer", "enable_".$target); $enable_new = ($form->$target->{"enable_".$target}->value == 1); if ($enable_new && !$enable_old) { image_optimizer::add_image_optimizer_rule($target); module::set_var("image_optimizer", "enable_".$target, true); } elseif (!$enable_new && $enable_old) { image_optimizer::remove_image_optimizer_rule($target); module::set_var("image_optimizer", "enable_".$target, false); } // deal with update mode changes $update_mode_old = module::get_var("image_optimizer", "update_mode_".$target); $update_mode_new = ($form->$target->{"update_mode_".$target}->value == 1); if ($update_mode_new && !$update_mode_old) { image_optimizer::activate_update_mode($target); } elseif (!$update_mode_new && $update_mode_old) { image_optimizer::deactivate_update_mode($target); } // dirty images if needed if ($form->$target->{"rebuild_".$target}->value == 1) { image_optimizer::dirty($target); } } // all done; redirect with message message::success(t("Image optimizer settings updated successfully")); url::redirect("admin/image_optimizer"); } // not valid - print screen from existing form $this->_print_screen($form); } private function _print_screen($form) { // this part is a bit of a hack, but Forge doesn't seem to allow set_attr() for groups. $form = $form->render(); $form = preg_replace("/
/","
",$form,2); $form = preg_replace("/
/","
",$form,1); $form = preg_replace("/
/","
",$form,1); // make and print view $view = new Admin_View("admin.html"); $view->page_title = t("Image optimizer settings"); $view->content = new View("admin_image_optimizer.html"); $view->content->form = $form; // get module parameters foreach (array('jpg', 'png', 'gif') as $type) { $view->content->{"installed_path_".$type} = image_optimizer::tool_installed_path($type); $view->content->{"version_".$type} = image_optimizer::tool_version($type); } print $view; } private function _get_admin_form() { $form = new Forge("admin/image_optimizer/save", "", "post", array("id" => "g-image-optimizer-admin-form")); $group_paths = $form->group("paths")->label(t("Toolkit paths"))->set_attr("id","g-image-optimizer-admin-form-paths"); foreach (array('jpg', 'png', 'gif') as $type) { $path = strval(module::get_var("image_optimizer", "path_".$type, null)); $group_paths->input("path_".$type) ->label(t("Path for")." ".image_optimizer::tool_name($type)." (".t("no symlinks, default")." ".MODPATH."image_optimizer/lib/".image_optimizer::tool_name($type).")") ->value($path); } $group_rotate = $form->group("rotate")->label(t("Full-size image rotation"))->set_attr("id","g-image-optimizer-admin-form-rotate"); $group_rotate->checkbox("rotate_jpg") ->label(t("Override default toolkit and use")." ".image_optimizer::tool_name('jpg')." ".t("for rotation")) ->checked(module::get_var("image_optimizer", "rotate_jpg", null)); foreach (array('thumb', 'resize') as $target) { ${'group_'.$target} = $form->group($target)->label(ucfirst($target)." ".t("images optimization"))->set_attr("id","g-image-optimizer-admin-form-".$target); ${'group_'.$target}->checkbox("enable_".$target) ->label(t("Enable optimization")) ->checked(module::get_var("image_optimizer", "enable_".$target, null)); ${'group_'.$target}->checkbox("update_mode_".$target) ->label(t("Enable update mode - deactivates all other graphics rules to allow fast optimization on existing images; MUST deactivate this after initial rebuild!")) ->checked(module::get_var("image_optimizer", "update_mode_".$target, null)); ${'group_'.$target}->checkbox("rebuild_".$target) ->label(t("Mark all existing images for rebuild - afterward, go to Maintenace | Rebuild Images")) ->checked(false); // always set as false ${'group_'.$target}->dropdown("convert_".$target."_png") ->label(t("PNG conversion")) ->options(array(0=>t("none"), "jpg"=>("JPG ".t("(not lossless)")))) ->selected(module::get_var("image_optimizer", "convert_".$target."_png", null)); ${'group_'.$target}->dropdown("convert_".$target."_gif") ->label(t("GIF conversion")) ->options(array(0=>t("none"), "jpg"=>("JPG ".t("(not lossless)")), "png"=>("PNG ".t("(lossless)")))) ->selected(module::get_var("image_optimizer", "convert_".$target."_gif", null)); ${'group_'.$target}->dropdown("optlevel_".$target."_jpg") ->label(t("JPG compression optimization (default: enabled)")) ->options(array(0=>t("disabled"), 1=>t("enabled"))) ->selected(module::get_var("image_optimizer", "optlevel_".$target."_jpg", null)); ${'group_'.$target}->dropdown("optlevel_".$target."_png") ->label(t("PNG compression optimization (default: level 2)")) ->options(array(0=>t("disabled"), 1=>t("level 1: 1 trial"), 2=>t("level 2: 8 trials"), 3=>t("level 3: 16 trials"), 4=>t("level 4: 24 trials"), 5=>t("level 5: 48 trials"), 6=>t("level 6: 120 trials"), 7=>t("level 7: 240 trials"))) ->selected(module::get_var("image_optimizer", "optlevel_".$target."_png", null)); ${'group_'.$target}->dropdown("optlevel_".$target."_gif") ->label(t("GIF compression optimization (default: enabled)")) ->options(array(0=>t("disabled"), 1=>t("enabled"))) ->selected(module::get_var("image_optimizer", "optlevel_".$target."_gif", null)); ${'group_'.$target}->checkbox("metastrip_".$target) ->label(t("Remove all meta data")) ->checked(module::get_var("image_optimizer", "metastrip_".$target, null)); ${'group_'.$target}->checkbox("progressive_".$target) ->label(t("Make images progressive/interlaced")) ->checked(module::get_var("image_optimizer", "progressive_".$target, null)); } $form->submit("")->value(t("Save")); return $form; } }