1
0

Merge remote branch 'gallery3-contrib/master'

This commit is contained in:
rWatcher 2011-07-21 13:40:55 -04:00
commit a8a56a5e39
4 changed files with 272 additions and 194 deletions

View File

@ -1,106 +1,118 @@
/** /**
* Gallery 3 Admin Right yo left language styles * Gallery 3 Admin Right to left language styles
*/ */
.rtl { .rtl {
direction: rtl; direction: rtl;
} }
#g-header, #g-header,
#g-content, #g-content,
#g-sidebar, #g-sidebar,
#g-footer, #g-footer,
caption, caption,
th, th,
#g-dialog, #g-dialog,
.g-context-menu li a, .g-context-menu li a,
.g-message-box li, .g-message-box li,
#g-site-status li { #g-site-status li {
text-align: right; text-align: right;
} }
.g-text-right { .g-text-right {
text-align: left; text-align: left;
} }
.g-error, .g-error,
.g-info, .g-info,
.g-success, .g-success,
.g-warning, .g-warning,
#g-add-photos-status .g-success, #g-add-photos-status .g-success,
#g-add-photos-status .g-error { #g-add-photos-status .g-error {
background-position: center right; background-position: center right;
padding-right: 30px !important; padding-right: 30px !important;
} }
form li.g-error, form li.g-error,
form li.g-info, form li.g-info,
form li.g-success, form li.g-success,
form li.g-warning { form li.g-warning {
padding-right: 0 !important; padding-right: 0 !important;
} }
.g-left, .g-left,
.g-inline li, .g-inline li,
#g-content #g-album-grid .g-item, #g-content #g-album-grid .g-item,
.sf-menu li, .sf-menu li,
.g-breadcrumbs li, .g-breadcrumbs li,
.g-paginator li, .g-paginator li,
.g-buttonset li, .g-buttonset li,
.ui-icon-left .ui-icon, .ui-icon-left .ui-icon,
.g-short-form li, .g-short-form li,
form ul ul li, form ul ul li,
input[type="submit"], input[type="submit"],
input[type="reset"], input[type="reset"],
input.checkbox, input.checkbox,
input[type=checkbox], input[type=checkbox],
input.radio, input.radio,
input[type=radio] { input[type=radio] {
float: right; float: right;
} }
.g-right, .g-right,
.ui-icon-right .ui-icon { .ui-icon-right .ui-icon {
float: left; float: left;
} }
.g-inline li { .g-inline li {
margin-right: 1em; margin-right: 1em;
} }
.g-inline li.g-first { .g-inline li.g-first {
margin-right: 0; margin-right: 0;
} }
.g-breadcrumbs li { .g-breadcrumbs li {
background: transparent url('../images/ico-separator-rtl.png') no-repeat scroll right center; background: transparent url('../images/ico-separator-rtl.png') no-repeat scroll right center;
padding: 1em 18px 1em 8px; padding: 1em 18px 1em 8px;
} }
.g-breadcrumbs .g-first { .g-breadcrumbs .g-first {
background: none; background: none;
padding-right: 0; padding-right: 0;
} }
input.checkbox { input.checkbox,
input[type="checkbox"],
input.radio,
input[type="radio"] {
margin-right: 0;
margin-left: .4em; margin-left: .4em;
} }
#g-add-comment { #g-add-comment {
right: inherit; right: inherit;
left: 0; left: 0;
} }
.ui-icon-left .ui-icon { .ui-icon-left .ui-icon {
margin-left: .2em; margin-left: .2em;
} }
.ui-icon-right .ui-icon { .ui-icon-right .ui-icon {
margin-right: .2em; margin-right: .2em;
} }
.g-group h4 {
padding: .5em .5em .5em 0;
}
.g-group .g-user {
padding: .2em .5em 0 0;
}
/* RTL Corner radius ~~~~~~~~~~~~~~~~~~~~~~ */ /* RTL Corner radius ~~~~~~~~~~~~~~~~~~~~~~ */
.g-buttonset .ui-corner-tl { .g-buttonset .ui-corner-tl {
-moz-border-radius-topleft: 0; -moz-border-radius-topleft: 0;
-webkit-border-top-left-radius: 0; -webkit-border-top-left-radius: 0;
border-top-left-radius: 0; border-top-left-radius: 0;
@ -109,7 +121,7 @@
border-top-right-radius: 5px !important; border-top-right-radius: 5px !important;
} }
.g-buttonset .ui-corner-tr { .g-buttonset .ui-corner-tr {
-moz-border-radius-topright: 0; -moz-border-radius-topright: 0;
-webkit-border-top-right-radius: 0; -webkit-border-top-right-radius: 0;
border-top-right-radius: 0; border-top-right-radius: 0;
@ -118,7 +130,7 @@
border-top-left-radius: 5px !important; border-top-left-radius: 5px !important;
} }
.g-buttonset .ui-corner-bl { .g-buttonset .ui-corner-bl {
-moz-border-radius-bottomleft: 0; -moz-border-radius-bottomleft: 0;
-webkit-border-bottom-left-radius: 0; -webkit-border-bottom-left-radius: 0;
border-bottom-left-radius: 0; border-bottom-left-radius: 0;
@ -127,7 +139,7 @@
border-bottom-right-radius: 5px !important; border-bottom-right-radius: 5px !important;
} }
.g-buttonset .ui-corner-br { .g-buttonset .ui-corner-br {
-moz-border-radius-bottomright: 0; -moz-border-radius-bottomright: 0;
-webkit-border-bottom-right-radius: 0; -webkit-border-bottom-right-radius: 0;
border-bottom-right-radius: 0; border-bottom-right-radius: 0;
@ -136,8 +148,8 @@
border-bottom-left-radius: 5px !important; border-bottom-left-radius: 5px !important;
} }
.g-buttonset .ui-corner-right, .g-buttonset .ui-corner-right,
.ui-progressbar .ui-corner-right { .ui-progressbar .ui-corner-right {
-moz-border-radius-topright: 0; -moz-border-radius-topright: 0;
-webkit-border-top-right-radius: 0; -webkit-border-top-right-radius: 0;
border-top-right-radius: 0; border-top-right-radius: 0;
@ -152,8 +164,8 @@
border-bottom-left-radius: 5px !important; border-bottom-left-radius: 5px !important;
} }
.g-buttonset .ui-corner-left, .g-buttonset .ui-corner-left,
.ui-progressbar .ui-corner-left { .ui-progressbar .ui-corner-left {
-moz-border-radius-topleft: 0; -moz-border-radius-topleft: 0;
-webkit-border-top-left-radius: 0; -webkit-border-top-left-radius: 0;
border-top-left-radius: 0; border-top-left-radius: 0;
@ -170,66 +182,66 @@
/* RTL Superfish ~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* RTL Superfish ~~~~~~~~~~~~~~~~~~~~~~~~~ */
.sf-menu a { .sf-menu a {
border-left: none; border-left: none;
border-right:1px solid #<?= $borderColorContent ?>; border-right:1px solid #<?= $borderColorContent ?>;
} }
.sf-menu a.sf-with-ul { .sf-menu a.sf-with-ul {
padding-left: 2.25em; padding-left: 2.25em;
padding-right: 1em; padding-right: 1em;
} }
.sf-sub-indicator { .sf-sub-indicator {
background: url("themeroller/images/ui-icons_<?= $fcDefault ?>_256x240.png") no-repeat -96px -16px; /* 8-bit indexed alpha png. IE6 gets solid image only */ background: url("themeroller/images/ui-icons_<?= $fcDefault ?>_256x240.png") no-repeat -96px -16px; /* 8-bit indexed alpha png. IE6 gets solid image only */
left: .75em !important; left: .75em !important;
right: auto; right: auto;
} }
a > .sf-sub-indicator { /* give all except IE6 the correct values */ a > .sf-sub-indicator { /* give all except IE6 the correct values */
top: .8em; top: .8em;
background-position: -10px -100px; /* use translucent arrow for modern browsers*/ background-position: -10px -100px; /* use translucent arrow for modern browsers*/
} }
/* apply hovers to modern browsers */ /* apply hovers to modern browsers */
a:focus > .sf-sub-indicator, a:focus > .sf-sub-indicator,
a:hover > .sf-sub-indicator, a:hover > .sf-sub-indicator,
a:active > .sf-sub-indicator, a:active > .sf-sub-indicator,
li:hover > a > .sf-sub-indicator, li:hover > a > .sf-sub-indicator,
li.sfHover > a > .sf-sub-indicator { li.sfHover > a > .sf-sub-indicator {
background-position: 0 -100px; /* arrow hovers for modern browsers*/ background-position: 0 -100px; /* arrow hovers for modern browsers*/
} }
/* point right for anchors in subs */ /* point right for anchors in subs */
.sf-menu ul .sf-sub-indicator { background-position: 0 0; } .sf-menu ul .sf-sub-indicator { background-position: 0 0; }
.sf-menu ul a > .sf-sub-indicator { background-position: -10px 0; } .sf-menu ul a > .sf-sub-indicator { background-position: -10px 0; }
/* apply hovers to modern browsers */ /* apply hovers to modern browsers */
.sf-menu ul a:focus > .sf-sub-indicator, .sf-menu ul a:focus > .sf-sub-indicator,
.sf-menu ul a:hover > .sf-sub-indicator, .sf-menu ul a:hover > .sf-sub-indicator,
.sf-menu ul a:active > .sf-sub-indicator, .sf-menu ul a:active > .sf-sub-indicator,
.sf-menu ul li:hover > a > .sf-sub-indicator, .sf-menu ul li:hover > a > .sf-sub-indicator,
.sf-menu ul li.sfHover > a > .sf-sub-indicator { .sf-menu ul li.sfHover > a > .sf-sub-indicator {
background-position: 0 0; /* arrow hovers for modern browsers*/ background-position: 0 0; /* arrow hovers for modern browsers*/
} }
.sf-menu li:hover ul, .sf-menu li:hover ul,
.sf-menu li.sfHover ul { .sf-menu li.sfHover ul {
right: 0; right: 0;
left: auto; left: auto;
} }
ul.sf-menu li li:hover ul, ul.sf-menu li li:hover ul,
ul.sf-menu li li.sfHover ul { ul.sf-menu li li.sfHover ul {
right: 12em; /* match ul width */ right: 12em; /* match ul width */
left: auto; left: auto;
} }
ul.sf-menu li li li:hover ul, ul.sf-menu li li li:hover ul,
ul.sf-menu li li li.sfHover ul { ul.sf-menu li li li.sfHover ul {
right: 12em; /* match ul width */ right: 12em; /* match ul width */
left: auto; left: auto;
} }
/*** shadows for all but IE6 ***/ /*** shadows for all but IE6 ***/
.sf-shadow ul { .sf-shadow ul {
background: url('../images/superfish-shadow.png') no-repeat bottom left; background: url('../images/superfish-shadow.png') no-repeat bottom left;
border-top-right-radius: 0; border-top-right-radius: 0;
border-bottom-left-radius: 0; border-bottom-left-radius: 0;
@ -247,53 +259,117 @@
/* RTL ThemeRoller ~~~~~~~~~~~~~~~~~~~~~~~~ */ /* RTL ThemeRoller ~~~~~~~~~~~~~~~~~~~~~~~~ */
.ui-dialog .ui-dialog-titlebar { .ui-dialog .ui-dialog-titlebar {
padding: 0.5em 1em 0.3em 0.3em; padding: 0.5em 1em 0.3em 0.3em;
} }
.ui-dialog .ui-dialog-title { .ui-dialog .ui-dialog-title {
float: right; float: right;
} }
.ui-dialog .ui-dialog-titlebar-close { .ui-dialog .ui-dialog-titlebar-close {
left: 0.3em; left: 0.3em;
right: auto; right: auto;
} }
#g-content #g-album-grid .g-item, .ui-tabs .ui-tabs-nav li {
#g-site-theme,
#g-admin-theme,
.g-selected img,
.g-available .g-block img,
#g-content #g-photo-stream .g-item,
li.g-group,
#g-server-add-admin {
float: right; float: right;
} }
#g-admin-graphics .g-available .g-block { #g-content #g-album-grid .g-item,
#g-site-theme,
#g-admin-theme,
.g-selected img,
.g-available .g-block img,
#g-content #g-photo-stream .g-item,
li.g-group,
#g-server-add-admin {
float: right;
}
#g-admin-graphics .g-available .g-block {
float: right; float: right;
margin-left: 1em; margin-left: 1em;
margin-right: 0em; margin-right: 0em;
} }
#g-site-admin-menu { #g-site-admin-menu {
left: auto; left: auto;
right: 150px; right: 150px;
} }
#g-header #g-login-menu { #g-header #g-login-menu {
float: left; float: left;
} }
#g-header #g-login-menu li { #g-header #g-login-menu li {
margin-left: 0; margin-left: 0;
padding-left: 0; padding-left: 0;
padding-right: 1.2em; padding-right: 1.2em;
} }
.g-selected img, .g-selected img,
.g-available .g-block img { .g-available .g-block img {
margin: 0 0 1em 1em; margin: 0 0 1em 1em;
} }
.g-button {
margin: 0 0 0 4px;
}
/* RTL paginator ~~~~~~~~~~~~~~~~~~~~~~~~~~ */
.g-paginator .g-info {
width: 35%;
}
.g-paginator .g-text-right {
margin-left: 0;
}
.g-paginator .ui-icon-seek-end {
background-position: -80px -160px;
}
.g-paginator .ui-icon-seek-next {
background-position: -48px -160px;
}
.g-paginator .ui-icon-seek-prev {
background-position: -32px -160px;
}
.g-paginator .ui-icon-seek-first {
background-position: -64px -160px;
}
#g-header #g-login-menu,
#g-header #g-quick-search-form {
clear: left;
float: left;
}
#g-header #g-login-menu li {
margin-left: 0;
padding-left: 0;
padding-right: 1.2em;
}
#g-site-menu {
left: auto;
right: 240px;
}
#g-view-menu #g-slideshow-link {
background-image: url('../images/ico-view-slideshow-rtl.png');
}
#g-sidebar .g-block-content {
padding-right: 1em;
padding-left: 0;
}
#g-footer #g-credits li {
padding-left: 1.2em !important;
padding-right: 0;
}

