1
0

Merge branch 'master' of git://github.com/rWatcher/gallery3-contrib

This commit is contained in:
Bharat Mediratta 2011-03-05 15:56:50 -08:00
commit 6022bc45d4
27 changed files with 426 additions and 393 deletions

View File

@ -40,7 +40,7 @@ class Admin_Albumpassword_Controller extends Admin_Controller {
// Should protected items be hidden, or completely in-accessable?
$albumpassword_group = $form->group("album_password_group");
$albumpassword_group->checkbox("hideonly")
->label("Only hide protected albums?")
->label(t("Do not require passwords"))
->checked(module::get_var("albumpassword", "hideonly"));
// Add a save button to the form.

View File

@ -115,6 +115,7 @@ class albumpassword_Controller extends Controller {
public function logout() {
// Delete a stored password cookie.
cookie::delete("g3_albumpassword");
cookie::delete("g3_albumpassword_id");
url::redirect(url::abs_site("albums/1"));
}
@ -135,6 +136,7 @@ class albumpassword_Controller extends Controller {
if (count($existing_password) > 0) {
// If the password if valid, then store it, and display a success message.
// If not, close the dialog and display a rejected message.
cookie::delete("g3_albumpassword_id");
cookie::set("g3_albumpassword", $album_password);
message::success(t("Password Accepted."));
print "<html>\n<body>\n<script type=\"text/javascript\">\n$(\"#g-dialog\").dialog(\"close\");\nwindow.location.reload();\n</script>\n</body>\n</html>\n";

View File

@ -34,11 +34,31 @@ class item extends item_Core {
$model->and_open()->join("albumpassword_idcaches", "items.id", "albumpassword_idcaches.item_id", "LEFT OUTER")
->and_where("albumpassword_idcaches.item_id", "IS", NULL);
// If in hide only mode, check and see if the current item is protected.
// If it is, log the user in with the password to view it.
if (module::get_var("albumpassword", "hideonly") == true) {
$existing_cacheditem = ORM::factory("albumpassword_idcache")->where("item_id", "=", $model->id)->order_by("cache_id")->find_all();
if (count($existing_cacheditem) > 0) {
$existing_cacheditem_password = ORM::factory("items_albumpassword")->where("id", "=", $existing_cacheditem[0]->password_id)->find_all();
if (cookie::get("g3_albumpassword") != $existing_cacheditem_password[0]->password) {
cookie::set("g3_albumpassword", $existing_cacheditem_password[0]->password);
cookie::set("g3_albumpassword_id", $existing_cacheditem_password[0]->id);
$model->or_where("albumpassword_idcaches.password_id", "=", $existing_cacheditem_password[0]->id);
}
}
}
// ... Unless their password id corresponds with a valid password.
$existing_password = ORM::factory("items_albumpassword")->where("password", "=", cookie::get("g3_albumpassword"))->find_all();
if (count($existing_password) > 0) {
foreach ($existing_password as $one_password) {
$model->or_where("albumpassword_idcaches.password_id", "=", $one_password->id);
if (cookie::get("g3_albumpassword_id") != "") {
if (cookie::get("g3_albumpassword_id") == $one_password->id) {
$model->or_where("albumpassword_idcaches.password_id", "=", $one_password->id);
}
} else {
$model->or_where("albumpassword_idcaches.password_id", "=", $one_password->id);
}
}
}

View File

@ -48,9 +48,17 @@ class albumpassword_event_Core {
->css_id("g-album-password-logout")
->url(url::site("albumpassword/logout"))
->label(t("Clear password")));
$existing_password = ORM::factory("items_albumpassword")
$existing_password = "";
if (cookie::get("g3_albumpassword_id") != "") {
$existing_password = ORM::factory("items_albumpassword")
->where("password", "=", cookie::get("g3_albumpassword"))
->where("id", "=", cookie::get("g3_albumpassword_id"))
->find_all();
} else {
$existing_password = ORM::factory("items_albumpassword")
->where("password", "=", cookie::get("g3_albumpassword"))
->find_all();
}
if (count($existing_password) > 0) {
$counter = 0;
while ($counter < count($existing_password)) {

View File

@ -4,6 +4,6 @@
</h2>
<br />
<div class="g-block">
<?= t("If this box is checked, protected albums will only be hidden. Anyone with the URL to either the album or it's contents will be able to access it without a password.") ?><br /><br />
<?= $albumpassword_form ?>
<?= t("If this box is checked, accessing a protected album/photo/video will automatically log the visitor in with that items password.") ?><br /><br />
</div>

View File

@ -18,6 +18,12 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class batchtag_event_Core {
static function pre_deactivate($data) {
if ($data->module == "tag") {
$data->messages["warn"][] = t("The BatchTag module requires the Tags module.");
}
}
static function module_change($changes) {
// See if the Tags module is installed,
// tell the user to install it if it isn't.

View File

@ -24,10 +24,17 @@ class batchtag_installer {
}
static function deactivate() {
// Clear the require tags message when metadescription is deactivated.
site_status::clear("batchtag_needs_tag");
}
static function can_activate() {
$messages = array();
if (!module::is_active("tag")) {
$messages["warn"][] = t("The BatchTag module requires the Tags module.");
}
return $messages;
}
static function uninstall() {
module::delete("batchtag");
}

View File

@ -1,2 +1,15 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<?= $batch_tag_form ?>
<script type="text/javascript">
$("#g-batch-tag-form").ready(function() {
var url = "<?= url::site("tags") ?>" + "/autocomplete";
$("#g-batch-tag-form input:text").autocomplete(
url, {
max: 30,
multiple: true,
multipleSeparator: ',',
cacheLength: 1
}
);
});
</script>
<?= $batch_tag_form ?>

View File

@ -32,7 +32,6 @@ class CalendarView_Controller extends Controller {
// Draw the page.
$template = new Theme_View("calpage.html", "other", "CalendarView");
$template->css("calendarview_calendar.css");
$template->set_global("calendar_user", $display_user);
$template->page_title = t("Gallery :: Calendar");
$template->content = new View("calendarview_year.html");

View File

@ -26,6 +26,14 @@ class calendarview_installer {
site_status::clear("calendarview_needs_exif");
}
static function can_activate() {
$messages = array();
if (!module::is_active("exif")) {
$messages["warn"][] = t("The CalendarView module requires the EXIF module.");
}
return $messages;
}
static function uninstall() {
module::delete("calendarview");
}

View File

@ -20,6 +20,7 @@
class calendarview_theme_Core {
static function head($theme) {
return $theme->css("calendarview_menu.css");
$theme->css("calendarview_menu.css");
return $theme->css("calendarview_calendar.css");
}
}

View File

@ -9,170 +9,87 @@
<br/><?= $calendar_user_year_form ?><br /><br />
<?
$counter_months = 1;
// Loop through January to November in the current year.
while ($counter_months <12) {
print "<div id=\"g-calendar-grid\">";
// Figure out if any photos were taken for the current month.
if ($calendar_user == "-1") {
$month_count = ORM::factory("item")
->viewable()
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, 1, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, $counter_months+1, 1, $calendar_year))
->find_all()
->count();
} else {
$month_count = ORM::factory("item")
->viewable()
->where("owner_id", "=", $calendar_user)
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, 1, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, $counter_months+1, 1, $calendar_year))
->find_all()
->count();
}
if ($month_count > 0) {
$month_url = url::site("calendarview/month/" . $calendar_year . "/" . $calendar_user . "/" . $counter_months . "/");
} else {
$month_url = "";
}
$calendar = new PHPCalendar($counter_months, $calendar_year, $month_url);
// If there are photos, loop through each day in the month and display links on the correct dates.
if ($month_count > 0) {
$curr_day = 1;
$MAX_DAYS = date('t', mktime(00, 00, 00, $counter_months, 1, $calendar_year));
while ($curr_day < $MAX_DAYS) {
if ($calendar_user == "-1") {
$day_count = ORM::factory("item")
->viewable()
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, $curr_day, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, $counter_months, ($curr_day + 1), $calendar_year))
->find_all()
->count();
} else {
$day_count = ORM::factory("item")
->viewable()
->where("owner_id", "=", $calendar_user)
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, $curr_day, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, $counter_months, ($curr_day + 1), $calendar_year))
->find_all()
->count();
}
if ($day_count > 0) {
$calendar->event($curr_day, url::site("calendarview/day/" . $calendar_year . "/" . $calendar_user . "/" . $counter_months . "/" . $curr_day));
}
$curr_day++;
}
// Do the last day of the month seperately, because the mktime code is different.
if ($calendar_user == "-1") {
$day_count = ORM::factory("item")
->viewable()
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, $MAX_DAYS, $calendar_year))
->where("captured", "<",mktime(0, 0, 0, ($counter_months + 1), 1, $calendar_year))
->find_all()
->count();
} else {
$day_count = ORM::factory("item")
->viewable()
->where("owner_id", "=", $calendar_user)
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, $MAX_DAYS, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, ($counter_months + 1), 1, $calendar_year))
->find_all()
->count();
}
if ($day_count > 0) {
$calendar->event($MAX_DAYS, url::site("calendarview/day/" . $calendar_year . "/" . $calendar_user . "/" . $counter_months . "/" . $MAX_DAYS));
}
}
echo $calendar->render();
print "</div>";
$counter_months++;
}
// Do December seperately, because the mktime code is different.
print "<div id=\"g-calendar-grid\">";
// Search the db for all photos that were taken during the selected year.
if ($calendar_user == "-1") {
$month_count = ORM::factory("item")
$items_for_year = ORM::factory("item")
->viewable()
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, 1, $calendar_year))
->where("captured", ">=", mktime(0, 0, 0, 1, 1, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, 1, 1, ($calendar_year + 1)))
->find_all()
->count();
->order_by("captured")
->find_all();
} else {
$month_count = ORM::factory("item")
$items_for_year = ORM::factory("item")
->viewable()
->where("owner_id", "=", $calendar_user)
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, 1, $calendar_year))
->where("captured", ">=", mktime(0, 0, 0, 1, 1, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, 1, 1, ($calendar_year + 1)))
->find_all()
->count();
->order_by("captured")
->find_all();
}
if ($month_count > 0) {
// Set up some initial variables.
$counter_months = 1;
$counter_days = 0;
$counter = 0;
// Set up the January Calendar.
// Check and see if any photos were taken in January,
// If so, make the month title into a clickable link.
print "<div id=\"g-calendar-grid\">";
if (date("n", $items_for_year[$counter]->captured) == 1) {
$month_url = url::site("calendarview/month/" . $calendar_year . "/" . $calendar_user . "/" . $counter_months . "/");
} else {
$month_url = "";
}
$calendar = new PHPCalendar($counter_months, $calendar_year, $month_url);
if ($month_count > 0) {
$curr_day = 1;
$MAX_DAYS = date('t', mktime(00, 00, 00, $counter_months, 1, $calendar_year));
while ($curr_day < $MAX_DAYS) {
if ($calendar_user == "-1") {
$day_count = ORM::factory("item")
->viewable()
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, $curr_day, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, $counter_months, ($curr_day + 1), $calendar_year))
->find_all()
->count();
// Loop through each photo taken during this year, and see what month and day they were taken on.
// Make the corresponding dates on the calendars into clickable links.
while ($counter < (count($items_for_year))) {
// Check and see if we've switched to a new month.
// If so, render the current calendar and set up a new one.
while (date("n", $items_for_year[$counter]->captured) > $counter_months) {
echo $calendar->render();
print "</div>";
$counter_months++;
$counter_days = 0;
print "<div id=\"g-calendar-grid\">";
if (date("n", $items_for_year[$counter]->captured) == $counter_months) {
$month_url = url::site("calendarview/month/" . $calendar_year . "/" . $calendar_user . "/" . $counter_months . "/");
} else {
$day_count = ORM::factory("item")
->viewable()
->where("owner_id", "=", $calendar_user)
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, $curr_day, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, $counter_months, ($curr_day + 1), $calendar_year))
->find_all()
->count();
$month_url = "";
}
if ($day_count > 0) {
$calendar->event($curr_day, url::site("calendarview/day/" . $calendar_year . "/" . $calendar_user . "/" . $counter_months . "/" . $curr_day));
}
$curr_day++;
}
if ($calendar_user == "-1") {
$day_count = ORM::factory("item")
->viewable()
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, $MAX_DAYS, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, 1, 1, $calendar_year+1))
->find_all()
->count();
} else {
$day_count = ORM::factory("item")
->viewable()
->where("owner_id", "=", $calendar_user)
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, $MAX_DAYS, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, 1, 1, $calendar_year+1))
->find_all()
->count();
}
if ($day_count > 0) {
$calendar->event($MAX_DAYS, url::site("calendarview/day/" . $calendar_year . "/" . $calendar_user . "/" . $counter_months . "/" . $MAX_DAYS));
$calendar = new PHPCalendar($counter_months, $calendar_year, $month_url);
}
// If the day of the current photo is different then the day of the previous photo,
// then add a link to the calendar for this date and set the current day to this day.
if (date("j", $items_for_year[$counter]->captured) > $counter_days) {
$counter_days = date("j", $items_for_year[$counter]->captured);
$calendar->event($counter_days, url::site("calendarview/day/" . $calendar_year . "/" . $calendar_user . "/" . $counter_months . "/" . $counter_days));
}
// Move onto the next photo.
$counter++;
}
$counter_months++;
// Print out the last calendar to be generated.
echo $calendar->render();
print "</div>";
?>
$counter_months++;
// If the calendar that was previously rendered was not December,
// then print out a few empty months for the rest of the year.
while ($counter_months < 13) {
print "<div id=\"g-calendar-grid\">";
$month_url = "";
$calendar = new PHPCalendar($counter_months, $calendar_year, $month_url);
echo $calendar->render();
print "</div>";
$counter_months++;
}
?>
<?= $theme->dynamic_bottom() ?>

