diff options
author | Tim Almdal <tnalmdal@shaw.ca> | 2009-06-22 21:51:22 -0700 |
---|---|---|
committer | Tim Almdal <tnalmdal@shaw.ca> | 2009-06-22 21:51:22 -0700 |
commit | 58d5624e401f1c369cbbf913008775bc5a165570 (patch) | |
tree | d2b67c7db5314c21636ae9663f451b018221a3bb /modules | |
parent | a8a366e3398ef15dcc67f70c25f7a34d99757e12 (diff) |
This commit moves a little further along the path:
1) moves the print button from the quick pane to thumb_bottom
2) Creates an entry into the proxy table
Diffstat (limited to 'modules')
-rw-r--r-- | modules/digibug/controllers/digibug.php | 64 | ||||
-rw-r--r-- | modules/digibug/css/digibug.css | 3 | ||||
-rw-r--r-- | modules/digibug/helpers/digibug.php | 57 | ||||
-rw-r--r-- | modules/digibug/helpers/digibug_installer.php | 6 | ||||
-rw-r--r-- | modules/digibug/helpers/digibug_theme.php | 23 | ||||
-rw-r--r-- | modules/digibug/js/digibug.js | 24 | ||||
-rw-r--r-- | modules/digibug/models/proxy.php (renamed from modules/digibug/helpers/digibug_quick.php) | 16 |
7 files changed, 155 insertions, 38 deletions
diff --git a/modules/digibug/controllers/digibug.php b/modules/digibug/controllers/digibug.php index f2f3d6cd..f90b88e2 100644 --- a/modules/digibug/controllers/digibug.php +++ b/modules/digibug/controllers/digibug.php @@ -18,35 +18,57 @@ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ class Digibug_Controller extends Controller { - public function index() { - print $this->_get_form(); - } - - public function handler() { + public function print_photo($id) { access::verify_csrf(); - $form = $this->_get_form(); - if ($form->validate()) { - // @todo process the admin form + $item = ORM::factory("item", $id); - message::success(t("Digibug Processing Successfully")); + $proxy = ORM::factory("proxy"); + $proxy->uuid = digibug::uuid(); + $proxy->item_id = $item->id; + $proxy->save(); - print json_encode( - array("result" => "success")); + $url = url::abs_site("digibug/print_proxy/{$proxy->uuid}"); + if (module::get_var("digibug", "mode", "basic")) { + $company_id = module::get_var("digibug", "basic_company_id"); + $event_id = module::get_var("digibug", "basic_event_id"); } else { - print json_encode( - array("result" => "error", - "form" => $form->__toString())); + $company_id = module::get_var("digibug", "company_id"); + $event_id = module::get_var("digibug", "event_id"); } + $digibug_parms = array( + "digibug_api_version" => "100", + "company_id" => $company_id, + "event_id" => $event_id, + "cmd" => "adding", + "return_url" => url::abs_site($this->input->get("return")), + "num_images" => "1", + "image_1" => $url, + "thumb_1" => "$url/thumb", + "image_height_1" => $item->height, + "image_width_1" => $item->width, + "thumb_height_1" => $item->thumb_height, + "thumb_width_1" => $item->thumb_width, + "title" => $item->title); + + Kohana::log("error", Kohana::debug($digibug_parms)); + + message::success( + t("Photo '%title' was submitted for printing.", array("title" => $item->title))); + print json_encode(array("result" => "success", "reload" => 1)); } - private function _get_form() { - $form = new Forge("digibug/handler", "", "post", - array("id" => "gDigibugForm")); - $group = $form->group("group")->label(t("Digibug Handler")); - $group->input("text")->label(t("Text"))->rules("required"); - $group->submit("submit")->value(t("Submit")); + public function print_proxy($id, $thumb=null) { + + // We don't need to save the session for this request + Session::abort_save(); - return $form; + // Dump out the image + header("Content-Type: $item->mime_type"); + Kohana::close_buffers(false); + $fd = fopen($file, "rb"); + fpassthru($fd); + fclose($fd); } + }
\ No newline at end of file diff --git a/modules/digibug/css/digibug.css b/modules/digibug/css/digibug.css index f5cd6717..a09e4551 100644 --- a/modules/digibug/css/digibug.css +++ b/modules/digibug/css/digibug.css @@ -84,5 +84,8 @@ width: 180px; } +.gDigibugPrintButton { + float: left; +} diff --git a/modules/digibug/helpers/digibug.php b/modules/digibug/helpers/digibug.php new file mode 100644 index 00000000..46c9d945 --- /dev/null +++ b/modules/digibug/helpers/digibug.php @@ -0,0 +1,57 @@ +<?php defined("SYSPATH") or die("No direct script access."); +/** + * Gallery - a web based photo album viewer and editor + * Copyright (C) 2000-2009 Bharat Mediratta + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. + */ +class digibug_Core { + /** + * Get a unique id for a print request. + * Its a good thing we only support linux as this won't work on Windows + */ + static function uuid() { + $fp = @fopen("/dev/urandom", "rb"); + $bits = @fread($fp, 16); + @fclose($fp); + + $time_low = bin2hex(substr($bits, 0, 4)); + $time_mid = bin2hex(substr($bits, 4, 2)); + $time_hi_and_version = bin2hex(substr($bits, 6, 2)); + $clock_seq_hi_and_reserved = bin2hex(substr($bits, 8, 2)); + $node = bin2hex ( substr ( $bits, 10, 6 ) ); + + /** + * Set the four most significant bits (bits 12 through 15) of the + * time_hi_and_version field to the 4-bit version number from + * Section 4.1.3. + * @see http://tools.ietf.org/html/rfc4122#section-4.1.3 + */ + $time_hi_and_version = hexdec ( $time_hi_and_version ); + $time_hi_and_version = $time_hi_and_version >> 4; + $time_hi_and_version = $time_hi_and_version | 0x4000; + + /** + * Set the two most significant bits (bits 6 and 7) of the + * clock_seq_hi_and_reserved to zero and one, respectively. + */ + $clock_seq_hi_and_reserved = hexdec ( $clock_seq_hi_and_reserved ); + $clock_seq_hi_and_reserved = $clock_seq_hi_and_reserved >> 2; + $clock_seq_hi_and_reserved = $clock_seq_hi_and_reserved | 0x8000; + + return sprintf ('%08s-%04s-%04x-%04x-%012s', + $time_low, $time_mid, $time_hi_and_version, $clock_seq_hi_and_reserved, $node); + } +} diff --git a/modules/digibug/helpers/digibug_installer.php b/modules/digibug/helpers/digibug_installer.php index 33b5107b..73645eb7 100644 --- a/modules/digibug/helpers/digibug_installer.php +++ b/modules/digibug/helpers/digibug_installer.php @@ -22,9 +22,9 @@ class digibug_installer { $version = module::get_version("digibug"); if ($version == 0) { Database::instance() - ->query("CREATE TABLE {print_proxy} ( + ->query("CREATE TABLE {proxies} ( `id` int(9) NOT NULL auto_increment, - `proxy_id` char(55) NOT NULL, + `uuid` char(32) NOT NULL, `item_id` int(9), PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;"); @@ -38,7 +38,7 @@ class digibug_installer { } static function uninstall() { - Database::instance()->query("DROP TABLE IF EXISTS {print_proxy}"); + Database::instance()->query("DROP TABLE IF EXISTS {proxys}"); module::delete("digibug"); } } diff --git a/modules/digibug/helpers/digibug_theme.php b/modules/digibug/helpers/digibug_theme.php index 06d656c8..2e44b115 100644 --- a/modules/digibug/helpers/digibug_theme.php +++ b/modules/digibug/helpers/digibug_theme.php @@ -18,8 +18,31 @@ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ class digibug_theme_Core { + static function head($theme) { + $head[] = "<link media=\"screen, projection\" rel=\"stylesheet\" type=\"text/css\" href=\"" . + url::file("modules/digibug/css/digibug.css") . "\" />"; + $head[] = html::script("modules/digibug/js/digibug.js");; + return implode("\n", $head); + } + static function admin_head($theme) { return "<link media=\"screen, projection\" rel=\"stylesheet\" type=\"text/css\" href=\"" . url::file("modules/digibug/css/digibug.css") . "\" />"; } + + static function thumb_bottom($theme, $child) { + if ($theme->page_type() == "album" && $child->type == "photo") { + $csrf = access::csrf_token(); + $return = "album/{$child->parent()->id}"; + $href = url::site("digibug/print_photo/$child->id?csrf={$csrf}&return=$return"); + $title = t("Print photo with Digibug"); + return "<div class=\"gDigibugPrintButton\"> + <a class=\"gButtonLink ui-corner-all ui-state-default ui-icon-left\" href=\"$href\" + title=\"$title\"> + <span class=\"ui-icon ui-icon-print\">$title</span> + </a> + </div>"; + } + return ""; + } } diff --git a/modules/digibug/js/digibug.js b/modules/digibug/js/digibug.js new file mode 100644 index 00000000..f30678c0 --- /dev/null +++ b/modules/digibug/js/digibug.js @@ -0,0 +1,24 @@ +$(document).ready(function() { + $(".gDigibugPrintButton a").click(function(e) { + e.preventDefault(); + queue_print(e); + }); +}); + +function queue_print(e) { + var parent = e.currentTarget.parentNode; + $(parent).addClass("gLoadingLarge"); + $.ajax({ + type: "GET", + url: e.currentTarget.href, + dataType: "json", + success: function(data) { + $(parent).removeClass("gLoadingLarge"); + if (data.location) { + window.location = data.location; + } else if (data.reload) { + window.location.reload(); + } + } + }); +}; diff --git a/modules/digibug/helpers/digibug_quick.php b/modules/digibug/models/proxy.php index dce0c519..ce10c592 100644 --- a/modules/digibug/helpers/digibug_quick.php +++ b/modules/digibug/models/proxy.php @@ -17,18 +17,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -class digibug_quick_Core { - static function buttons($item, $page_type) { - $elements["center"] = array(); - if (access::can("view", $item) && $item->type == "photo") { - $csrf = access::csrf_token(); - $elements["center"][] = (object)array( - "title" => t("Print photo with Digibug"), - "class" => "gButtonLink", - "icon" => "ui-icon-print", - "href" => url::site("digibug/print/$item->id?csrf=$csrf")); - } - - return $elements; - } +class Proxy_Model extends ORM { + protected $has_one = array("item"); } |