id); $form = $this->_get_form($item, $watching); if (request::method() == "post") { if ($form->validate()) { $watch_children = $form->watch->inputs["apply_to_children"]->value; if (!$watching) { notification::add_watch($item, $watch_children); message::success(sprintf(t("Watch Enabled on %s!"), $item->title)); $response = json_encode(array("result" => "success")); } else { notification::remove_watch($item, $watch_children); $response = json_encode(array("result" => "success")); message::success(sprintf(t("Watch Removed on %s!"), $item->title)); } } else { $response = json_encode(array("result" => "error", "form" => $form->__toString())); } } else { $response = $form; } print $response; } function _get_form($item, $watching) { $button_text = $watching ? t("Remove Watch") : t("Add Watch"); if ($item->is_album()) { $label = $watching ? t("Remove Watch from Album") : t("Add Watch to Album"); } else { $label = $watching ? t("Remove Watch from Photo") : t("Add Watch to Photo"); } $form = new Forge("notification/watch/$item->id", "", "post", array("id" => "gAddWatchForm")); $group = $form->group("watch")->label($label); $checkbox = $group->checkbox("apply_to_children") ->label(t("Apply to Children")) ->checked($item->is_album()); if (!$item->is_album()) { $checkbox->disabled("disabled"); } $group->submit("")->value($button_text); return $form; } }