View File

@ -1,51 +1,42 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<html xmlns="http://www.w3.org/1999/xhtml" <?= $theme->html_attributes() ?> xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<? $theme->start_combining("script,css") ?>
<title>
<? if ($page_title): ?>
<?= $page_title ?>
<? else: ?>
<? if ($theme->item()): ?>
<? if ($theme->item()->is_album()): ?>
<?= t("Browse Album :: %album_title", array("album_title" => $theme->item()->title)) ?>
<? elseif ($theme->item()->is_photo()): ?>
<?= t("Photo :: %photo_title", array("photo_title" => $theme->item()->title)) ?>
<? else: ?>
<?= t("Movie :: %movie_title", array("movie_title" => $theme->item()->title)) ?>
<? endif ?>
<?= $theme->item()->title ?>
<? elseif ($theme->tag()): ?>
<?= t("Browse Tag :: %tag_title", array("tag_title" => $theme->tag()->name)) ?>
<?= t("Photos tagged with %tag_title", array("tag_title" => $theme->tag()->name)) ?>
<? else: /* Not an item, not a tag, no page_title specified. Help! */ ?>
<?= t("Gallery") ?>
<?= item::root()->title ?>
<? endif ?>
<? endif ?>
</title>
<link rel="shortcut icon" href="<?= url::file("lib/images/favicon.ico") ?>" type="image/x-icon" />
<?= $theme->css("yui/reset-fonts-grids.css") ?>
<?= $theme->css("superfish/css/superfish.css") ?>
<?= $theme->css("themeroller/ui.base.css") ?>
<?= $theme->css("gallery.common.css") ?>
<?= $theme->css("screen.css") ?>
<!--[if lt IE 8]>
<link rel="stylesheet" type="text/css" href="<?= $theme->url("css/fix-ie.css") ?>"
media="screen,print,projection" />
<![endif]-->
<link rel="shortcut icon"
href="<?= url::file(module::get_var("gallery", "favicon_url")) ?>"
type="image/x-icon" />
<? if ($theme->page_type == "collection"): ?>
<? if ($thumb_proportion != 1): ?>
<? $new_width = $thumb_proportion * 213 ?>
<? $new_height = $thumb_proportion * 240 ?>
<style type="text/css">
#g-content #g-album-grid .g-item {
width: <?= $new_width ?>px;
height: <?= $new_height ?>px;
/* <?= $thumb_proportion ?> */
}
</style>
<? $new_width = round($thumb_proportion * 213) ?>
<? $new_height = round($thumb_proportion * 240) ?>
<style type="text/css">
.g-view #g-content #g-album-grid .g-item {
width: <?= $new_width ?>px;
height: <?= $new_height ?>px;
/* <?= $thumb_proportion ?> */
}
</style>
<? endif ?>
<? endif ?>
<?= $theme->script("json2-min.js") ?>
<?= $theme->script("jquery.js") ?>
<?= $theme->script("jquery.form.js") ?>
<?= $theme->script("jquery-ui.js") ?>
@ -58,9 +49,8 @@
<?= $theme->script("gallery.dialog.js") ?>
<?= $theme->script("superfish/js/superfish.js") ?>
<?= $theme->script("jquery.localscroll.js") ?>
<?= $theme->script("ui.init.js") ?>
<? /* These are page specific, but if we put them before $theme->head() they get combined */ ?>
<? /* These are page specific but they get combined */ ?>
<? if ($theme->page_subtype == "photo"): ?>
<?= $theme->script("jquery.scrollTo.js") ?>
<?= $theme->script("gallery.show_full_size.js") ?>
@ -69,6 +59,23 @@
<? endif ?>
<?= $theme->head() ?>
<? /* Theme specific CSS/JS goes last so that it can override module CSS/JS */ ?>
<?= $theme->script("ui.init.js") ?>
<?= $theme->css("yui/reset-fonts-grids.css") ?>
<?= $theme->css("superfish/css/superfish.css") ?>
<?= $theme->css("themeroller/ui.base.css") ?>
<?= $theme->css("screen.css") ?>
<!--[if lte IE 8]>
<link rel="stylesheet" type="text/css" href="<?= $theme->url("css/fix-ie.css") ?>"
media="screen,print,projection" />
<![endif]-->
<!-- LOOKING FOR YOUR JAVASCRIPT? It's all been combined into the link below -->
<?= $theme->get_combined("script") ?>
<!-- LOOKING FOR YOUR CSS? It's all been combined into the link below -->
<?= $theme->get_combined("css") ?>
</head>
<body <?= $theme->body_attributes() ?>>
@ -87,15 +94,16 @@
<?= $theme->user_menu() ?>
<?= $theme->header_top() ?>
<!-- hide the menu and make it visible after the page has loaded, to minimize menu flicker -->
<!-- hide the menu until after the page has loaded, to minimize menu flicker -->
<div id="g-site-menu" style="visibility: hidden">
<?= $theme->site_menu() ?>
<?= $theme->site_menu($theme->item() ? "#g-item-id-{$theme->item()->id}" : "") ?>
</div>
<script type="text/javascript"> $(document).ready(function() { $("#g-site-menu").css("visibility", "visible"); }) </script>
<?= $theme->header_bottom() ?>
</div>
<? // The following code was modifed to allow module-defined breadcrumbs.
// Everything else in this file is a copy of the default page.html.php file.
?>
@ -120,6 +128,8 @@
<? endif ?>
<? // End modified code ?>
</div>
<div id="bd">
<div id="yui-main">
@ -151,4 +161,4 @@
</div>
<?= $theme->page_bottom() ?>
</body>
</html>
</html>