View File

@ -1,6 +1,6 @@
name = ".Pear Theme" name = ".Pear Theme"
description = "A theme with the intention to mimic Apples mobile me gallery." description = "A theme with the intention to mimic Apples mobile me gallery."
version = 2.2 version = 2.3
author = "Fredrik Erlandsson <fredrik.e@gmail.com>" author = "Fredrik Erlandsson <fredrik.e@gmail.com>"
site = 1 site = 1
admin = 0 admin = 0

View File

@ -53,7 +53,7 @@ if($child->is_album()):
endforeach; endforeach;
endif; endif;
// End skimming // ?> // End skimming // ?>
<p class="giTitle <? if(!$child->is_album()) print 'center';?>"><?= html::purify($child->title) ?> </p> <p class="giTitle <? if(!$child->is_album()) print 'center';?>"><?= html::purify(text::limit_chars($child->title, 20)) ?> </p>
<? if($child->is_album()): ?><div class="giInfo"><?= count($granchildren)?> photos</div><? endif ?> <? if($child->is_album()): ?><div class="giInfo"><?= count($granchildren)?> photos</div><? endif ?>
</div> </div>
<?/* <?= $theme->thumb_bottom($child) ?> <?/* <?= $theme->thumb_bottom($child) ?>

View File

@ -17,106 +17,108 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
class Ecard_Controller extends Controller { class Ecard_Controller extends Controller {
/** /**
* Send the ecard. * Send the ecard.
*/ */
public function send($id) { public function send($id) {
$item = ORM::factory("item", $id); $item = ORM::factory("item", $id);
access::required("view", $item); access::required("view", $item);
if (!ecard::can_send_ecard()) { if (!ecard::can_send_ecard()) {
access::forbidden(); access::forbidden();
} }
$form = ecard::get_send_form($item); $form = ecard::get_send_form($item);
try { try {
$valid = $form->validate(); $valid = $form->validate();
} catch (ORM_Validation_Exception $e) { } catch (ORM_Validation_Exception $e) {
// Translate ORM validation errors into form error messages // Translate ORM validation errors into form error messages
foreach ($e->validation->errors() as $key => $error) { foreach ($e->validation->errors() as $key => $error) {
$form->edit_item->inputs[$key]->add_error($error, 1); $form->edit_item->inputs[$key]->add_error($error, 1);
} }
$valid = false; $valid = false;
} }
if ($valid) { if ($valid) {
$to_array = explode(",",$form->send_ecard->inputs["to_email"]->value); $v = new View("ecard_email.html");
foreach($to_array as $to) { $v->item = $item;
$v = new View("ecard_email.html"); $v->subject = module::get_var("ecard", "subject");
$v->item = $item; $from_name = $form->send_ecard->from_name->value;
$v->subject = module::get_var("ecard", "subject"); $bcc = module::get_var("ecard", "bcc");
$from_name = $form->send_ecard->from_name->value; if($form->send_ecard->send_to_self->checked == true) {
$bcc = module::get_var("ecard", "bcc"); $cc = $form->send_ecard->inputs["from_email"]->value;
if($form->send_ecard->send_to_self->checked == true) { }
$cc = $form->send_ecard->inputs["from_email"]->value; $v->message = t(module::get_var("ecard", "message"), array("fromname" => $from_name));
} $v->custom_message = $form->send_ecard->text->value;
$v->message = t(module::get_var("ecard", "message"), array("fromname" => $from_name)); $v->image = $item->name;
$v->custom_message = $form->send_ecard->text->value; $from = $form->send_ecard->inputs["from_email"]->value;
$v->image = $item->name;
$from = $form->send_ecard->inputs["from_email"]->value; require_once(MODPATH. "ecard/lib/mime.php");
$headers = array("from" => $from_name."<".$from.">", "to" => $to, "subject" => module::get_var("ecard", "subject")); $mime = new Mail_mime("\n");
require_once(MODPATH. "ecard/lib/mime.php"); $mime->setHTMLBody($v->render());
$mime = new Mail_mime("\n"); if($form->send_ecard->send_fresh->checked == true) {
$mime->setHTMLBody($v->render()); $tmpfile = tempnam(TMPPATH, "clean");
if($form->send_ecard->send_fresh->checked == true) { if($form->send_ecard->send_thumbnail->checked == true) {
$tmpfile = tempnam(TMPPATH, "clean"); $options = array("width" => module::get_var("gallery", "thumb_size"), "height" => module::get_var("gallery", "thumb_size"), "master" => Image::AUTO);
if($form->send_ecard->send_thumbnail->checked == true) { gallery_graphics::resize($item->file_path(), $tmpfile, $options, $item);
$options = array("width" => module::get_var("gallery", "thumb_size"), "height" => module::get_var("gallery", "thumb_size"), "master" => Image::AUTO); $mime->addHTMLImage($tmpfile,$item->mime_type,$item->name);
gallery_graphics::resize($item->file_path(), $tmpfile, $options, $item); } else {
$mime->addHTMLImage($tmpfile,$item->mime_type,$item->name); $options = array("width" => module::get_var("gallery", "resize_size"), "height" => module::get_var("gallery", "resize_size"), "master" => Image::AUTO);
} else { gallery_graphics::resize($item->file_path(), $tmpfile, $options, $item);
$options = array("width" => module::get_var("gallery", "resize_size"), "height" => module::get_var("gallery", "resize_size"), "master" => Image::AUTO); $mime->addHTMLImage($tmpfile,$item->mime_type,$item->name);
gallery_graphics::resize($item->file_path(), $tmpfile, $options, $item); }
$mime->addHTMLImage($tmpfile,$item->mime_type,$item->name); } else {
} if($form->send_ecard->send_thumbnail->checked == true) {
} else { $mime->addHTMLImage($item->thumb_path(),$item->mime_type,$item->name);
if($form->send_ecard->send_thumbnail->checked == true) { } else {
$mime->addHTMLImage($item->thumb_path(),$item->mime_type,$item->name); $mime->addHTMLImage($item->resize_path(),$item->mime_type,$item->name);
} else { }
$mime->addHTMLImage($item->resize_path(),$item->mime_type,$item->name); }
} $body = $mime->get(array('html_charset' => 'UTF-8', 'text_charset' => 'UTF-8','text_encoding' => '8bit','head_charset' => 'UTF-8'));
}
$body = $mime->get(array('html_charset' => 'UTF-8', 'text_charset' => 'UTF-8','text_encoding' => '8bit','head_charset' => 'UTF-8')); $to_array = explode(",",$form->send_ecard->inputs["to_email"]->value);
self::_notify($headers['to'], $headers['from'], $headers['subject'], $item, $body, $mime->headers(), $bcc, $cc); foreach($to_array as $to) {
$headers = array("from" => $from_name."<".$from.">", "to" => trim($to), "subject" => module::get_var("ecard", "subject"));
self::_notify($headers['to'], $headers['from'], $headers['subject'], $item, $body, $mime->headers(), $bcc, $cc);
}
unlink($tmpfile);
message::success("eCard successfully sent to ".$form->send_ecard->inputs["to_email"]->value);
json::reply(array("result" => "success"));
} else {
json::reply(array("result" => "error", "html" => (string) $form));
} }
unlink($tmpfile);
message::success("eCard successfully sent");
json::reply(array("result" => "success"));
} else {
json::reply(array("result" => "error", "html" => (string) $form));
} }
} /**
/** * Present a form for sending a new ecard.
* Present a form for sending a new ecard. */
*/ public function form_send($item_id) {
public function form_send($item_id) { $item = ORM::factory("item", $item_id);
$item = ORM::factory("item", $item_id); access::required("view", $item);
access::required("view", $item); if (!ecard::can_send_ecard()) {
if (!ecard::can_send_ecard()) { access::forbidden();
access::forbidden(); }
} $v_form = new View("ecard_form.html");
$v_form = new View("ecard_form.html"); $v_form->item_id = $item_id;
$v_form->item_id = $item_id; print $v_form->render();
print $v_form->render(); }
} private static function _notify($to, $from, $subject, $item, $text, $headers, $bcc, $cc) {
private static function _notify($to, $from, $subject, $item, $text, $headers, $bcc, $cc) { $sendmail = Sendmail::factory();
$sendmail = Sendmail::factory(); $sendmail
$sendmail ->to($to)
->to($to)
->from($from) ->from($from)
->subject($subject); ->subject($subject);
if(isset($bcc)) { if(isset($bcc)) {
$sendmail->header("bcc",$bcc); $sendmail->header("bcc",$bcc);
} }
if(isset($cc)) { if(isset($cc)) {
$sendmail->header("cc",$cc); $sendmail->header("cc",$cc);
} }
foreach($headers as $key => $value) { foreach($headers as $key => $value) {
$sendmail->header($key,$value); $sendmail->header($key,$value);
} }
$sendmail $sendmail
->message($text) ->message($text)
->send(); ->send();
return; return;
} }
} }