is_photo()) { $panorama = ORM::factory("panorama")->where("item_id", "=", $item->id)->find(); $form->edit_item->checkbox("panorama_panorama") ->label(t("Display as a panorama")) ->id("g-panorama-panorama") ->checked($panorama->checked); $form->edit_item->input("panorama_HFOV") ->label(t("Horizontal FOV")) ->id("g-panorama-HFOV") ->value($panorama->HFOV); $form->edit_item->input("panorama_VFOV") ->label(t("Vertical FOV")) ->id("g-panorama-VFOV") ->value($panorama->VFOV); } } static function item_edit_form_completed($item, $form) { $panorama = ORM::factory("panorama")->where("item_id", "=", $item->id)->find(); if (!($panorama->loaded())) { $panorama->item_id = $item->id; } $panorama->checked= $form->edit_item->panorama_panorama->checked; $panorama->HFOV= $form->edit_item->panorama_HFOV->value; $panorama->VFOV= $form->edit_item->panorama_VFOV->value; /* If unspecified, we'll assume it's a full 360 panorama. Otherwise, we assume HFOV is accurate. In either case, we calculate the other value from the given one plus the image ratio */ if (!($panorama->HFOV) && !($panorama->VFOV)) { $panorama->HFOV = 360; $panorama->VFOV = $panorama->HFOV / $item->width * $item->height; } else if ($panorama->HFOV) { $panorama->VFOV = $panorama->HFOV / $item->width * $item->height; } else { $panorama->HFOV = $panorama->VFOV * $item->width / $item->height; } $panorama->save(); } }