View File

@ -40,7 +40,7 @@ class Admin_Albumpassword_Controller extends Admin_Controller {
// Should protected items be hidden, or completely in-accessable?
$albumpassword_group = $form->group("album_password_group");
$albumpassword_group->checkbox("hideonly")
->label("Only hide protected albums?")
->label(t("Do not require passwords"))
->checked(module::get_var("albumpassword", "hideonly"));
// Add a save button to the form.

View File

@ -115,6 +115,7 @@ class albumpassword_Controller extends Controller {
public function logout() {
// Delete a stored password cookie.
cookie::delete("g3_albumpassword");
cookie::delete("g3_albumpassword_id");
url::redirect(url::abs_site("albums/1"));
}
@ -135,6 +136,7 @@ class albumpassword_Controller extends Controller {
if (count($existing_password) > 0) {
// If the password if valid, then store it, and display a success message.
// If not, close the dialog and display a rejected message.
cookie::delete("g3_albumpassword_id");
cookie::set("g3_albumpassword", $album_password);
message::success(t("Password Accepted."));
print "<html>\n<body>\n<script type=\"text/javascript\">\n$(\"#g-dialog\").dialog(\"close\");\nwindow.location.reload();\n</script>\n</body>\n</html>\n";

View File

@ -34,11 +34,31 @@ class item extends item_Core {
$model->and_open()->join("albumpassword_idcaches", "items.id", "albumpassword_idcaches.item_id", "LEFT OUTER")
->and_where("albumpassword_idcaches.item_id", "IS", NULL);
// If in hide only mode, check and see if the current item is protected.
// If it is, log the user in with the password to view it.
if (module::get_var("albumpassword", "hideonly") == true) {
$existing_cacheditem = ORM::factory("albumpassword_idcache")->where("item_id", "=", $model->id)->order_by("cache_id")->find_all();
if (count($existing_cacheditem) > 0) {
$existing_cacheditem_password = ORM::factory("items_albumpassword")->where("id", "=", $existing_cacheditem[0]->password_id)->find_all();
if (cookie::get("g3_albumpassword") != $existing_cacheditem_password[0]->password) {
cookie::set("g3_albumpassword", $existing_cacheditem_password[0]->password);
cookie::set("g3_albumpassword_id", $existing_cacheditem_password[0]->id);
$model->or_where("albumpassword_idcaches.password_id", "=", $existing_cacheditem_password[0]->id);
}
}
}
// ... Unless their password id corresponds with a valid password.
$existing_password = ORM::factory("items_albumpassword")->where("password", "=", cookie::get("g3_albumpassword"))->find_all();
if (count($existing_password) > 0) {
foreach ($existing_password as $one_password) {
$model->or_where("albumpassword_idcaches.password_id", "=", $one_password->id);
if (cookie::get("g3_albumpassword_id") != "") {
if (cookie::get("g3_albumpassword_id") == $one_password->id) {
$model->or_where("albumpassword_idcaches.password_id", "=", $one_password->id);
}
} else {
$model->or_where("albumpassword_idcaches.password_id", "=", $one_password->id);
}
}
}

View File

@ -48,9 +48,17 @@ class albumpassword_event_Core {
->css_id("g-album-password-logout")
->url(url::site("albumpassword/logout"))
->label(t("Clear password")));
$existing_password = ORM::factory("items_albumpassword")
$existing_password = "";
if (cookie::get("g3_albumpassword_id") != "") {
$existing_password = ORM::factory("items_albumpassword")
->where("password", "=", cookie::get("g3_albumpassword"))
->where("id", "=", cookie::get("g3_albumpassword_id"))
->find_all();
} else {
$existing_password = ORM::factory("items_albumpassword")
->where("password", "=", cookie::get("g3_albumpassword"))
->find_all();
}
if (count($existing_password) > 0) {
$counter = 0;
while ($counter < count($existing_password)) {

View File

@ -4,6 +4,6 @@
</h2>
<br />
<div class="g-block">
<?= t("If this box is checked, protected albums will only be hidden. Anyone with the URL to either the album or it's contents will be able to access it without a password.") ?><br /><br />
<?= $albumpassword_form ?>
<?= t("If this box is checked, accessing a protected album/photo/video will automatically log the visitor in with that items password.") ?><br /><br />
</div>

View File

@ -25,42 +25,93 @@ class BatchTag_Controller extends Controller {
access::verify_csrf();
$input = Input::instance();
url::redirect(url::abs_site("batchtag/tagitems2?name={$input->post('name')}&item_id={$input->post('item_id')}&tag_subitems={$input->post('tag_subitems')}&csrf={$input->post('csrf')}"));
}
public function tagitems2() {
// Tag all non-album items in the current album with the specified tags.
// Prevent Cross Site Request Forgery
access::verify_csrf();
$input = Input::instance();
// Variables
if (($input->get("batchtag_max") == false) || ($input->get("batchtag_max") == "0")) {
$batchtag_max = "50";
} else {
$batchtag_max = $input->get("batchtag_max");
}
if ($input->get("batchtag_items_processed") == false) {
$batchtag_items_processed = "0";
} else {
$batchtag_items_processed = $input->get("batchtag_items_processed");
}
// Figure out if the contents of sub-albums should also be tagged
$str_tag_subitems = $input->post("tag_subitems");
$str_tag_subitems = $input->get("tag_subitems");
$children = "";
if ($str_tag_subitems == false) {
// Generate an array of all non-album items in the current album.
$children = ORM::factory("item")
->where("parent_id", "=", $input->post("item_id"))
->where("parent_id", "=", $input->get("item_id"))
->where("type", "!=", "album")
->find_all();
} else {
// Generate an array of all non-album items in the current album
// and any sub albums.
$item = ORM::factory("item", $input->post("item_id"));
$item = ORM::factory("item", $input->get("item_id"));
$children = $item->descendants();
}
// Loop through each item in the album and make sure the user has
// access to view and edit it.
foreach ($children as $child) {
if (access::can("view", $child) && access::can("edit", $child) && !$child->is_album()) {
$children_count = "0";
$tag_count = "0";
// Assuming the user can view/edit the current item, loop
// through each tag that was submitted and apply it to
// the current item.
foreach (explode(",", $input->post("name")) as $tag_name) {
$tag_name = trim($tag_name);
if ($tag_name) {
tag::add($child, $tag_name);
//echo Kohana::debug($children);
echo '<style>.continue { margin: 5em auto; text-align: center; }</style>';
foreach ($children as $child) {
if ($tag_count < $batchtag_max) {
if ($children_count >= $batchtag_items_processed) {
if (access::can("view", $child) && access::can("edit", $child) && !$child->is_album()) {
// Assuming the user can view/edit the current item, loop
// through each tag that was submitted and apply it to
// the current item.
foreach (explode(",", $input->get("name")) as $tag_name) {
$tag_name = trim($tag_name);
if ($tag_name) {
tag::add($child, $tag_name);
}
// $tag_count should be inside the foreach loop as it is depending on the number of time tag:add is run
$tag_count++;
}
}
}
}
echo '<style>.c' . $children_count . ' { display:none; }</style>' . "\n";
$children_count++;
$batchtag_max_new = $tag_count;
echo '<div class="continue c' . $children_count . '"><a href="' . url::abs_site("batchtag/tagitems2?name={$input->get('name')}&item_id={$input->get('item_id')}&tag_subitems={$input->get('tag_subitems')}&batchtag_items_processed=$children_count&batchtag_max=$batchtag_max_new&csrf={$input->get('csrf')}") . '">Continue</a></div>';
} else { $children_count++; }
} else { break; }
}
// Redirect back to the album.
$item = ORM::factory("item", $input->post("item_id"));
url::redirect(url::abs_site("{$item->type}s/{$item->id}"));
if ($tag_count < $batchtag_max) {
// Redirect back to the album.
$item = ORM::factory("item", $input->get("item_id"));
url::redirect(url::abs_site("{$item->type}s/{$item->id}"));
//echo url::abs_site("{$item->type}s/{$item->id}");
} else {
url::redirect(url::abs_site("batchtag/tagitems2?name={$input->get('name')}&item_id={$input->get('item_id')}&tag_subitems={$input->get('tag_subitems')}&batchtag_items_processed=$children_count&batchtag_max=$batchtag_max&csrf={$input->get('csrf')}"));
//echo url::abs_site("batchtag/tagitems2?name={$input->get('name')}&item_id={$input->get('item_id')}&tag_subitems={$input->get('tag_subitems')}&batchtag_items_processed=$children_count&batchtag_max=$batchtag_max&csrf={$input->get('csrf')}");
}
}
}

View File

@ -18,6 +18,12 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class batchtag_event_Core {
static function pre_deactivate($data) {
if ($data->module == "tag") {
$data->messages["warn"][] = t("The BatchTag module requires the Tags module.");
}
}
static function module_change($changes) {
// See if the Tags module is installed,
// tell the user to install it if it isn't.

View File

@ -24,10 +24,17 @@ class batchtag_installer {
}
static function deactivate() {
// Clear the require tags message when metadescription is deactivated.
site_status::clear("batchtag_needs_tag");
}
static function can_activate() {
$messages = array();
if (!module::is_active("tag")) {
$messages["warn"][] = t("The BatchTag module requires the Tags module.");
}
return $messages;
}
static function uninstall() {
module::delete("batchtag");
}

View File

@ -1,2 +1,15 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<?= $batch_tag_form ?>
<script type="text/javascript">
$("#g-batch-tag-form").ready(function() {
var url = "<?= url::site("tags") ?>" + "/autocomplete";
$("#g-batch-tag-form input:text").autocomplete(
url, {
max: 30,
multiple: true,
multipleSeparator: ',',
cacheLength: 1
}
);
});
</script>
<?= $batch_tag_form ?>

View File

@ -32,7 +32,6 @@ class CalendarView_Controller extends Controller {
// Draw the page.
$template = new Theme_View("calpage.html", "other", "CalendarView");
$template->css("calendarview_calendar.css");
$template->set_global("calendar_user", $display_user);
$template->page_title = t("Gallery :: Calendar");
$template->content = new View("calendarview_year.html");

View File

@ -26,6 +26,14 @@ class calendarview_installer {
site_status::clear("calendarview_needs_exif");
}
static function can_activate() {
$messages = array();
if (!module::is_active("exif")) {
$messages["warn"][] = t("The CalendarView module requires the EXIF module.");
}
return $messages;
}
static function uninstall() {
module::delete("calendarview");
}

View File

@ -20,6 +20,7 @@
class calendarview_theme_Core {
static function head($theme) {
return $theme->css("calendarview_menu.css");
$theme->css("calendarview_menu.css");
return $theme->css("calendarview_calendar.css");
}
}

View File

@ -9,170 +9,87 @@
<br/><?= $calendar_user_year_form ?><br /><br />
<?
$counter_months = 1;
// Loop through January to November in the current year.
while ($counter_months <12) {
print "<div id=\"g-calendar-grid\">";
// Figure out if any photos were taken for the current month.
if ($calendar_user == "-1") {
$month_count = ORM::factory("item")
->viewable()
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, 1, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, $counter_months+1, 1, $calendar_year))
->find_all()
->count();
} else {
$month_count = ORM::factory("item")
->viewable()
->where("owner_id", "=", $calendar_user)
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, 1, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, $counter_months+1, 1, $calendar_year))
->find_all()
->count();
}
if ($month_count > 0) {
$month_url = url::site("calendarview/month/" . $calendar_year . "/" . $calendar_user . "/" . $counter_months . "/");
} else {
$month_url = "";
}
$calendar = new PHPCalendar($counter_months, $calendar_year, $month_url);
// If there are photos, loop through each day in the month and display links on the correct dates.
if ($month_count > 0) {
$curr_day = 1;
$MAX_DAYS = date('t', mktime(00, 00, 00, $counter_months, 1, $calendar_year));
while ($curr_day < $MAX_DAYS) {
if ($calendar_user == "-1") {
$day_count = ORM::factory("item")
->viewable()
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, $curr_day, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, $counter_months, ($curr_day + 1), $calendar_year))
->find_all()
->count();
} else {
$day_count = ORM::factory("item")
->viewable()
->where("owner_id", "=", $calendar_user)
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, $curr_day, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, $counter_months, ($curr_day + 1), $calendar_year))
->find_all()
->count();
}
if ($day_count > 0) {
$calendar->event($curr_day, url::site("calendarview/day/" . $calendar_year . "/" . $calendar_user . "/" . $counter_months . "/" . $curr_day));
}
$curr_day++;
}
// Do the last day of the month seperately, because the mktime code is different.
if ($calendar_user == "-1") {
$day_count = ORM::factory("item")
->viewable()
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, $MAX_DAYS, $calendar_year))
->where("captured", "<",mktime(0, 0, 0, ($counter_months + 1), 1, $calendar_year))
->find_all()
->count();
} else {
$day_count = ORM::factory("item")
->viewable()
->where("owner_id", "=", $calendar_user)
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, $MAX_DAYS, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, ($counter_months + 1), 1, $calendar_year))
->find_all()
->count();
}
if ($day_count > 0) {
$calendar->event($MAX_DAYS, url::site("calendarview/day/" . $calendar_year . "/" . $calendar_user . "/" . $counter_months . "/" . $MAX_DAYS));
}
}
echo $calendar->render();
print "</div>";
$counter_months++;
}
// Do December seperately, because the mktime code is different.
print "<div id=\"g-calendar-grid\">";
// Search the db for all photos that were taken during the selected year.
if ($calendar_user == "-1") {
$month_count = ORM::factory("item")
$items_for_year = ORM::factory("item")
->viewable()
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, 1, $calendar_year))
->where("captured", ">=", mktime(0, 0, 0, 1, 1, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, 1, 1, ($calendar_year + 1)))
->find_all()
->count();
->order_by("captured")
->find_all();
} else {
$month_count = ORM::factory("item")
$items_for_year = ORM::factory("item")
->viewable()
->where("owner_id", "=", $calendar_user)
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, 1, $calendar_year))
->where("captured", ">=", mktime(0, 0, 0, 1, 1, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, 1, 1, ($calendar_year + 1)))
->find_all()
->count();
->order_by("captured")
->find_all();
}
if ($month_count > 0) {
// Set up some initial variables.
$counter_months = 1;
$counter_days = 0;
$counter = 0;
// Set up the January Calendar.
// Check and see if any photos were taken in January,
// If so, make the month title into a clickable link.
print "<div id=\"g-calendar-grid\">";
if (date("n", $items_for_year[$counter]->captured) == 1) {
$month_url = url::site("calendarview/month/" . $calendar_year . "/" . $calendar_user . "/" . $counter_months . "/");
} else {
$month_url = "";
}
$calendar = new PHPCalendar($counter_months, $calendar_year, $month_url);
if ($month_count > 0) {
$curr_day = 1;
$MAX_DAYS = date('t', mktime(00, 00, 00, $counter_months, 1, $calendar_year));
while ($curr_day < $MAX_DAYS) {
if ($calendar_user == "-1") {
$day_count = ORM::factory("item")
->viewable()
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, $curr_day, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, $counter_months, ($curr_day + 1), $calendar_year))
->find_all()
->count();
// Loop through each photo taken during this year, and see what month and day they were taken on.
// Make the corresponding dates on the calendars into clickable links.
while ($counter < (count($items_for_year))) {
// Check and see if we've switched to a new month.
// If so, render the current calendar and set up a new one.
while (date("n", $items_for_year[$counter]->captured) > $counter_months) {
echo $calendar->render();
print "</div>";
$counter_months++;
$counter_days = 0;
print "<div id=\"g-calendar-grid\">";
if (date("n", $items_for_year[$counter]->captured) == $counter_months) {
$month_url = url::site("calendarview/month/" . $calendar_year . "/" . $calendar_user . "/" . $counter_months . "/");
} else {
$day_count = ORM::factory("item")
->viewable()
->where("owner_id", "=", $calendar_user)
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, $curr_day, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, $counter_months, ($curr_day + 1), $calendar_year))
->find_all()
->count();
$month_url = "";
}
if ($day_count > 0) {
$calendar->event($curr_day, url::site("calendarview/day/" . $calendar_year . "/" . $calendar_user . "/" . $counter_months . "/" . $curr_day));
}
$curr_day++;
}
if ($calendar_user == "-1") {
$day_count = ORM::factory("item")
->viewable()
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, $MAX_DAYS, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, 1, 1, $calendar_year+1))
->find_all()
->count();
} else {
$day_count = ORM::factory("item")
->viewable()
->where("owner_id", "=", $calendar_user)
->where("type", "!=", "album")
->where("captured", ">=", mktime(0, 0, 0, $counter_months, $MAX_DAYS, $calendar_year))
->where("captured", "<", mktime(0, 0, 0, 1, 1, $calendar_year+1))
->find_all()
->count();
}
if ($day_count > 0) {
$calendar->event($MAX_DAYS, url::site("calendarview/day/" . $calendar_year . "/" . $calendar_user . "/" . $counter_months . "/" . $MAX_DAYS));
$calendar = new PHPCalendar($counter_months, $calendar_year, $month_url);
}
// If the day of the current photo is different then the day of the previous photo,
// then add a link to the calendar for this date and set the current day to this day.
if (date("j", $items_for_year[$counter]->captured) > $counter_days) {
$counter_days = date("j", $items_for_year[$counter]->captured);
$calendar->event($counter_days, url::site("calendarview/day/" . $calendar_year . "/" . $calendar_user . "/" . $counter_months . "/" . $counter_days));
}
// Move onto the next photo.
$counter++;
}
$counter_months++;
// Print out the last calendar to be generated.
echo $calendar->render();
print "</div>";
?>
$counter_months++;
// If the calendar that was previously rendered was not December,
// then print out a few empty months for the rest of the year.
while ($counter_months < 13) {
print "<div id=\"g-calendar-grid\">";
$month_url = "";
$calendar = new PHPCalendar($counter_months, $calendar_year, $month_url);
echo $calendar->render();
print "</div>";
$counter_months++;
}
?>
<?= $theme->dynamic_bottom() ?>

View File

@ -1,51 +1,42 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<html xmlns="http://www.w3.org/1999/xhtml" <?= $theme->html_attributes() ?> xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<? $theme->start_combining("script,css") ?>
<title>
<? if ($page_title): ?>
<?= $page_title ?>
<? else: ?>
<? if ($theme->item()): ?>
<? if ($theme->item()->is_album()): ?>
<?= t("Browse Album :: %album_title", array("album_title" => $theme->item()->title)) ?>
<? elseif ($theme->item()->is_photo()): ?>
<?= t("Photo :: %photo_title", array("photo_title" => $theme->item()->title)) ?>
<? else: ?>
<?= t("Movie :: %movie_title", array("movie_title" => $theme->item()->title)) ?>
<? endif ?>
<?= $theme->item()->title ?>
<? elseif ($theme->tag()): ?>
<?= t("Browse Tag :: %tag_title", array("tag_title" => $theme->tag()->name)) ?>
<?= t("Photos tagged with %tag_title", array("tag_title" => $theme->tag()->name)) ?>
<? else: /* Not an item, not a tag, no page_title specified. Help! */ ?>
<?= t("Gallery") ?>
<?= item::root()->title ?>
<? endif ?>
<? endif ?>
</title>
<link rel="shortcut icon" href="<?= url::file("lib/images/favicon.ico") ?>" type="image/x-icon" />
<?= $theme->css("yui/reset-fonts-grids.css") ?>
<?= $theme->css("superfish/css/superfish.css") ?>
<?= $theme->css("themeroller/ui.base.css") ?>
<?= $theme->css("gallery.common.css") ?>
<?= $theme->css("screen.css") ?>
<!--[if lt IE 8]>
<link rel="stylesheet" type="text/css" href="<?= $theme->url("css/fix-ie.css") ?>"
media="screen,print,projection" />
<![endif]-->
<link rel="shortcut icon"
href="<?= url::file(module::get_var("gallery", "favicon_url")) ?>"
type="image/x-icon" />
<? if ($theme->page_type == "collection"): ?>
<? if ($thumb_proportion != 1): ?>
<? $new_width = $thumb_proportion * 213 ?>
<? $new_height = $thumb_proportion * 240 ?>
<style type="text/css">
#g-content #g-album-grid .g-item {
width: <?= $new_width ?>px;
height: <?= $new_height ?>px;
/* <?= $thumb_proportion ?> */
}
</style>
<? $new_width = round($thumb_proportion * 213) ?>
<? $new_height = round($thumb_proportion * 240) ?>
<style type="text/css">
.g-view #g-content #g-album-grid .g-item {
width: <?= $new_width ?>px;
height: <?= $new_height ?>px;
/* <?= $thumb_proportion ?> */
}
</style>
<? endif ?>
<? endif ?>
<?= $theme->script("json2-min.js") ?>
<?= $theme->script("jquery.js") ?>
<?= $theme->script("jquery.form.js") ?>
<?= $theme->script("jquery-ui.js") ?>
@ -58,9 +49,8 @@
<?= $theme->script("gallery.dialog.js") ?>
<?= $theme->script("superfish/js/superfish.js") ?>
<?= $theme->script("jquery.localscroll.js") ?>
<?= $theme->script("ui.init.js") ?>
<? /* These are page specific, but if we put them before $theme->head() they get combined */ ?>
<? /* These are page specific but they get combined */ ?>
<? if ($theme->page_subtype == "photo"): ?>
<?= $theme->script("jquery.scrollTo.js") ?>
<?= $theme->script("gallery.show_full_size.js") ?>
@ -69,6 +59,23 @@
<? endif ?>
<?= $theme->head() ?>
<? /* Theme specific CSS/JS goes last so that it can override module CSS/JS */ ?>
<?= $theme->script("ui.init.js") ?>
<?= $theme->css("yui/reset-fonts-grids.css") ?>
<?= $theme->css("superfish/css/superfish.css") ?>
<?= $theme->css("themeroller/ui.base.css") ?>
<?= $theme->css("screen.css") ?>
<!--[if lte IE 8]>
<link rel="stylesheet" type="text/css" href="<?= $theme->url("css/fix-ie.css") ?>"
media="screen,print,projection" />
<![endif]-->
<!-- LOOKING FOR YOUR JAVASCRIPT? It's all been combined into the link below -->
<?= $theme->get_combined("script") ?>
<!-- LOOKING FOR YOUR CSS? It's all been combined into the link below -->
<?= $theme->get_combined("css") ?>
</head>
<body <?= $theme->body_attributes() ?>>
@ -87,15 +94,16 @@
<?= $theme->user_menu() ?>
<?= $theme->header_top() ?>
<!-- hide the menu and make it visible after the page has loaded, to minimize menu flicker -->
<!-- hide the menu until after the page has loaded, to minimize menu flicker -->
<div id="g-site-menu" style="visibility: hidden">
<?= $theme->site_menu() ?>
<?= $theme->site_menu($theme->item() ? "#g-item-id-{$theme->item()->id}" : "") ?>
</div>
<script type="text/javascript"> $(document).ready(function() { $("#g-site-menu").css("visibility", "visible"); }) </script>
<?= $theme->header_bottom() ?>
</div>
<? // The following code was modifed to allow module-defined breadcrumbs.
// Everything else in this file is a copy of the default page.html.php file.
?>
@ -120,6 +128,8 @@
<? endif ?>
<? // End modified code ?>
</div>
<div id="bd">
<div id="yui-main">
@ -151,4 +161,4 @@
</div>
<?= $theme->page_bottom() ?>
</body>
</html>
</html>