Permalink
Browse files

Initial commit

  • Loading branch information...
0 parents commit f52949345f914896410b0671a54e31785ef51fb8 @jerel jerel committed Dec 8, 2011
Showing with 3,165 additions and 0 deletions.
  1. +29 −0 config/routes.php
  2. +455 −0 controllers/admin.php
  3. +105 −0 controllers/galleries.php
  4. +103 −0 css/galleries.css
  5. +140 −0 details.php
  6. BIN img/album.png
  7. BIN img/jcrop.gif
  8. +7 −0 js/jcrop.js
  9. +31 −0 js/jcrop_init.js
  10. +98 −0 js/manage.js
  11. +58 −0 language/arabic/galleries_lang.php
  12. +26 −0 language/arabic/gallery_images_lang.php
  13. +58 −0 language/brazilian/galleries_lang.php
  14. +26 −0 language/brazilian/gallery_images_lang.php
  15. +58 −0 language/chinese_traditional/galleries_lang.php
  16. +26 −0 language/chinese_traditional/gallery_images_lang.php
  17. +60 −0 language/czech/galleries_lang.php
  18. +26 −0 language/czech/gallery_images_lang.php
  19. +58 −0 language/dutch/galleries_lang.php
  20. +26 −0 language/dutch/gallery_images_lang.php
  21. +60 −0 language/english/galleries_lang.php
  22. +26 −0 language/english/gallery_images_lang.php
  23. +68 −0 language/finnish/galleries_lang.php
  24. +34 −0 language/finnish/gallery_images_lang.php
  25. +58 −0 language/french/galleries_lang.php
  26. +26 −0 language/french/gallery_images_lang.php
  27. +58 −0 language/german/galleries_lang.php
  28. +26 −0 language/german/gallery_images_lang.php
  29. +59 −0 language/greek/galleries_lang.php
  30. +26 −0 language/greek/gallery_images_lang.php
  31. +58 −0 language/italian/galleries_lang.php
  32. +26 −0 language/italian/gallery_images_lang.php
  33. +58 −0 language/lithuanian/galleries_lang.php
  34. +26 −0 language/lithuanian/gallery_images_lang.php
  35. +58 −0 language/polish/galleries_lang.php
  36. +26 −0 language/polish/gallery_images_lang.php
  37. +69 −0 language/russian/galleries_lang.php
  38. +37 −0 language/russian/gallery_images_lang.php
  39. +59 −0 language/slovenian/galleries_lang.php
  40. +26 −0 language/slovenian/gallery_images_lang.php
  41. +61 −0 language/spanish/galleries_lang.php
  42. +29 −0 language/spanish/gallery_images_lang.php
  43. +226 −0 models/gallery_image_m.php
  44. +150 −0 models/gallery_m.php
  45. +78 −0 plugin.php
  46. +164 −0 views/admin/form.php
  47. +11 −0 views/admin/image/preview.php
  48. +60 −0 views/admin/index.php
  49. +11 −0 views/admin/preview.php
  50. +53 −0 views/gallery.php
  51. +19 −0 views/image.php
  52. +29 −0 views/index.php
29 config/routes.php
@@ -0,0 +1,29 @@
+<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
+/*
+| -------------------------------------------------------------------------
+| URI ROUTING
+| -------------------------------------------------------------------------
+| This file lets you re-map URI requests to specific controller functions.
+|
+| Typically there is a one-to-one relationship between a URL string
+| and its corresponding controller class/method. The segments in a
+| URL normally follow this pattern:
+|
+| www.your-site.com/class/method/id/
+|
+| In some instances, however, you may want to remap this relationship
+| so that a different class/function is called than the one
+| corresponding to the URL.
+|
+| Please see the user guide for complete details:
+|
+| http://www.codeigniter.com/user_guide/general/routing.html
+*/
+
+// Maintain admin routes
+$route['galleries/admin(:any)?'] = 'admin$1';
+
+// Rewrite the URLs
+$route['galleries/(:any)/(:num)'] = 'galleries/image/$1/$2';
+$route['galleries/(:any)'] = 'galleries/gallery/$1';
+?>
455 controllers/admin.php
@@ -0,0 +1,455 @@
+<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
+/**
+ *
+ * The galleries module enables users to create albums, upload photos and manage their existing albums.
+ *
+ * @author PyroCMS Dev Team
+ * @package PyroCMS
+ * @subpackage Gallery Module
+ * @category Modules
+ * @license Apache License v2.0
+ */
+class Admin extends Admin_Controller
+{
+ /**
+ * Validation rules for creating a new gallery
+ *
+ * @var array
+ * @access private
+ */
+ private $gallery_validation_rules = array(
+ array(
+ 'field' => 'title',
+ 'label' => 'lang:galleries.title_label',
+ 'rules' => 'trim|max_length[255]|required'
+ ),
+ 'slug' => array(
+ 'field' => 'slug',
+ 'label' => 'lang:galleries.slug_label',
+ 'rules' => 'trim|max_length[255]|required|callback__check_slug'
+ ),
+ array(
+ 'field' => 'folder_id',
+ 'label' => 'lang:galleries.folder_label',
+ 'rules' => 'trim|numeric|required|callback__check_folder'
+ ),
+ array(
+ 'field' => 'description',
+ 'label' => 'lang:galleries.description_label',
+ 'rules' => 'trim'
+ ),
+ array(
+ 'field' => 'enable_comments',
+ 'label' => 'lang:galleries.comments_label',
+ 'rules' => 'trim'
+ ),
+ array(
+ 'field' => 'published',
+ 'label' => 'lang:galleries.published_label',
+ 'rules' => 'trim'
+ ),
+ array(
+ 'field' => 'gallery_thumbnail',
+ 'label' => 'lang:galleries.thumbnail_label',
+ 'rules' => 'trim'
+ ),
+ array(
+ 'field' => 'css',
+ 'label' => 'lang:galleries.css_label',
+ 'rules' => 'trim'
+ ),
+ array(
+ 'field' => 'js',
+ 'label' => 'lang:galleries.js_label',
+ 'rules' => 'trim'
+ )
+ );
+
+ /**
+ * Validation rules for uploading photos
+ *
+ * @var array
+ * @access private
+ */
+ private $image_validation_rules = array(
+ array(
+ 'field' => 'title',
+ 'label' => 'lang:gallery_images.title_label',
+ 'rules' => 'trim|max_length[255]|required'
+ ),
+ array(
+ 'field' => 'userfile',
+ 'label' => 'lang:gallery_images.image_label',
+ 'rules' => 'trim'
+ ),
+ array(
+ 'field' => 'gallery_id',
+ 'label' => 'lang:gallery_images.gallery_label',
+ 'rules' => 'trim|integer|required'
+ ),
+ array(
+ 'field' => 'description',
+ 'label' => 'lang:gallery_images.description_label',
+ 'rules' => 'trim'
+ )
+ );
+
+ public function __construct()
+ {
+ parent::__construct();
+
+ // Load all the required classes
+ $this->load->model('gallery_m');
+ $this->load->model('gallery_image_m');
+ $this->load->library('form_validation');
+ $this->lang->load('galleries');
+ $this->lang->load('gallery_images');
+
+ $this->load->helper('html');
+ $this->load->model('files/file_folders_m');
+ }
+
+ /**
+ * List all existing albums
+ *
+ * @access public
+ * @return void
+ */
+ public function index()
+ {
+ // Get all the galleries
+ $galleries = $this->gallery_m->get_all();
+
+ // Get aux. folders
+ $this->load->model('file_folders_m');
+ $folders = $this->file_folders_m->get_folders();
+
+ // Load the view
+ $this->template
+ ->title($this->module_details['name'])
+ ->set('galleries', $galleries)
+ ->set('folders', $folders)
+ ->build('admin/index');
+ }
+
+ /**
+ * Create a new gallery
+ *
+ * @access public
+ * @return void
+ */
+ public function create()
+ {
+ $file_folders = $this->file_folders_m->get_folders();
+ $folders_tree = array();
+ foreach ($file_folders as $folder)
+ {
+ $indent = repeater('&raquo; ', $folder->depth);
+ $folders_tree[$folder->id] = $indent.$folder->name;
+ }
+
+ // Set the validation rules
+ $this->form_validation->set_rules($this->gallery_validation_rules);
+
+ if ($this->form_validation->run() )
+ {
+ if ($id = $this->gallery_m->insert($this->input->post()))
+ {
+ // Everything went ok..
+ $this->session->set_flashdata('success', lang('galleries.create_success'));
+
+ // Redirect back to the form or main page
+ $this->input->post('btnAction') == 'save_exit'
+ ? redirect('admin/galleries')
+ : redirect('admin/galleries/manage/'.$id);
+ }
+
+ // Something went wrong..
+ else
+ {
+ $this->session->set_flashdata('error', lang('galleries.create_error'));
+ redirect('admin/galleries/create');
+ }
+ }
+
+ // Required for validation
+ foreach ($this->gallery_validation_rules as $rule)
+ {
+ $gallery->{$rule['field']} = $this->input->post($rule['field']);
+ }
+
+ $this->template
+ ->title($this->module_details['name'], lang('galleries.new_gallery_label'))
+ ->append_metadata( css('galleries.css', 'galleries') )
+ ->append_metadata( js('manage.js', 'galleries') )
+ ->append_metadata( $this->load->view('fragments/wysiwyg', $this->data, TRUE) )
+ ->set('gallery', $gallery)
+ ->set('folders_tree', $folders_tree)
+ ->build('admin/form');
+ }
+
+ /**
+ * Manage an existing gallery
+ *
+ * @access public
+ * @param int $id The ID of the gallery to manage
+ * @return void
+ */
+ public function manage($id)
+ {
+ $file_folders = $this->file_folders_m->get_folders();
+ $folders_tree = array();
+ foreach($file_folders as $folder)
+ {
+ $indent = repeater('&raquo; ', $folder->depth);
+ $folders_tree[$folder->id] = $indent.$folder->name;
+ }
+
+ $this->form_validation->set_rules(array_merge($this->gallery_validation_rules, array(
+ 'slug' => array(
+ 'field' => 'slug',
+ 'label' => 'lang:galleries.slug_label',
+ 'rules' => 'trim|max_length[255]|required|callback__check_slug['.$id.']'
+ ),
+ )));
+
+ // Get the gallery and all images
+ $galleries = $this->gallery_m->get_all();
+ $gallery = $this->gallery_m->get($id);
+ $gallery_images = $this->gallery_image_m->get_images_by_gallery($id);
+
+ if (empty($gallery))
+ {
+ $this->session->set_flashdata('error', lang('galleries.exists_error'));
+ redirect('admin/galleries');
+ }
+
+ // Valid form data?
+ if ($this->form_validation->run())
+ {
+ // Try to update the gallery
+ if ($this->gallery_m->update($id, $this->input->post()) === TRUE )
+ {
+ $this->session->set_flashdata('success', lang('galleries.update_success'));
+
+ // Redirect back to the form or main page
+ $this->input->post('btnAction') == 'save_exit'
+ ? redirect('admin/galleries')
+ : redirect('admin/galleries/manage/'.$id);
+ }
+ else
+ {
+ $this->session->set_flashdata('error', lang('galleries.update_error'));
+ redirect('admin/galleries/manage/'.$id);
+ }
+ }
+
+ // Required for validation
+ foreach ($this->gallery_validation_rules as $rule)
+ {
+ if ($this->input->post($rule['field']))
+ {
+ $gallery->{$rule['field']} = $this->input->post($rule['field']);
+ }
+ }
+
+ $this->template
+ ->title($this->module_details['name'], sprintf(lang('galleries.manage_gallery_label'), $gallery->title))
+ ->append_metadata( css('galleries.css', 'galleries') )
+ ->append_metadata( js('manage.js', 'galleries') )
+ ->append_metadata( $this->load->view('fragments/wysiwyg', $this->data, TRUE) )
+ ->set('gallery', $gallery)
+ ->set('galleries', $galleries)
+ ->set('gallery_images', $gallery_images)
+ ->set('folders_tree', $folders_tree)
+ ->build('admin/form');
+ }
+
+ /**
+ * Show a gallery preview
+ * @access public
+ * @param int $id The ID of the gallery
+ * @return void
+ */
+ public function preview($id = 0)
+ {
+ $data->gallery = $this->gallery_m->get($id);
+
+ $this->template->set_layout('modal', 'admin');
+ $this->template->build('admin/preview', $data);
+ }
+
+ /**
+ * Delete an existing gallery
+ *
+ * @access public
+ * @param int $id The ID of the gallery to delete
+ * @return void
+ */
+ public function delete($id = NULL)
+ {
+ $id_array = array();
+
+ // Multiple IDs or just a single one?
+ if ($_POST )
+ {
+ $id_array = $_POST['action_to'];
+ }
+ else
+ {
+ if ($id !== NULL )
+ {
+ $id_array[0] = $id;
+ }
+ }
+
+ if ( empty($id_array) )
+ {
+ $this->session->set_flashdata('error', lang('galleries.id_error'));
+ redirect('admin/galleries');
+ }
+
+ // Loop through each ID
+ foreach ( $id_array as $id)
+ {
+ // Get the gallery
+ $gallery = $this->gallery_m->get($id);
+
+ // Does the gallery exist?
+ if ( !empty($gallery) )
+ {
+
+ // Delete the gallery along with all the images from the database
+ if ($this->gallery_m->delete($id) AND $this->gallery_image_m->delete_by('gallery_id', $id) )
+ {
+ $this->session->set_flashdata('error', sprintf( lang('galleries.folder_error'), $gallery->title));
+ redirect('admin/galleries');
+ }
+ else
+ {
+ $this->session->set_flashdata('error', sprintf( lang('galleries.delete_error'), $gallery->title));
+ redirect('admin/galleries');
+ }
+ }
+ }
+
+ $this->session->set_flashdata('success', lang('galleries.delete_success'));
+ redirect('admin/galleries');
+ }
+
+ /**
+ * Show a gallery image preview
+ * @access public
+ * @param int $id The ID of the gallery image
+ * @return void
+ */
+ public function image_preview($id = 0)
+ {
+ $data->image = $this->gallery_image_m->get($id);
+
+ $this->template->set_layout('modal', 'admin');
+ $this->template->build('admin/image/preview', $data);
+ }
+
+ /**
+ * Sort images in an existing gallery
+ *
+ * @access public
+ */
+ public function ajax_update_order()
+ {
+ $ids = explode(',', $this->input->post('order'));
+
+ $i = 1;
+ foreach ($ids as $id)
+ {
+ $this->gallery_image_m->update($id, array(
+ 'order' => $i
+ ));
+
+ if ($i === 1)
+ {
+ $preview = $this->gallery_image_m->get($id);
+
+ if ($preview)
+ {
+ $this->db->where('id', $preview->gallery_id);
+ $this->db->update('galleries', array(
+ 'preview' => $preview->filename
+ ));
+ }
+ }
+ ++$i;
+ }
+ }
+
+ public function ajax_select_folder($folder_id)
+ {
+ $folder = $this->file_folders_m->get($folder_id);
+
+ if (isset($folder->id))
+ {
+ $folder->images = $this->gallery_image_m->get_images_by_file_folder($folder->id);
+
+ return $this->template->build_json($folder);
+ }
+
+ echo FALSE;
+ }
+
+ /**
+ * Callback method that checks the slug of the gallery
+ * @access public
+ * @param string title The slug to check
+ * @return bool
+ */
+ public function _check_slug($slug = '', $id = NULL)
+ {
+ $this->form_validation->set_message('_check_slug', sprintf(lang('galleries.already_exist_error'), $slug));
+
+ return ! $this->gallery_m->check_slug($slug, $id);
+ }
+
+ /**
+ * Callback method that checks the file folder of the gallery
+ * @access public
+ * @param int id The id to check if file folder exists or prep to create new folder
+ * @return bool
+ */
+ public function _check_folder($id = 0)
+ {
+ // Is not creating or folder exist.. Nothing to do.
+ if ($this->method !== 'create')
+ {
+ return $id;
+ }
+ elseif ($this->file_folders_m->exists($id))
+ {
+ if ($this->gallery_m->count_by('folder_id', $id) > 0)
+ {
+ $this->form_validation->set_message('_check_folder', lang('galleries.folder_duplicated_error'));
+
+ return FALSE;
+ }
+
+ return $id;
+ }
+
+ $folder_name = $this->input->post('title');
+ $folder_slug = url_title(strtolower($folder_name));
+
+ // Check if folder already exist, rename if necessary.
+ $i = 0;
+ $counter = '';
+ while ( ((int) $this->file_folders_m->count_by('slug', $folder_slug.$counter) > 0))
+ {
+ $counter = '-'.++$i;
+ }
+
+ // Return data to create a new folder to this gallery.
+ return array(
+ 'name' => $folder_name.($i > 0 ? ' ('.$i.')' : ''),
+ 'slug' => $folder_slug.$counter
+ );
+ }
+}
105 controllers/galleries.php
@@ -0,0 +1,105 @@
+<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
+/**
+ *
+ * The galleries module enables users to create albums, upload photos and manage their existing albums.
+ *
+ * @author PyroCMS Dev Team
+ * @package PyroCMS
+ * @subpackage Gallery Module
+ * @category Modules
+ * @license Apache License v2.0
+ */
+class Galleries extends Public_Controller
+{
+ /**
+ * Constructor method
+ *
+ * @author PyroCMS Dev Team
+ * @access public
+ * @return void
+ */
+ public function __construct()
+ {
+ parent::__construct();
+
+ // Load the required classes
+ $this->load->model('gallery_m');
+ $this->load->model('gallery_image_m');
+ $this->lang->load('galleries');
+ $this->lang->load('gallery_images');
+ $this->load->helper('html');
+ }
+
+ /**
+ * Index method
+ *
+ * @access public
+ * @return void
+ */
+ public function index()
+ {
+ $data->galleries = $this->gallery_m->get_all_with_filename();
+
+ $this->template
+ ->title($this->module_details['name'])
+ ->build('index', $data);
+ }
+
+ /**
+ * View a single gallery
+ *
+ * @author Yorick Peterse - PyroCMS Dev Team
+ * @access public
+ * @param string $slug The slug of the gallery
+ */
+ public function gallery($slug = NULL)
+ {
+ $slug or show_404();
+
+ $gallery = $this->gallery_m->get_by('slug', $slug) or show_404();
+ $gallery_images = $this->gallery_image_m->get_images_by_gallery($gallery->id);
+ $sub_galleries = $this->gallery_m->get_all_with_filename('parent_id', $gallery->folder_id);
+ if($gallery->css) {
+ $this->template->append_metadata('<style type="text/css">' . PHP_EOL . $gallery->css . PHP_EOL . '</style>');
+ }
+ if($gallery->js) {
+ $this->template->append_metadata('<script type="text/javascript">' . PHP_EOL . $gallery->js . PHP_EOL . '</script>');
+ }
+
+ $this->template->build('gallery', array(
+ 'gallery' => $gallery,
+ 'gallery_images' => $gallery_images,
+ 'sub_galleries' => $sub_galleries
+ ));
+ }
+
+ /**
+ * View a single image
+ *
+ * @author Yorick Peterse - PyroCMS Dev Team
+ * @access public
+ * @param
+ */
+ public function image($gallery_slug = NULL, $image_id = NULL)
+ {
+ // Got the required variables?
+ if ( empty($gallery_slug) OR empty($image_id) )
+ {
+ show_404();
+ }
+
+ $gallery = $this->gallery_m->get_by('slug', $gallery_slug);
+ $gallery_image = $this->gallery_image_m->get($image_id);
+
+ // Do the gallery and the image ID match?
+ if ( ! $gallery OR ($gallery->id != $gallery_image->gallery_id))
+ {
+ show_404();
+ }
+
+ $this->template->build('image', array(
+ 'gallery' => $gallery,
+ 'gallery_image' => $gallery_image
+ ));
+ }
+}
103 css/galleries.css
@@ -0,0 +1,103 @@
+ /***
+ * Galleries module styling
+ * @author Jerel Unruh - PyroCMS Dev Team
+ ***/
+
+/*Give the js file upload a height so everything will float properly*/
+
+.uploader_file_input
+{
+ height: 28px;
+}
+
+/*make the uniform file input usable */
+
+form.crud ul li div
+{
+ width: auto;
+}
+
+/*Style the manage page thumbnails*/
+
+#gallery_images_list
+{
+ margin-left:50px;
+ list-style:none;
+}
+
+#gallery_images_list li
+{
+ float: left;
+ margin: 5px;
+ padding: 5px;
+ height: 100px;
+}
+
+#gallery_images_list img
+{
+ border: 1px solid #9c9fa1;
+}
+
+#gallery_images_list img:hover
+{
+ border: 1px solid #3A4043;
+ cursor: pointer;
+}
+
+.images-placeholder #gallery_images_list img:hover
+{
+ border: 1px solid #9c9fa1;
+ cursor: default;
+}
+
+/* JCROP */
+
+.jcrop-holder
+{
+ background: none!important;
+ text-align: left;
+}
+
+.jcrop-vline, .jcrop-hline
+{
+ font-size: 0;
+ position: absolute;
+ background: white url('../img/jcrop.gif') top left repeat;
+}
+
+.jcrop-vline
+{
+ height: 100%;
+ width: 1px !important;
+}
+
+.jcrop-hline
+{
+ width: 100%;
+ height: 1px !important;
+}
+
+.jcrop-handle
+{
+ font-size: 1px;
+ width: 7px !important;
+ height: 7px !important;
+ border: 1px #eee solid;
+ background-color: #333;
+ *width: 9px;
+ *height: 9px;
+}
+
+.jcrop-tracker
+{
+ width: 100%;
+ height: 100%;
+}
+
+.custom .jcrop-handle
+{
+ border-color: black;
+ background-color: #C7BB00;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+}
140 details.php
@@ -0,0 +1,140 @@
+<?php defined('BASEPATH') or exit('No direct script access allowed');
+
+class Module_Galleries extends Module {
+
+ public $version = '1.1';
+
+ public function info()
+ {
+ return array(
+ 'name' => array(
+ 'sl' => 'Galerija',
+ 'en' => 'Galleries',
+ 'el' => 'Γκαλερί',
+ 'de' => 'Galerien',
+ 'nl' => 'Gallerijen',
+ 'fr' => 'Galeries',
+ 'zh' => '畫廊',
+ 'it' => 'Gallerie',
+ 'ru' => 'Галереи',
+ 'ar' => 'معارض الصّور',
+ 'br' => 'Galerias',
+ 'cs' => 'Galerie',
+ 'es' => 'Galerías',
+ 'fi' => 'Galleriat',
+ 'lt' => 'Galerijos'
+ ),
+ 'description' => array(
+ 'sl' => 'Modul galerije vam omogoča da ustvarite albume vaših slik.',
+ 'en' => 'The galleries module is a powerful module that lets users create image galleries.',
+ 'el' => 'Παρέχει την δυνατότητα στους χρήστες να δημιουργούν άλμπουμ εικόνων.',
+ 'de' => 'Mit dem Galerie Modul kannst du Bildergalerien anlegen.',
+ 'nl' => 'De gallerij module die gebruikers in staat stelt afbeeldingsgallerijen te maken.',
+ 'fr' => 'Galerie est une puissante extension permettant de créer des galeries d\'images.',
+ 'zh' => '這是一個功能完整的畫廊模組,可以讓用戶建立自己的畫本或相簿。',
+ 'it' => 'Il modulo gallerie è un potente modulo che permette agli utenti di creare gallerie di immagini.',
+ 'ru' => 'Галереи - мощный модуль, который даёт пользователям возможность создавать галереи изображений.',
+ 'ar' => 'هذه الوحدة تمُكّنك من إنشاء معارض الصّور بسهولة.',
+ 'br' => 'O módulo de galerias é um poderoso módulo que permite aos usuários criar galerias de imagens.',
+ 'cs' => 'Silný modul pro vytváření a správu galerií obrázků.',
+ 'es' => 'Galerías es un potente módulo que permite a los usuarios crear galerías de imágenes.',
+ 'fi' => 'Galleria moduuli antaa käyttäjien luoda kuva gallerioita.',
+ 'lt' => 'Galerijos modulis leidžia vartotojams kurti nuotraukų galerijas'
+ ),
+ 'frontend' => TRUE,
+ 'backend' => TRUE,
+ 'menu' => 'content',
+
+ 'shortcuts' => array(
+ array(
+ 'name' => 'galleries.new_gallery_label',
+ 'uri' => 'admin/galleries/create',
+ 'class' => 'add'
+ ),
+ ),
+ );
+ }
+
+ public function install()
+ {
+ $this->dbforge->drop_table('galleries');
+ $this->dbforge->drop_table('gallery_images');
+
+ $galleries = "
+ CREATE TABLE ".$this->db->dbprefix('galleries')." (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `title` varchar(255) NOT NULL,
+ `slug` varchar(255) NOT NULL,
+ `folder_id` int(11) NOT NULL,
+ `thumbnail_id` int(11) DEFAULT NULL,
+ `description` text,
+ `updated_on` int(15) NOT NULL,
+ `preview` varchar(255) DEFAULT NULL,
+ `enable_comments` int(1) DEFAULT NULL,
+ `published` int(1) DEFAULT NULL,
+ `css` TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci,
+ `js` TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `slug` (`slug`),
+ UNIQUE KEY `thumbnail_id` (`thumbnail_id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8
+ ";
+
+ $gallery_images = "
+ CREATE TABLE ".$this->db->dbprefix('gallery_images')." (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `file_id` int(11) NOT NULL,
+ `gallery_id` int(11) NOT NULL,
+ `order` int(11) DEFAULT '0',
+ PRIMARY KEY (`id`),
+ KEY `gallery_id` (`gallery_id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8
+ ";
+
+ if($this->db->query($galleries) && $this->db->query($gallery_images))
+ {
+ return TRUE;
+ }
+ }
+
+ public function uninstall()
+ {
+ if($this->dbforge->drop_table('galleries') &&
+ $this->dbforge->drop_table('gallery_images'))
+ {
+ return TRUE;
+ }
+ }
+
+
+ public function upgrade($old_version)
+ {
+ // Your Upgrade Logic
+ return TRUE;
+ }
+
+ public function help()
+ {
+ // Return a string containing help info
+ // You could include a file and return it here.
+ return "<h4>Overview</h4>
+ <p>The galleries module is a basic photo management tool. Features include drag & drop sorting and sub galleries.</p>
+ <h4>Creating Galleries</h4>
+ <p>To create a gallery go to Content->Files and create a new folder. Come back to Galleries and click \"Create a new gallery\" and select the folder of images that you just created in the File manager.
+ Fill out the title, slug, and the (optional) Description. (The Description shows
+ beside the gallery thumbnail at http://example.com/galleries). Choose whether you want to enable comments for this gallery or not
+ and select Publish if you wish for the gallery to show in the list of galleries. Note: selecting Unpublish does not disable the gallery, it just
+ removes it from the list at http://example.com/galleries. You can still create a navigation link directly to it and the
+ gallery will be viewable. For example: http://example.com/galleries/gallery-title</p>
+ <h4>Uploading Images</h4>
+ <p>For instructions on how to upload images refer to the Files documentation.</p>
+ <h4>Manage Gallery</h4>
+ <p>Click on List Galleries->Manage. Here you may change the gallery's title, slug, description, etc. If you want a thumbnail to represent this
+ gallery in the gallery list you may choose one from the dropdown and click Save. To change the order that the images are displayed in on the front-end
+ simply grab the images and drag them into the proper order.</p>
+ <h4>Editing an Image</h4>
+ <p>From the Manage page click on the image that you would like to edit. A modal window will appear and you may change
+ the title and the description of the image. You may also move the image to a different folder.</p>";
+ }
+}
+/* End of file details.php */
BIN img/album.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN img/jcrop.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 js/jcrop.js
@@ -0,0 +1,7 @@
+/**
+ * Jcrop v.0.9.8 (minimized)
+ * (c) 2008 Kelly Hallman and DeepLiquid.com
+ * More information: http://deepliquid.com/content/Jcrop.html
+ * Released under MIT License - this header must remain with code
+ */
+(function($){$.Jcrop=function(obj,opt){var obj=obj,opt=opt;if(typeof(obj)!=="object"){obj=$(obj)[0]}if(typeof(opt)!=="object"){opt={}}if(!("trackDocument" in opt)){opt.trackDocument=$.browser.msie?false:true;if($.browser.msie&&$.browser.version.split(".")[0]=="8"){opt.trackDocument=true}}if(!("keySupport" in opt)){opt.keySupport=$.browser.msie?false:true}var defaults={trackDocument:false,baseClass:"jcrop",addClass:null,bgColor:"black",bgOpacity:0.6,borderOpacity:0.4,handleOpacity:0.5,handlePad:5,handleSize:9,handleOffset:5,edgeMargin:14,aspectRatio:0,keySupport:true,cornerHandles:true,sideHandles:true,drawBorders:true,dragEdges:true,boxWidth:0,boxHeight:0,boundary:8,animationDelay:20,swingSpeed:3,allowSelect:true,allowMove:true,allowResize:true,minSelect:[0,0],maxSize:[0,0],minSize:[0,0],onChange:function(){},onSelect:function(){}};var options=defaults;setOptions(opt);var $origimg=$(obj);var $img=$origimg.clone().removeAttr("id").css({position:"absolute"});$img.width($origimg.width());$img.height($origimg.height());$origimg.after($img).hide();presize($img,options.boxWidth,options.boxHeight);var boundx=$img.width(),boundy=$img.height(),$div=$("<div />").width(boundx).height(boundy).addClass(cssClass("holder")).css({position:"relative",backgroundColor:options.bgColor}).insertAfter($origimg).append($img);if(options.addClass){$div.addClass(options.addClass)}var $img2=$("<img />").attr("src",$img.attr("src")).css("position","absolute").width(boundx).height(boundy);var $img_holder=$("<div />").width(pct(100)).height(pct(100)).css({zIndex:310,position:"absolute",overflow:"hidden"}).append($img2);var $hdl_holder=$("<div />").width(pct(100)).height(pct(100)).css("zIndex",320);var $sel=$("<div />").css({position:"absolute",zIndex:300}).insertBefore($img).append($img_holder,$hdl_holder);var bound=options.boundary;var $trk=newTracker().width(boundx+(bound*2)).height(boundy+(bound*2)).css({position:"absolute",top:px(-bound),left:px(-bound),zIndex:290}).mousedown(newSelection);var xlimit,ylimit,xmin,ymin;var xscale,yscale,enabled=true;var docOffset=getPos($img),btndown,lastcurs,dimmed,animating,shift_down;var Coords=function(){var x1=0,y1=0,x2=0,y2=0,ox,oy;function setPressed(pos){var pos=rebound(pos);x2=x1=pos[0];y2=y1=pos[1]}function setCurrent(pos){var pos=rebound(pos);ox=pos[0]-x2;oy=pos[1]-y2;x2=pos[0];y2=pos[1]}function getOffset(){return[ox,oy]}function moveOffset(offset){var ox=offset[0],oy=offset[1];if(0>x1+ox){ox-=ox+x1}if(0>y1+oy){oy-=oy+y1}if(boundy<y2+oy){oy+=boundy-(y2+oy)}if(boundx<x2+ox){ox+=boundx-(x2+ox)}x1+=ox;x2+=ox;y1+=oy;y2+=oy}function getCorner(ord){var c=getFixed();switch(ord){case"ne":return[c.x2,c.y];case"nw":return[c.x,c.y];case"se":return[c.x2,c.y2];case"sw":return[c.x,c.y2]}}function getFixed(){if(!options.aspectRatio){return getRect()}var aspect=options.aspectRatio,min_x=options.minSize[0]/xscale,min_y=options.minSize[1]/yscale,max_x=options.maxSize[0]/xscale,max_y=options.maxSize[1]/yscale,rw=x2-x1,rh=y2-y1,rwa=Math.abs(rw),rha=Math.abs(rh),real_ratio=rwa/rha,xx,yy;if(max_x==0){max_x=boundx*10}if(max_y==0){max_y=boundy*10}if(real_ratio<aspect){yy=y2;w=rha*aspect;xx=rw<0?x1-w:w+x1;if(xx<0){xx=0;h=Math.abs((xx-x1)/aspect);yy=rh<0?y1-h:h+y1}else{if(xx>boundx){xx=boundx;h=Math.abs((xx-x1)/aspect);yy=rh<0?y1-h:h+y1}}}else{xx=x2;h=rwa/aspect;yy=rh<0?y1-h:y1+h;if(yy<0){yy=0;w=Math.abs((yy-y1)*aspect);xx=rw<0?x1-w:w+x1}else{if(yy>boundy){yy=boundy;w=Math.abs(yy-y1)*aspect;xx=rw<0?x1-w:w+x1}}}if(xx>x1){if(xx-x1<min_x){xx=x1+min_x}else{if(xx-x1>max_x){xx=x1+max_x}}if(yy>y1){yy=y1+(xx-x1)/aspect}else{yy=y1-(xx-x1)/aspect}}else{if(xx<x1){if(x1-xx<min_x){xx=x1-min_x}else{if(x1-xx>max_x){xx=x1-max_x}}if(yy>y1){yy=y1+(x1-xx)/aspect}else{yy=y1-(x1-xx)/aspect}}}if(xx<0){x1-=xx;xx=0}else{if(xx>boundx){x1-=xx-boundx;xx=boundx}}if(yy<0){y1-=yy;yy=0}else{if(yy>boundy){y1-=yy-boundy;yy=boundy}}return last=makeObj(flipCoords(x1,y1,xx,yy))}function rebound(p){if(p[0]<0){p[0]=0}if(p[1]<0){p[1]=0}if(p[0]>boundx){p[0]=boundx}if(p[1]>boundy){p[1]=boundy}return[p[0],p[1]]}function flipCoords(x1,y1,x2,y2){var xa=x1,xb=x2,ya=y1,yb=y2;if(x2<x1){xa=x2;xb=x1}if(y2<y1){ya=y2;yb=y1}return[Math.round(xa),Math.round(ya),Math.round(xb),Math.round(yb)]}function getRect(){var xsize=x2-x1;var ysize=y2-y1;if(xlimit&&(Math.abs(xsize)>xlimit)){x2=(xsize>0)?(x1+xlimit):(x1-xlimit)}if(ylimit&&(Math.abs(ysize)>ylimit)){y2=(ysize>0)?(y1+ylimit):(y1-ylimit)}if(ymin&&(Math.abs(ysize)<ymin)){y2=(ysize>0)?(y1+ymin):(y1-ymin)}if(xmin&&(Math.abs(xsize)<xmin)){x2=(xsize>0)?(x1+xmin):(x1-xmin)}if(x1<0){x2-=x1;x1-=x1}if(y1<0){y2-=y1;y1-=y1}if(x2<0){x1-=x2;x2-=x2}if(y2<0){y1-=y2;y2-=y2}if(x2>boundx){var delta=x2-boundx;x1-=delta;x2-=delta}if(y2>boundy){var delta=y2-boundy;y1-=delta;y2-=delta}if(x1>boundx){var delta=x1-boundy;y2-=delta;y1-=delta}if(y1>boundy){var delta=y1-boundy;y2-=delta;y1-=delta}return makeObj(flipCoords(x1,y1,x2,y2))}function makeObj(a){return{x:a[0],y:a[1],x2:a[2],y2:a[3],w:a[2]-a[0],h:a[3]-a[1]}}return{flipCoords:flipCoords,setPressed:setPressed,setCurrent:setCurrent,getOffset:getOffset,moveOffset:moveOffset,getCorner:getCorner,getFixed:getFixed}}();var Selection=function(){var start,end,dragmode,awake,hdep=370;var borders={};var handle={};var seehandles=false;var hhs=options.handleOffset;if(options.drawBorders){borders={top:insertBorder("hline").css("top",$.browser.msie?px(-1):px(0)),bottom:insertBorder("hline"),left:insertBorder("vline"),right:insertBorder("vline")}}if(options.dragEdges){handle.t=insertDragbar("n");handle.b=insertDragbar("s");handle.r=insertDragbar("e");handle.l=insertDragbar("w")}options.sideHandles&&createHandles(["n","s","e","w"]);options.cornerHandles&&createHandles(["sw","nw","ne","se"]);function insertBorder(type){var jq=$("<div />").css({position:"absolute",opacity:options.borderOpacity}).addClass(cssClass(type));$img_holder.append(jq);return jq}function dragDiv(ord,zi){var jq=$("<div />").mousedown(createDragger(ord)).css({cursor:ord+"-resize",position:"absolute",zIndex:zi});$hdl_holder.append(jq);return jq}function insertHandle(ord){return dragDiv(ord,hdep++).css({top:px(-hhs+1),left:px(-hhs+1),opacity:options.handleOpacity}).addClass(cssClass("handle"))}function insertDragbar(ord){var s=options.handleSize,o=hhs,h=s,w=s,t=o,l=o;switch(ord){case"n":case"s":w=pct(100);break;case"e":case"w":h=pct(100);break}return dragDiv(ord,hdep++).width(w).height(h).css({top:px(-t+1),left:px(-l+1)})}function createHandles(li){for(i in li){handle[li[i]]=insertHandle(li[i])}}function moveHandles(c){var midvert=Math.round((c.h/2)-hhs),midhoriz=Math.round((c.w/2)-hhs),north=west=-hhs+1,east=c.w-hhs,south=c.h-hhs,x,y;"e" in handle&&handle.e.css({top:px(midvert),left:px(east)})&&handle.w.css({top:px(midvert)})&&handle.s.css({top:px(south),left:px(midhoriz)})&&handle.n.css({left:px(midhoriz)});"ne" in handle&&handle.ne.css({left:px(east)})&&handle.se.css({top:px(south),left:px(east)})&&handle.sw.css({top:px(south)});"b" in handle&&handle.b.css({top:px(south)})&&handle.r.css({left:px(east)})}function moveto(x,y){$img2.css({top:px(-y),left:px(-x)});$sel.css({top:px(y),left:px(x)})}function resize(w,h){$sel.width(w).height(h)}function refresh(){var c=Coords.getFixed();Coords.setPressed([c.x,c.y]);Coords.setCurrent([c.x2,c.y2]);updateVisible()}function updateVisible(){if(awake){return update()}}function update(){var c=Coords.getFixed();resize(c.w,c.h);moveto(c.x,c.y);options.drawBorders&&borders.right.css({left:px(c.w-1)})&&borders.bottom.css({top:px(c.h-1)});seehandles&&moveHandles(c);awake||show();options.onChange(unscale(c))}function show(){$sel.show();$img.css("opacity",options.bgOpacity);awake=true}function release(){disableHandles();$sel.hide();$img.css("opacity",1);awake=false}function showHandles(){if(seehandles){moveHandles(Coords.getFixed());$hdl_holder.show()}}function enableHandles(){seehandles=true;if(options.allowResize){moveHandles(Coords.getFixed());$hdl_holder.show();return true}}function disableHandles(){seehandles=false;$hdl_holder.hide()}function animMode(v){(animating=v)?disableHandles():enableHandles()}function done(){animMode(false);refresh()}var $track=newTracker().mousedown(createDragger("move")).css({cursor:"move",position:"absolute",zIndex:360});$img_holder.append($track);disableHandles();return{updateVisible:updateVisible,update:update,release:release,refresh:refresh,setCursor:function(cursor){$track.css("cursor",cursor)},enableHandles:enableHandles,enableOnly:function(){seehandles=true},showHandles:showHandles,disableHandles:disableHandles,animMode:animMode,done:done}}();var Tracker=function(){var onMove=function(){},onDone=function(){},trackDoc=options.trackDocument;if(!trackDoc){$trk.mousemove(trackMove).mouseup(trackUp).mouseout(trackUp)}function toFront(){$trk.css({zIndex:450});if(trackDoc){$(document).mousemove(trackMove).mouseup(trackUp)}}function toBack(){$trk.css({zIndex:290});if(trackDoc){$(document).unbind("mousemove",trackMove).unbind("mouseup",trackUp)}}function trackMove(e){onMove(mouseAbs(e))}function trackUp(e){e.preventDefault();e.stopPropagation();if(btndown){btndown=false;onDone(mouseAbs(e));options.onSelect(unscale(Coords.getFixed()));toBack();onMove=function(){};onDone=function(){}}return false}function activateHandlers(move,done){btndown=true;onMove=move;onDone=done;toFront();return false}function setCursor(t){$trk.css("cursor",t)}$img.before($trk);return{activateHandlers:activateHandlers,setCursor:setCursor}}();var KeyManager=function(){var $keymgr=$('<input type="radio" />').css({position:"absolute",left:"-30px"}).keypress(parseKey).blur(onBlur),$keywrap=$("<div />").css({position:"absolute",overflow:"hidden"}).append($keymgr);function watchKeys(){if(options.keySupport){$keymgr.show();$keymgr.focus()}}function onBlur(e){$keymgr.hide()}function doNudge(e,x,y){if(options.allowMove){Coords.moveOffset([x,y]);Selection.updateVisible()}e.preventDefault();e.stopPropagation()}function parseKey(e){if(e.ctrlKey){return true}shift_down=e.shiftKey?true:false;var nudge=shift_down?10:1;switch(e.keyCode){case 37:doNudge(e,-nudge,0);break;case 39:doNudge(e,nudge,0);break;case 38:doNudge(e,0,-nudge);break;case 40:doNudge(e,0,nudge);break;case 27:Selection.release();break;case 9:return true}return nothing(e)}if(options.keySupport){$keywrap.insertBefore($img)}return{watchKeys:watchKeys}}();function px(n){return""+parseInt(n)+"px"}function pct(n){return""+parseInt(n)+"%"}function cssClass(cl){return options.baseClass+"-"+cl}function getPos(obj){var pos=$(obj).offset();return[pos.left,pos.top]}function mouseAbs(e){return[(e.pageX-docOffset[0]),(e.pageY-docOffset[1])]}function myCursor(type){if(type!=lastcurs){Tracker.setCursor(type);lastcurs=type}}function startDragMode(mode,pos){docOffset=getPos($img);Tracker.setCursor(mode=="move"?mode:mode+"-resize");if(mode=="move"){return Tracker.activateHandlers(createMover(pos),doneSelect)}var fc=Coords.getFixed();var opp=oppLockCorner(mode);var opc=Coords.getCorner(oppLockCorner(opp));Coords.setPressed(Coords.getCorner(opp));Coords.setCurrent(opc);Tracker.activateHandlers(dragmodeHandler(mode,fc),doneSelect)}function dragmodeHandler(mode,f){return function(pos){if(!options.aspectRatio){switch(mode){case"e":pos[1]=f.y2;break;case"w":pos[1]=f.y2;break;case"n":pos[0]=f.x2;break;case"s":pos[0]=f.x2;break}}else{switch(mode){case"e":pos[1]=f.y+1;break;case"w":pos[1]=f.y+1;break;case"n":pos[0]=f.x+1;break;case"s":pos[0]=f.x+1;break}}Coords.setCurrent(pos);Selection.update()}}function createMover(pos){var lloc=pos;KeyManager.watchKeys();return function(pos){Coords.moveOffset([pos[0]-lloc[0],pos[1]-lloc[1]]);lloc=pos;Selection.update()}}function oppLockCorner(ord){switch(ord){case"n":return"sw";case"s":return"nw";case"e":return"nw";case"w":return"ne";case"ne":return"sw";case"nw":return"se";case"se":return"nw";case"sw":return"ne"}}function createDragger(ord){return function(e){if(options.disabled){return false}if((ord=="move")&&!options.allowMove){return false}btndown=true;startDragMode(ord,mouseAbs(e));e.stopPropagation();e.preventDefault();return false}}function presize($obj,w,h){var nw=$obj.width(),nh=$obj.height();if((nw>w)&&w>0){nw=w;nh=(w/$obj.width())*$obj.height()}if((nh>h)&&h>0){nh=h;nw=(h/$obj.height())*$obj.width()}xscale=$obj.width()/nw;yscale=$obj.height()/nh;$obj.width(nw).height(nh)}function unscale(c){return{x:parseInt(c.x*xscale),y:parseInt(c.y*yscale),x2:parseInt(c.x2*xscale),y2:parseInt(c.y2*yscale),w:parseInt(c.w*xscale),h:parseInt(c.h*yscale)}}function doneSelect(pos){var c=Coords.getFixed();if(c.w>options.minSelect[0]&&c.h>options.minSelect[1]){Selection.enableHandles();Selection.done()}else{Selection.release()}Tracker.setCursor(options.allowSelect?"crosshair":"default")}function newSelection(e){if(options.disabled){return false}if(!options.allowSelect){return false}btndown=true;docOffset=getPos($img);Selection.disableHandles();myCursor("crosshair");var pos=mouseAbs(e);Coords.setPressed(pos);Tracker.activateHandlers(selectDrag,doneSelect);KeyManager.watchKeys();Selection.update();e.stopPropagation();e.preventDefault();return false}function selectDrag(pos){Coords.setCurrent(pos);Selection.update()}function newTracker(){var trk=$("<div></div>").addClass(cssClass("tracker"));$.browser.msie&&trk.css({opacity:0,backgroundColor:"white"});return trk}function animateTo(a){var x1=a[0]/xscale,y1=a[1]/yscale,x2=a[2]/xscale,y2=a[3]/yscale;if(animating){return}var animto=Coords.flipCoords(x1,y1,x2,y2);var c=Coords.getFixed();var animat=initcr=[c.x,c.y,c.x2,c.y2];var interv=options.animationDelay;var x=animat[0];var y=animat[1];var x2=animat[2];var y2=animat[3];var ix1=animto[0]-initcr[0];var iy1=animto[1]-initcr[1];var ix2=animto[2]-initcr[2];var iy2=animto[3]-initcr[3];var pcent=0;var velocity=options.swingSpeed;Selection.animMode(true);var animator=function(){return function(){pcent+=(100-pcent)/velocity;animat[0]=x+((pcent/100)*ix1);animat[1]=y+((pcent/100)*iy1);animat[2]=x2+((pcent/100)*ix2);animat[3]=y2+((pcent/100)*iy2);if(pcent<100){animateStart()}else{Selection.done()}if(pcent>=99.8){pcent=100}setSelectRaw(animat)}}();function animateStart(){window.setTimeout(animator,interv)}animateStart()}function setSelect(rect){setSelectRaw([rect[0]/xscale,rect[1]/yscale,rect[2]/xscale,rect[3]/yscale])}function setSelectRaw(l){Coords.setPressed([l[0],l[1]]);Coords.setCurrent([l[2],l[3]]);Selection.update()}function setOptions(opt){if(typeof(opt)!="object"){opt={}}options=$.extend(options,opt);if(typeof(options.onChange)!=="function"){options.onChange=function(){}}if(typeof(options.onSelect)!=="function"){options.onSelect=function(){}}}function tellSelect(){return unscale(Coords.getFixed())}function tellScaled(){return Coords.getFixed()}function setOptionsNew(opt){setOptions(opt);interfaceUpdate()}function disableCrop(){options.disabled=true;Selection.disableHandles();Selection.setCursor("default");Tracker.setCursor("default")}function enableCrop(){options.disabled=false;interfaceUpdate()}function cancelCrop(){Selection.done();Tracker.activateHandlers(null,null)}function destroy(){$div.remove();$origimg.show()}function interfaceUpdate(alt){options.allowResize?alt?Selection.enableOnly():Selection.enableHandles():Selection.disableHandles();Tracker.setCursor(options.allowSelect?"crosshair":"default");Selection.setCursor(options.allowMove?"move":"default");$div.css("backgroundColor",options.bgColor);if("setSelect" in options){setSelect(opt.setSelect);Selection.done();delete (options.setSelect)}if("trueSize" in options){xscale=options.trueSize[0]/boundx;yscale=options.trueSize[1]/boundy}xlimit=options.maxSize[0]||0;ylimit=options.maxSize[1]||0;xmin=options.minSize[0]||0;ymin=options.minSize[1]||0;if("outerImage" in options){$img.attr("src",options.outerImage);delete (options.outerImage)}Selection.refresh()}$hdl_holder.hide();interfaceUpdate(true);var api={animateTo:animateTo,setSelect:setSelect,setOptions:setOptionsNew,tellSelect:tellSelect,tellScaled:tellScaled,disable:disableCrop,enable:enableCrop,cancel:cancelCrop,focus:KeyManager.watchKeys,getBounds:function(){return[boundx*xscale,boundy*yscale]},getWidgetSize:function(){return[boundx,boundy]},release:Selection.release,destroy:destroy};$origimg.data("Jcrop",api);return api};$.fn.Jcrop=function(options){function attachWhenDone(from){var loadsrc=options.useImg||from.src;var img=new Image();img.onload=function(){$.Jcrop(from,options)};img.src=loadsrc}if(typeof(options)!=="object"){options={}}this.each(function(){if($(this).data("Jcrop")){if(options=="api"){return $(this).data("Jcrop")}else{$(this).data("Jcrop").setOptions(options)}}else{attachWhenDone(this)}});return this}})(jQuery);
31 js/jcrop_init.js
@@ -0,0 +1,31 @@
+jQuery(function($){
+
+ // Show the preview using colorbox
+ $('a.colorbox').colorbox({
+ 'maxHeight': '100%',
+ 'photo': true,
+ 'scalePhotos': true,
+ 'scrolling': false,
+ 'opacity': 0.8,
+ 'onComplete': show_jcrop
+ });
+
+ // Function to add the height, width and position to the hidden fields
+ function show_coords(c){
+ $('#thumb_width').val(c.w);
+ $('#thumb_height').val(c.h);
+ $('#thumb_x').val(c.x);
+ $('#thumb_y').val(c.y);
+ //get the scaled image dimensions
+ $('#scaled_height').val($('#cboxLoadedContent').height());
+ };
+ function show_jcrop(){
+ $('#cboxPhoto').Jcrop({
+ onSelect: show_coords,
+ onChange: show_coords
+ });
+
+ //this shows the Options: after crop dimensions are set
+ $('.crop_options').show()
+ }
+});
98 js/manage.js
@@ -0,0 +1,98 @@
+jQuery(function($){
+
+ // generate a slug when the user types a title in
+ pyro.generate_slug('input[name="title"]', 'input[name="slug"]');
+
+ $('.images-manage ul#gallery_images_list').sortable({
+ handle: 'img',
+ start: function(event, ui) {
+ ui.helper.find('a').unbind('click').die('click');
+ },
+ update: function() {
+ order = new Array();
+ $('li', this).each(function(){
+ order.push( $(this).find('input[name="action_to[]"]').val() );
+ });
+ order = order.join(',');
+
+ $.post(SITE_URL + 'admin/galleries/ajax_update_order', { order: order });
+ }
+
+ }).disableSelection();
+
+ // edit images with ajax
+ $(document).bind('cbox_complete',function(){
+ $.colorbox.resize();
+ $('#cboxLoadedContent form').bind('submit',function(){
+ var action = $(this).attr('action');
+ if(action.search(/admin\/files\/edit/) > -1){
+ $.ajax({
+ url: action,
+ type:'POST',
+ data:$(this).serialize(),
+ success: function(data){
+ if(data.status){
+ $(window).bind('notification-closed.editfile',function(e){
+ console.log('winning!');
+ $.colorbox.resize();
+ $(window).unbind('notification-closed.editfile');
+ });
+ $('#cboxLoadedContent h2').after(data.message)
+ window.delayint = window.setInterval(function(){
+ $.colorbox.resize();
+ console.log('delay');
+ clearInterval(window.delayint);
+ },120);
+ }
+ }
+ });
+ }
+ return false;
+ })
+ })
+
+
+ // update the folder images preview when folder selection changes
+ $('select#folder_id').change(function(){
+
+ $.get(SITE_URL + 'admin/galleries/ajax_select_folder/' + $(this).val(), function(data) {
+
+ if (data) {
+ $('input[name=title]').val(data.name);
+ $('input[name=slug]').val(data.slug);
+
+ // remove images from last selection
+ $('#gallery_images_list').empty();
+ $('#gallery_thumbnail optgroup, .images-manage').remove();
+
+ if (data.images) {
+
+ $('#gallery_thumbnail').append(
+ '<optgroup label="Thumbnails">'+
+ '<option selected value="0">No Thumbnail</option>'+
+ '</optgroup>'
+ );
+
+ $.each(data.images, function(i, image){
+ $('#gallery_images_list').append(
+ '<li>' +
+ '<img src="' + SITE_URL + 'files/thumb/' + image.id + '" alt="' + image.name + '" title="Title: ' + image.name + ' -- Caption: ' + image.description + '"' +
+ '</li>'
+ );
+
+ $('#gallery_thumbnail optgroup[label="Thumbnails"]').append(
+ '<option value="' + image.id + '">' + image.name + '</option>'
+ );
+ });
+ $('.images-placeholder').slideDown();
+ }
+ }
+ else {
+ $('input[name=title]').val('');
+ $('input[name=slug]').val('');
+ $('.images-placeholder').hide();
+ }
+
+ }, 'json');
+ });
+});
58 language/arabic/galleries_lang.php
@@ -0,0 +1,58 @@
+<?php
+// Success notifications
+$lang['galleries.create_success'] = 'تم إنشاء معرض الصّور بنجاح.';
+$lang['galleries.update_success'] = 'تم تحديث معرض الصّور بنجاح.';
+$lang['galleries.delete_success'] = 'تم حذف جميع معارض الصّور بنجاح.';
+$lang['galleries.install_success'] = 'تم تثبيت الوحدة بنجاح.';
+
+// Error notifications
+$lang['galleries.create_error'] = 'تعذّر إنشاء معرض الصّور.';
+$lang['galleries.exists_error'] = 'معرض الصّور المُحدّد غير موجود.';
+$lang['galleries.update_error'] = 'تعذّر تحديث معرض الصّور.';
+$lang['galleries.id_error'] = 'لم يُحدّد أي رقم مُعرّف.';
+$lang['galleries.folder_error'] = 'تعذّر حذف مجلّدات معرض الصّور "%s".';
+$lang['galleries.delete_error'] = 'تعذّر حذف معرض الصّوَر "%s".';
+$lang['galleries.no_galleries_error'] = 'لم يُنشأ أي معرض صُوَر بعد.';
+$lang['galleries.install_error'] = 'تعذّر تثبيت الوحدة.';
+$lang['galleries.already_exist_error'] = 'هناك معرض صور له العنوان "%s".';
+$lang['galleries.folder_duplicated_error'] = 'حدث خطأ! المُجلّد ينتمي لمعرض الصّور.';
+$lang['galleries.no_gallery_description'] = 'لم يضاف أي وصف بعد.';
+
+// Labels
+$lang['galleries.galleries_label'] = 'معارض الصّور';
+$lang['galleries.manage_gallery_label'] = 'إدارة معرض الصّور';
+
+$lang['galleries.gallery_label'] = 'الألبوم';
+$lang['galleries.num_photos_label'] = 'عدد الصّور';
+$lang['galleries.updated_label'] = 'آخر تحديث';
+$lang['galleries.view_label'] = 'عرض';
+$lang['galleries.manage_label'] = 'إدارة';
+$lang['galleries.comments_enabled_label'] = 'نعم';
+$lang['galleries.comments_disabled_label'] = 'لا';
+$lang['galleries.published_yes_label'] = 'نعم';
+$lang['galleries.published_no_label'] = 'لا';
+$lang['galleries.css_label'] = 'CSS';
+$lang['galleries.js_label'] = 'جافاسكربت';
+
+// General labels $lang['galleries.preview_label'] = 'Folder Images Preview'; $lang['galleries.no_thumb_label'] = 'No Thumbnail';
+$lang['galleries.title_label'] = 'العنوان';
+$lang['galleries.slug_label'] = 'مُختصر الرابط';
+$lang['galleries.folder_label'] = 'مجلد';
+$lang['galleries.description_label'] = 'وصْف الألبوم';
+$lang['galleries.thumbnail_label'] = 'مُصغّر';
+$lang['galleries.comments_label'] = 'تمكين التعليقات';
+$lang['galleries.published_label'] = 'منشور';
+$lang['galleries.current_label'] = 'الصّوَر الحاليّة (حرك الصّور لإعادة ترتيبها، واضغط على أي صورة لتعديلها).';
+
+// Sidebar labels
+$lang['galleries.list_label'] = 'سرْد معارض الصّور';
+$lang['galleries.new_gallery_label'] = 'إنشاء معرض صوَر جديد';
+$lang['galleries.upload_label'] = 'رفع صورة';
+
+// Frontend labels
+$lang['galleries.sub-galleries_label'] = 'معارض الصّور الفرعيّة';
+
+// tabs
+$lang['galleries.content_label'] = 'مُحتوى معرض الصّور';
+$lang['galleries.design_label'] = 'التصميم';
+$lang['galleries.script_label'] = 'النص البرمجي';
26 language/arabic/gallery_images_lang.php
@@ -0,0 +1,26 @@
+<?php
+// Success messages
+$lang['gallery_images.upload_success'] = 'تم رفع الصّورة بنجاح.';
+$lang['gallery_images.delete_success'] = 'تم حذف الصورة.';
+$lang['gallery_images.changes_success'] = 'تم حفظ التغييرات.';
+
+// Errors
+$lang['gallery_images.upload_error'] = 'تعذّر رفع الصّورة.';
+$lang['gallery_images.exists_error'] = 'الصّورة المُحدّدة غير موجودة.';
+$lang['gallery_images.delete_error'] = 'تعذّر حفظ الصّورة.';
+$lang['gallery_images.changes_error'] = 'تعذّر حفظ التغييرات.';
+
+// Labels
+$lang['gallery_images.upload_label'] = 'تحميل صورة';
+$lang['gallery_images.edit_image_label'] = 'تعديل الصّورة';
+$lang['gallery_images.thumbnail_label'] = 'مُصغّر';
+$lang['gallery_images.crop_label'] = 'قصّ الصّورة';
+$lang['gallery_images.recreate_label'] = 'إعادة إنشاء المُصغّر';
+$lang['gallery_images.title_label'] = 'العنوان';
+$lang['gallery_images.image_label'] = 'الصّورة';
+$lang['gallery_images.description_label'] = 'التعليق';
+$lang['gallery_images.gallery_label'] = 'مَعرض الصّور';
+$lang['gallery_images.no_images_label'] = 'لم تُضف أي صُوَر بعد';
+$lang['gallery_images.ratio_label'] = 'المحافظة على نسبة القياس';
+$lang['gallery_images.options_label'] = 'خيارات:';
+$lang['gallery_images.crop.save_label'] = 'اضغط زر الحفظ لتطبيق القصّ';
58 language/brazilian/galleries_lang.php
@@ -0,0 +1,58 @@
+<?php
+// Success notifications
+$lang['galleries.create_success'] = 'A galeria foi adicionada com sucesso.';
+$lang['galleries.update_success'] = 'A galeria foi atualizada com sucesso.';
+$lang['galleries.delete_success'] = 'Todas as galerias foram removidas com êxito.';
+$lang['galleries.install_success'] = 'O módulo de galerias foi instalado com sucesso.';
+
+// Error notifications
+$lang['galleries.create_error'] = 'Ocorreu um erro ao tentar adicionar a galeria.';
+$lang['galleries.exists_error'] = 'A galeria especificada não foi encontrada.';
+$lang['galleries.update_error'] = 'Ocorreu um erro ao tentar atualizar esta galeria.';
+$lang['galleries.id_error'] = 'Você deve selecionar uma ou mais galerias antes de realizar esta ação.';
+$lang['galleries.folder_error'] = 'O diretório da galeria "%s" não pode ser removido, verifique se tem permissões no diretório.';
+$lang['galleries.delete_error'] = 'Ocorreu um erro ao tentar remover a galeria "%s".';
+$lang['galleries.no_galleries_error'] = 'Nenhuma galeria foi adicionada ainda.';
+$lang['galleries.install_error'] = 'O módulo de galerias não pode ser instalado.';
+$lang['galleries.already_exist_error'] = 'Já existe uma galeria com o mesmo apelido "%s".';
+$lang['galleries.folder_duplicated_error'] = 'Ocorreu um erro! A pasta já pertence a uma galeria.';
+$lang['galleries.no_gallery_description'] = 'Sem descrição.';
+
+// Labels
+$lang['galleries.galleries_label'] = 'Galerias';
+$lang['galleries.manage_gallery_label'] = 'Gerenciando a galeria "%s"';
+
+$lang['galleries.gallery_label'] = 'Galeria';
+$lang['galleries.num_photos_label'] = 'Número de fotos';
+$lang['galleries.updated_label'] = 'Última atualização';
+$lang['galleries.view_label'] = 'Ver';
+$lang['galleries.manage_label'] = 'Gerenciar';
+$lang['galleries.comments_enabled_label'] = 'Sim';
+$lang['galleries.comments_disabled_label'] = 'Não';
+$lang['galleries.published_yes_label'] = 'Sim';
+$lang['galleries.published_no_label'] = 'Não';
+$lang['galleries.css_label'] = 'CSS';
+$lang['galleries.js_label'] = 'JavaScript';
+
+// General labels $lang['galleries.preview_label'] = 'Folder Images Preview'; $lang['galleries.no_thumb_label'] = 'No Thumbnail';
+$lang['galleries.title_label'] = 'Título';
+$lang['galleries.slug_label'] = 'Apelido';
+$lang['galleries.folder_label'] = 'Pasta';
+$lang['galleries.description_label'] = 'Descrição do álbum';
+$lang['galleries.thumbnail_label'] = 'Miniatura';
+$lang['galleries.comments_label'] = 'Ativar comentários';
+$lang['galleries.published_label'] = 'Publicada';
+$lang['galleries.current_label'] = 'Imagens atuais (arraste e solte para organizar, clique para editar)';
+
+// Sidebar labels
+$lang['galleries.list_label'] = 'Listar galerias';
+$lang['galleries.new_gallery_label'] = 'Adicionar galeria';
+$lang['galleries.upload_label'] = 'Enviar imagens';
+
+// Frontend labels
+$lang['galleries.sub-galleries_label'] = 'Subgalerias';
+
+// tabs
+$lang['galleries.content_label'] = 'Conteúdo da galeria';
+$lang['galleries.design_label'] = 'Design';
+$lang['galleries.script_label'] = 'Script';
26 language/brazilian/gallery_images_lang.php
@@ -0,0 +1,26 @@
+<?php
+// Success messages
+$lang['gallery_images.upload_success'] = 'A imagem foi enviada com sucesso.';
+$lang['gallery_images.delete_success'] = 'A imagem foi removida com sucesso.';
+$lang['gallery_images.changes_success'] = 'As alterações foram salvas com sucesso.';
+
+// Errors
+$lang['gallery_images.upload_error'] = 'A imagem não pode ser envida.';
+$lang['gallery_images.exists_error'] = 'A imagem especificada não existe.';
+$lang['gallery_images.delete_error'] = 'A imagem não pode ser removida.';
+$lang['gallery_images.changes_error'] = 'As alterações não foram salvas.';
+
+// Labels
+$lang['gallery_images.upload_label'] = 'Enviar imagem';
+$lang['gallery_images.edit_image_label'] = 'Editar imagem';
+$lang['gallery_images.thumbnail_label'] = 'Miniatura';
+$lang['gallery_images.crop_label'] = 'Cortar imagem';
+$lang['gallery_images.recreate_label'] = 'Recriar miniatura';
+$lang['gallery_images.title_label'] = 'Título';
+$lang['gallery_images.image_label'] = 'Imagem';
+$lang['gallery_images.description_label'] = 'Legenda';
+$lang['gallery_images.gallery_label'] = 'Galeria';
+$lang['gallery_images.no_images_label'] = 'Nenhuma imagem foi adicionada ainda';
+$lang['gallery_images.ratio_label'] = 'Manter proporção';
+$lang['gallery_images.options_label'] = 'Opções:';
+$lang['gallery_images.crop.save_label'] = 'Clique em salvar par aplicar o corte';
58 language/chinese_traditional/galleries_lang.php
@@ -0,0 +1,58 @@
+<?php
+// Success notifications
+$lang['galleries.create_success'] = '畫本已建立成功';
+$lang['galleries.update_success'] = '畫本已更新成功';
+$lang['galleries.delete_success'] = '所有畫本都已經成功刪除';
+$lang['galleries.install_success'] = '模組已經成功安裝';
+
+// Error notifications
+$lang['galleries.create_error'] = '畫本無法建立';
+$lang['galleries.exists_error'] = '指定的畫本不存在';
+$lang['galleries.update_error'] = '畫本無法更新';
+$lang['galleries.id_error'] = '沒有指定 ID 編號';
+$lang['galleries.folder_error'] = '"%s" 這個畫本目錄無法被刪除。';
+$lang['galleries.delete_error'] = '"%s" 這個畫本無法被刪除';
+$lang['galleries.no_galleries_error'] = '尚未建立任何的畫本';
+$lang['galleries.install_error'] = '模組無法安裝';
+$lang['galleries.already_exist_error'] = '一個縮略名同樣是 "%s" 的相本已經存在。';
+$lang['galleries.folder_duplicated_error'] = '發生錯誤了! 這個目錄已經屬於某個畫本。';
+$lang['galleries.no_gallery_description'] = '尚未加入說明。';
+
+// Labels
+$lang['galleries.galleries_label'] = '畫廊';
+$lang['galleries.manage_gallery_label'] = '管理畫本';
+
+$lang['galleries.gallery_label'] = '畫本';
+$lang['galleries.num_photos_label'] = '圖片數量';
+$lang['galleries.updated_label'] = '最後更新';
+$lang['galleries.view_label'] = '查看';
+$lang['galleries.manage_label'] = '管理';
+$lang['galleries.comments_enabled_label'] = '';
+$lang['galleries.comments_disabled_label'] = '';
+$lang['galleries.published_yes_label'] = '';
+$lang['galleries.published_no_label'] = '';
+$lang['galleries.css_label'] = 'CSS';
+$lang['galleries.js_label'] = 'JavaScript';
+
+// General labels $lang['galleries.preview_label'] = 'Folder Images Preview'; $lang['galleries.no_thumb_label'] = 'No Thumbnail';
+$lang['galleries.title_label'] = '標題';
+$lang['galleries.slug_label'] = '縮略名(Slug)';
+$lang['galleries.folder_label'] = '目錄';
+$lang['galleries.description_label'] = '相本說明';
+$lang['galleries.thumbnail_label'] = '縮圖';
+$lang['galleries.comments_label'] = '開啟回應';
+$lang['galleries.published_label'] = '已發佈';
+$lang['galleries.current_label'] = '目前圖片 (使用拖放排序,點選編輯)';
+
+// Sidebar labels
+$lang['galleries.list_label'] = '畫本列表';
+$lang['galleries.new_gallery_label'] = '新增畫本';
+$lang['galleries.upload_label'] = '上傳圖片';
+
+// Frontend labels
+$lang['galleries.sub-galleries_label'] = '子畫本';
+
+// tabs
+$lang['galleries.content_label'] = '畫本內容';
+$lang['galleries.design_label'] = '設計';
+$lang['galleries.script_label'] = '程式';
26 language/chinese_traditional/gallery_images_lang.php
@@ -0,0 +1,26 @@
+<?php
+// Success messages
+$lang['gallery_images.upload_success'] = '圖片已成功上傳';
+$lang['gallery_images.delete_success'] = '圖片已成功刪除';
+$lang['gallery_images.changes_success'] = '更新已儲存';
+
+// Errors
+$lang['gallery_images.upload_error'] = '圖片無法上傳';
+$lang['gallery_images.exists_error'] = '指定的圖片不存在';
+$lang['gallery_images.delete_error'] = '圖片無法刪除';
+$lang['gallery_images.changes_error'] = '更新無法儲存';
+
+// Labels
+$lang['gallery_images.upload_label'] = '上傳圖片';
+$lang['gallery_images.edit_image_label'] = '編輯圖片';
+$lang['gallery_images.thumbnail_label'] = '縮圖';
+$lang['gallery_images.crop_label'] = '裁切圖片';
+$lang['gallery_images.recreate_label'] = '重新產生縮圖';
+$lang['gallery_images.title_label'] = '標題';
+$lang['gallery_images.image_label'] = '圖片';
+$lang['gallery_images.description_label'] = '說明';
+$lang['gallery_images.gallery_label'] = '畫廊';
+$lang['gallery_images.no_images_label'] = '尚未加入任何圖片';
+$lang['gallery_images.ratio_label'] = '維持比率';
+$lang['gallery_images.options_label'] = '選項:';
+$lang['gallery_images.crop.save_label'] = '點選儲存以裁切';
60 language/czech/galleries_lang.php
@@ -0,0 +1,60 @@
+<?php
+// Success notifications
+$lang['galleries.create_success'] = 'Galerie byla vytvořena.';
+$lang['galleries.update_success'] = 'Galerie byla aktualizována.';
+$lang['galleries.delete_success'] = 'Všechny vybrané galerie byly vymazány.';
+$lang['galleries.install_success'] = 'Modul byl nainstalován.';
+
+// Error notifications
+$lang['galleries.create_error'] = 'Galerii se nepodařilo vytvořit.';
+$lang['galleries.exists_error'] = 'Daná galerie neexistuje.';
+$lang['galleries.update_error'] = 'Galerii se nepodařilo aktualizovat.';
+$lang['galleries.id_error'] = 'Nebyly specifikovány žádná ID.';
+$lang['galleries.folder_error'] = 'Složky galerie "%s" se nepodařilo vymazat.';
+$lang['galleries.delete_error'] = 'Galerii "%s" se nepodařilo vymazat.';
+$lang['galleries.no_galleries_error'] = 'Žádné galerie zatím nebyly vytvořeny.';
+$lang['galleries.install_error'] = 'Modul se nepodařilo nainstalovat.';
+$lang['galleries.already_exist_error'] = 'Galerie s adresou v URL "%s" již existuje.';
+$lang['galleries.folder_duplicated_error'] = 'Objevila se chyba! Složka již patří do galerie.';
+$lang['galleries.no_gallery_description'] = 'Ještě nebyl přidán žádný podpis.';
+
+// Labels
+$lang['galleries.galleries_label'] = 'Galerie';
+$lang['galleries.manage_gallery_label'] = 'Spravovat galerie';
+
+$lang['galleries.gallery_label'] = 'Album';
+$lang['galleries.num_photos_label'] = 'Počet obrázků';
+$lang['galleries.updated_label'] = 'Poslední úpravy';
+$lang['galleries.view_label'] = 'Zobrazit';
+$lang['galleries.manage_label'] = 'Spravovat';
+$lang['galleries.comments_enabled_label'] = 'Ano';
+$lang['galleries.comments_disabled_label'] = 'Ne';
+$lang['galleries.published_yes_label'] = 'Ano';
+$lang['galleries.published_no_label'] = 'Ne';
+$lang['galleries.css_label'] = 'CSS';
+$lang['galleries.js_label'] = 'JavaScript';
+
+// General labels
+$lang['galleries.preview_label'] = 'Náhled obrázků složky';
+$lang['galleries.no_thumb_label'] = 'Bez náhledu';
+$lang['galleries.title_label'] = 'Titulek';
+$lang['galleries.slug_label'] = 'Adresa v URL';
+$lang['galleries.folder_label'] = 'Složka';
+$lang['galleries.description_label'] = 'Popis alba';
+$lang['galleries.thumbnail_label'] = 'Náhled';
+$lang['galleries.comments_label'] = 'Povolit komentáře';
+$lang['galleries.published_label'] = 'Publikováno';
+$lang['galleries.current_label'] = 'Současné obrázky (řazení přetahováním myší, klikněte na obrázek pro úpravy)';
+
+// Sidebar labels
+$lang['galleries.list_label'] = 'Seznam galerií';
+$lang['galleries.new_gallery_label'] = 'Vytvořit galerii';
+$lang['galleries.upload_label'] = 'Nahrát obrázek';
+
+// Frontend labels
+$lang['galleries.sub-galleries_label'] = 'Podgalerie';
+
+// tabs
+$lang['galleries.content_label'] = 'Obsah galerie'; #translate
+$lang['galleries.design_label'] = 'Design'; #translate
+$lang['galleries.script_label'] = 'Skript'; #translate
26 language/czech/gallery_images_lang.php
@@ -0,0 +1,26 @@
+<?php
+// Success messages
+$lang['gallery_images.upload_success'] = 'Obrázek byl úspěšně nahrán.';
+$lang['gallery_images.delete_success'] = 'Obrázek byl vymazán.';
+$lang['gallery_images.changes_success'] = 'Změny byly uloženy.';
+
+// Errors
+$lang['gallery_images.upload_error'] = 'Obrázek nemohl být nahrán.';
+$lang['gallery_images.exists_error'] = 'Daný obrázek neexistuje.';
+$lang['gallery_images.delete_error'] = 'Obrázek nemohl být vymazán.';
+$lang['gallery_images.changes_error'] = 'Změny se nepodařilo uložit.';
+
+// Labels
+$lang['gallery_images.upload_label'] = 'Nahrát obrázek';
+$lang['gallery_images.edit_image_label'] = 'Upravit obrázek';
+$lang['gallery_images.thumbnail_label'] = 'Náhled';
+$lang['gallery_images.crop_label'] = 'Oříznout obrázek';
+$lang['gallery_images.recreate_label'] = 'Znovu vytvořit náhled';
+$lang['gallery_images.title_label'] = 'Titulek';
+$lang['gallery_images.image_label'] = 'Obrázek';
+$lang['gallery_images.description_label'] = 'Popisek';
+$lang['gallery_images.gallery_label'] = 'Galerie';
+$lang['gallery_images.no_images_label'] = 'Žádné obrázky zatím nebyly přidány';
+$lang['gallery_images.ratio_label'] = 'Dodržet poměr stran';
+$lang['gallery_images.options_label'] = 'Možnosti:';
+$lang['gallery_images.crop.save_label'] = 'Klikněte na Uložit pro oříznutí obrázku';
58 language/dutch/galleries_lang.php
@@ -0,0 +1,58 @@
+<?php
+// Success notifications
+$lang['galleries.create_success'] = 'De gallerij is aangemaakt.';
+$lang['galleries.update_success'] = 'De gallerij is gewijzigd.';
+$lang['galleries.delete_success'] = 'Alle gallerijen zijn verwijderd.';
+$lang['galleries.install_success'] = 'De module is geinstalleerd.';
+
+// Error notifications
+$lang['galleries.create_error'] = 'De gallerij kon niet worden aangemaakt.';
+$lang['galleries.exists_error'] = 'De opgegeven gallerij bestaat niet.';
+$lang['galleries.update_error'] = 'De gallerij kon niet worden gewijzigd.';
+$lang['galleries.id_error'] = 'Er zijn geen IDs opgegeven.';
+$lang['galleries.folder_error'] = 'De "%s" gallerij folders konden niet worden verwijderd.';
+$lang['galleries.delete_error'] = 'De "%s" kon niet worden verwijderd.';
+$lang['galleries.no_galleries_error'] = 'Er zijn geen gallerijen.';
+$lang['galleries.install_error'] = 'De module kon niet worden geinstalleerd.';
+$lang['galleries.already_exist_error'] = 'Een gallerij met de URL "%s" bestaat al.';
+$lang['galleries.folder_duplicated_error'] = 'Er is een fout opgetreden! De map behoort al tot een galerij.';
+$lang['galleries.no_gallery_description'] = 'Er is nog geen omschrijving aanwezig.';
+
+// Labels
+$lang['galleries.galleries_label'] = 'Gallerijen';
+$lang['galleries.manage_gallery_label'] = 'Beheer gallerij';
+
+$lang['galleries.gallery_label'] = 'Album';
+$lang['galleries.num_photos_label'] = 'Aantal Foto&apos;s';
+$lang['galleries.updated_label'] = 'Laatste Update';
+$lang['galleries.view_label'] = 'Bekijk';
+$lang['galleries.manage_label'] = 'Beheer';
+$lang['galleries.comments_enabled_label'] = 'Ja';
+$lang['galleries.comments_disabled_label'] = 'Nee';
+$lang['galleries.published_yes_label'] = 'Ja';
+$lang['galleries.published_no_label'] = 'Nee';
+$lang['galleries.css_label'] = 'CSS';
+$lang['galleries.js_label'] = 'JavaScript';
+
+// General labels $lang['galleries.preview_label'] = 'Folder Images Preview'; $lang['galleries.no_thumb_label'] = 'No Thumbnail';
+$lang['galleries.title_label'] = 'Titel';
+$lang['galleries.slug_label'] = 'Sitenaam (URI)';
+$lang['galleries.folder_label'] = 'Map';
+$lang['galleries.description_label'] = 'Album Beschrijving';
+$lang['galleries.thumbnail_label'] = 'Miniatuur';
+$lang['galleries.comments_label'] = 'Activeer Reacties';
+$lang['galleries.published_label'] = 'Gepubliceerd';
+$lang['galleries.current_label'] = 'Huidige Afbeeldingen (sleep om te sorteren, klik om te wijzigen)';
+
+// Sidebar labels
+$lang['galleries.list_label'] = 'Overzicht gallerijen';
+$lang['galleries.new_gallery_label'] = 'Maak een nieuwe gallerij';
+$lang['galleries.upload_label'] = 'Upload Afbeelding';
+
+// Frontend labels
+$lang['galleries.sub-galleries_label'] = 'Sub Gallerijen';
+
+// tabs
+$lang['galleries.content_label'] = 'Gallerij inhoud';
+$lang['galleries.design_label'] = 'Ontwerp';
+$lang['galleries.script_label'] = 'Script';
26 language/dutch/gallery_images_lang.php
@@ -0,0 +1,26 @@
+<?php
+// Success messages
+$lang['gallery_images.upload_success'] = 'De afbeelding is geupload.';
+$lang['gallery_images.delete_success'] = 'De afbeelding is verwijderdd.';
+$lang['gallery_images.changes_success'] = 'De wijzigingen zijn opgeslagen.';
+
+// Errors
+$lang['gallery_images.upload_error'] = 'De afbeelding kon niet worden geupload.';
+$lang['gallery_images.exists_error'] = 'De opgegeven afbeelding bestaat niet.';
+$lang['gallery_images.delete_error'] = 'De afbeelding kon niet worden verwijderd.';
+$lang['gallery_images.changes_error'] = 'De veranderingen konden niet worden bewaard.';
+
+// Labels
+$lang['gallery_images.upload_label'] = 'Upload Afbeelding';
+$lang['gallery_images.edit_image_label'] = 'Wijzig Afbeelding';
+$lang['gallery_images.thumbnail_label'] = 'Miniatuur';
+$lang['gallery_images.crop_label'] = 'Snijd Afbeelding';
+$lang['gallery_images.recreate_label'] = 'Hercre&euml;er thumbnail';
+$lang['gallery_images.title_label'] = 'Titel';
+$lang['gallery_images.image_label'] = 'Afbeelding';
+$lang['gallery_images.description_label'] = 'Onderschrift';
+$lang['gallery_images.gallery_label'] = 'Gallerij';
+$lang['gallery_images.no_images_label'] = 'Er zijn nog geen afbeeldingen toegevoegd.';
+$lang['gallery_images.ratio_label'] = 'Behoud verhoudingen';
+$lang['gallery_images.options_label'] = 'Opties:';
+$lang['gallery_images.crop.save_label'] = 'Klik Opslaan om de snijactie door te voeren.';
60 language/english/galleries_lang.php
@@ -0,0 +1,60 @@
+<?php
+// Success notifications
+$lang['galleries.create_success'] = 'The gallery has been created successfully.';
+$lang['galleries.update_success'] = 'The gallery has been successfully updated.';
+$lang['galleries.delete_success'] = 'All galleries have been deleted successfully.';
+$lang['galleries.install_success'] = 'The module has been installed successfully.';
+
+// Error notifications
+$lang['galleries.create_error'] = 'The gallery could not be created.';
+$lang['galleries.exists_error'] = 'The specified gallery does not exist.';
+$lang['galleries.update_error'] = 'The gallery could not be updated.';
+$lang['galleries.id_error'] = 'No IDs have been specified.';
+$lang['galleries.folder_error'] = 'The "%s" gallery folders could not be deleted.';
+$lang['galleries.delete_error'] = 'The "%s" gallery could not be deleted.';
+$lang['galleries.no_galleries_error'] = 'No galleries have been created yet.';
+$lang['galleries.install_error'] = 'The module could not be installed.';
+$lang['galleries.already_exist_error'] = 'A gallery with the slug "%s" already exist.';
+$lang['galleries.folder_duplicated_error'] = 'An error occurred! The folder already belongs to a gallery.';
+$lang['galleries.no_gallery_description'] = 'No description has been added yet.';
+
+// Labels
+$lang['galleries.galleries_label'] = 'Galleries';
+$lang['galleries.manage_gallery_label'] = 'Manage Gallery';
+
+$lang['galleries.gallery_label'] = 'Gallery';
+$lang['galleries.num_photos_label'] = 'Number of Photos';
+$lang['galleries.updated_label'] = 'Last Updated';
+$lang['galleries.view_label'] = 'View';
+$lang['galleries.manage_label'] = 'Manage';
+$lang['galleries.comments_enabled_label'] = 'Yes';
+$lang['galleries.comments_disabled_label'] = 'No';
+$lang['galleries.published_yes_label'] = 'Yes';
+$lang['galleries.published_no_label'] = 'No';
+$lang['galleries.css_label'] = 'CSS';
+$lang['galleries.js_label'] = 'JavaScript';
+
+// General labels
+$lang['galleries.preview_label'] = 'Folder Images Preview';
+$lang['galleries.no_thumb_label'] = 'No Thumbnail';
+$lang['galleries.title_label'] = 'Title';
+$lang['galleries.slug_label'] = 'Slug';
+$lang['galleries.folder_label'] = 'Folder';
+$lang['galleries.description_label'] = 'Album Description';
+$lang['galleries.thumbnail_label'] = 'Thumbnail';
+$lang['galleries.comments_label'] = 'Enable Comments';
+$lang['galleries.published_label'] = 'Published';
+$lang['galleries.current_label'] = 'Current Images (drag and drop to sort, click to edit)';
+
+// Sidebar labels
+$lang['galleries.list_label'] = 'List Galleries';
+$lang['galleries.new_gallery_label'] = 'Add Gallery';
+$lang['galleries.upload_label'] = 'Upload Image';
+
+// Frontend labels
+$lang['galleries.sub-galleries_label'] = 'Sub Galleries';
+
+// tabs
+$lang['galleries.content_label'] = 'Gallery content';
+$lang['galleries.design_label'] = 'Design';
+$lang['galleries.script_label'] = 'Script';
26 language/english/gallery_images_lang.php
@@ -0,0 +1,26 @@
+<?php
+// Success messages
+$lang['gallery_images.upload_success'] = 'The image has been uploaded successfully.';
+$lang['gallery_images.delete_success'] = 'The image has been deleted.';
+$lang['gallery_images.changes_success'] = 'The changes have been saved.';
+
+// Errors
+$lang['gallery_images.upload_error'] = 'The image could not be uploaded.';
+$lang['gallery_images.exists_error'] = 'The specified image does not exist.';
+$lang['gallery_images.delete_error'] = 'The image could not be deleted.';
+$lang['gallery_images.changes_error'] = 'The changes could not be saved.';
+
+// Labels
+$lang['gallery_images.upload_label'] = 'Upload Image';
+$lang['gallery_images.edit_image_label'] = 'Edit Image';
+$lang['gallery_images.thumbnail_label'] = 'Thumbnail';
+$lang['gallery_images.crop_label'] = 'Crop Image';
+$lang['gallery_images.recreate_label'] = 'Recreate thumbnail';
+$lang['gallery_images.title_label'] = 'Title';
+$lang['gallery_images.image_label'] = 'Image';
+$lang['gallery_images.description_label'] = 'Caption';
+$lang['gallery_images.gallery_label'] = 'Gallery';
+$lang['gallery_images.no_images_label'] = 'No images have been added yet';
+$lang['gallery_images.ratio_label'] = 'Maintain Ratio';
+$lang['gallery_images.options_label'] = 'Options:';
+$lang['gallery_images.crop.save_label'] = 'Click Save to apply the crop';
68 language/finnish/galleries_lang.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * Finnish translation.
+ *
+ * @author Mikael Kundert <mikael@kundert.fi>
+ * @date 09.02.2011
+ * @version 1.0.3
+ */
+
+// Success notifications
+$lang['galleries.create_success'] = 'Galleria luotiin onnistuneesti.';
+$lang['galleries.update_success'] = 'Galleria päivitettii onnistuneesti.';
+$lang['galleries.delete_success'] = 'Kaikki galleriat poistettiin onnistuneesti.';
+$lang['galleries.install_success'] = 'Moduuli asennettiin onnistuneesti.';
+
+// Error notifications
+$lang['galleries.create_error'] = 'Galleriaa ei voitu luoda.';
+$lang['galleries.exists_error'] = 'Valittua galleriaa ei löydy.';
+$lang['galleries.update_error'] = 'Galleriaa ei voitu päivittää.';
+$lang['galleries.id_error'] = 'Yhtään ID:tä ei ole määritelty.';
+$lang['galleries.folder_error'] = 'Gallerian "%s" kansioita ei voitu poistaa.';
+$lang['galleries.delete_error'] = 'Galleriaa "%s" ei voitu poistaa.';
+$lang['galleries.no_galleries_error'] = 'Yhtään galleiaa ei ole luotu vielä.';
+$lang['galleries.install_error'] = 'Moduulia ei voitu asentaa.';
+$lang['galleries.already_exist_error'] = 'Galleria polkutunnuksella "%s" on jo olemassa.';
+$lang['galleries.folder_duplicated_error'] = 'Virhe on tapahtunut! Kansio kuuluu jo gallerialle.';
+$lang['galleries.no_gallery_description'] = 'Kuvausta ei ole vielä lisätty.';
+
+// Labels
+$lang['galleries.galleries_label'] = 'Galleriat';
+$lang['galleries.manage_gallery_label'] = 'Hallitse galleriaa';
+
+$lang['galleries.gallery_label'] = 'Albumi';
+$lang['galleries.num_photos_label'] = 'Kuvia';
+$lang['galleries.updated_label'] = 'Viimeksi päivitetty';
+$lang['galleries.view_label'] = 'Katso';
+$lang['galleries.manage_label'] = 'Hallitse';
+$lang['galleries.comments_enabled_label'] = 'Kyllä';
+$lang['galleries.comments_disabled_label'] = 'Ei';
+$lang['galleries.published_yes_label'] = 'Kyllä';
+$lang['galleries.published_no_label'] = 'Ei';
+$lang['galleries.css_label'] = 'CSS';
+$lang['galleries.js_label'] = 'JavaScript';
+
+// General labels $lang['galleries.preview_label'] = 'Folder Images Preview'; $lang['galleries.no_thumb_label'] = 'No Thumbnail';
+$lang['galleries.title_label'] = 'Otsikko';
+$lang['galleries.slug_label'] = 'Polkutunnus';
+$lang['galleries.parent_label'] = 'Yläkohta';
+$lang['galleries.none_label'] = '-- Ei mikään --';
+$lang['galleries.description_label'] = 'Albumin kuvaus';
+$lang['galleries.thumbnail_label'] = 'Esikatselu';
+$lang['galleries.comments_label'] = 'Kommentit päälle';
+$lang['galleries.published_label'] = 'Julkaistu';
+$lang['galleries.current_label'] = 'Nykyiset kuvat (raahaa järjestelläksesi, klikkaa muokataksesi)';
+
+// Sidebar labels
+$lang['galleries.list_label'] = 'Listaa galleriat';
+$lang['galleries.new_gallery_label'] = 'Luo uusi galleria';
+$lang['galleries.upload_label'] = 'Lisää kuva';
+
+// Frontend labels
+$lang['galleries.sub-galleries_label'] = 'Ala galleriat';
+
+// tabs
+$lang['galleries.content_label'] = 'Gallerian sisältö';
+$lang['galleries.design_label'] = 'Design';
+$lang['galleries.script_label'] = 'Script';
+?>
34 language/finnish/gallery_images_lang.php
@@ -0,0 +1,34 @@
+<?php
+/**
+ * Finnish translation.
+ *
+ * @author Mikael Kundert <mikael@kundert.fi>
+ * @date 09.02.2011
+ * @version 1.0.3
+ */
+
+// Success messages
+$lang['gallery_images.upload_success'] = 'Kuva lisättiin onnistuneesti.';
+$lang['gallery_images.delete_success'] = 'Kuva poistettiin.';
+$lang['gallery_images.changes_success'] = 'Muutokset tallennettiin.';
+
+// Errors
+$lang['gallery_images.upload_error'] = 'Kuvaa ei voitu lisätä.';
+$lang['gallery_images.exists_error'] = 'Valittua kuvaa ei löydy.';
+$lang['gallery_images.delete_error'] = 'Kuvaa ei voitu poistaa.';
+$lang['gallery_images.changes_error'] = 'Muutoksia ei voitu tallentaa.';
+
+// Labels
+$lang['gallery_images.upload_label'] = 'Lisää kuva';
+$lang['gallery_images.edit_image_label'] = 'Muokkaa kuvaa';
+$lang['gallery_images.thumbnail_label'] = 'Esikatselu';
+$lang['gallery_images.crop_label'] = 'Rajaa kuva';
+$lang['gallery_images.recreate_label'] = 'Luo esikatselu kuva uudelleen';
+$lang['gallery_images.title_label'] = 'Otsikko';
+$lang['gallery_images.image_label'] = 'Kuva';
+$lang['gallery_images.description_label'] = 'Kuvateksti';
+$lang['gallery_images.gallery_label'] = 'Galleria';
+$lang['gallery_images.no_images_label'] = 'Kuvia ei vielä ole lisätty';
+$lang['gallery_images.ratio_label'] = 'Säilytä kuvasuhde';
+$lang['gallery_images.options_label'] = 'Asetukset:';
+$lang['gallery_images.crop.save_label'] = 'Tallenna rajaus';
58 language/french/galleries_lang.php
@@ -0,0 +1,58 @@
+<?php
+// Success notifications
+$lang['galleries.create_success'] = 'La galerie a été créée avec succès.';
+$lang['galleries.update_success'] = 'La galerie a été mise à jour avec succès.';
+$lang['galleries.delete_success'] = 'Toutes les galeries ont été supprimées avec succès.';
+$lang['galleries.install_success'] = 'La module a été installé avec succès.';
+
+// Error notifications
+$lang['galleries.create_error'] = 'La galerie n\'a pas pu être créée.';
+$lang['galleries.exists_error'] = 'La galerie indiquée n\'existe pas.';
+$lang['galleries.update_error'] = 'La galerie n\'a pas pu être mise à jour.';
+$lang['galleries.id_error'] = 'Aucun identifiant n\'a été spécifié.';
+$lang['galleries.folder_error'] = 'Le dossier de la galerie "%s" n\'a pas pu être supprimé.';
+$lang['galleries.delete_error'] = 'La galerie "%s" n\'a pas pu être supprimée.';
+$lang['galleries.no_galleries_error'] = 'Aucune galerie n\'a encore été créée.';
+$lang['galleries.install_error'] = 'Le module n\'a pas pu être installé.';
+$lang['galleries.already_exist_error'] = 'A gallery with the slug "%s" already exist.'; #translate
+$lang['galleries.folder_duplicated_error'] = 'An error occurred! The folder already belongs to a gallery.'; #translate
+$lang['galleries.no_gallery_description'] = 'No description has been added yet.'; #translate
+
+// Labels
+$lang['galleries.galleries_label'] = 'Galeries';
+$lang['galleries.manage_gallery_label'] = 'Gérer la galerie';
+
+$lang['galleries.gallery_label'] = 'Album';
+$lang['galleries.num_photos_label'] = 'Nombre de photos';
+$lang['galleries.updated_label'] = 'Dernière mise à jour';
+$lang['galleries.view_label'] = 'Voir';
+$lang['galleries.manage_label'] = 'Gérer';
+$lang['galleries.comments_enabled_label'] = 'Oui';
+$lang['galleries.comments_disabled_label'] = 'Non';
+$lang['galleries.published_yes_label'] = 'Oui';
+$lang['galleries.published_no_label'] = 'Non';
+$lang['galleries.css_label'] = 'CSS';
+$lang['galleries.js_label'] = 'JavaScript';
+
+// General labels $lang['galleries.preview_label'] = 'Folder Images Preview'; $lang['galleries.no_thumb_label'] = 'No Thumbnail';
+$lang['galleries.title_label'] = 'Titre';
+$lang['galleries.slug_label'] = 'URL';
+$lang['galleries.folder_label'] = 'Folder'; #translate
+$lang['galleries.description_label'] = 'Description de l\'album';
+$lang['galleries.thumbnail_label'] = 'Vignette';
+$lang['galleries.comments_label'] = 'Activer les commentaires';
+$lang['galleries.published_label'] = 'Publié';
+$lang['galleries.current_label'] = 'Images courantes (glisser-déposer pour ordonner, cliquer pour modifier)';
+
+// Sidebar labels
+$lang['galleries.list_label'] = 'Lister les galeries';
+$lang['galleries.new_gallery_label'] = 'Créer une nouvelle galerie';
+$lang['galleries.upload_label'] = 'Envoyer une image';
+
+// Frontend labels
+$lang['galleries.sub-galleries_label'] = 'Sous galeries';
+
+// tabs
+$lang['galleries.content_label'] = 'Gallery content'; #translate
+$lang['galleries.design_label'] = 'Design'; #translate
+$lang['galleries.script_label'] = 'Script'; #translate
26 language/french/gallery_images_lang.php
@@ -0,0 +1,26 @@
+<?php
+// Success messages
+$lang['gallery_images.upload_success'] = 'L\'image a été envoyée avec succès.';
+$lang['gallery_images.delete_success'] = 'L\'image a été supprimée.';
+$lang['gallery_images.changes_success'] = 'Les modifications ont été sauvegardées.';
+
+// Errors
+$lang['gallery_images.upload_error'] = 'L\'image n\'a pas pu être envoyée.';
+$lang['gallery_images.exists_error'] = 'L\'image spécifiée n\'existe pas.';
+$lang['gallery_images.delete_error'] = 'L\'image n\'a pas pu être supprimée.';
+$lang['gallery_images.changes_error'] = 'Les modifications n\'ont pas pu être sauvegardées.';
+
+// Labels
+$lang['gallery_images.upload_label'] = 'Envoyer une image';
+$lang['gallery_images.edit_image_label'] = 'Modifier l\'image';
+$lang['gallery_images.thumbnail_label'] = 'Vignette';
+$lang['gallery_images.crop_label'] = 'Recadrer l\'image';
+$lang['gallery_images.recreate_label'] = 'Recréer la vignette';
+$lang['gallery_images.title_label'] = 'Titre';
+$lang['gallery_images.image_label'] = 'Image';
+$lang['gallery_images.description_label'] = 'Légende';
+$lang['gallery_images.gallery_label'] = 'Galerie';
+$lang['gallery_images.no_images_label'] = 'Aucune image n\'a encore été ajoutée';
+$lang['gallery_images.ratio_label'] = 'Maintenir la proportion';
+$lang['gallery_images.options_label'] = 'Options:';
+$lang['gallery_images.crop.save_label'] = 'Cliquez sur Enregistrer pour appliquer le recadrage';
58 language/german/galleries_lang.php
@@ -0,0 +1,58 @@
+<?php
+// Success notifications
+$lang['galleries.create_success'] = 'Die Galerie wurde erfolgreich erstellt.';
+$lang['galleries.update_success'] = 'Die Galerie wurde erfolgreich geändert.';
+$lang['galleries.delete_success'] = 'Die Galerien wurden erfolgreich gelöscht.';
+$lang['galleries.install_success'] = 'Das Modul wurde erfolgreich installiert.';
+
+// Error notifications
+$lang['galleries.create_error'] = 'Die Galerie konnte nicht erstellt werden.';
+$lang['galleries.exists_error'] = 'Die gewählte Galerie existiert nicht.';
+$lang['galleries.update_error'] = 'Die Galerie konnte nicht geändert werden.';
+$lang['galleries.id_error'] = 'Es wurde keine ID angegeben.';
+$lang['galleries.folder_error'] = 'Das Galerieverzeichnis "%s" konnte nicht gelöscht werden.';
+$lang['galleries.delete_error'] = 'Die Galerie "%s" konnte nicht gelöscht werden.';
+$lang['galleries.no_galleries_error'] = 'Es wurden noch keine Galerien angelegt.';
+$lang['galleries.install_error'] = 'Das Modul konnte nicht installiert werden.';
+$lang['galleries.already_exist_error'] = 'Eine Galerie mit dem Titel "%s" existiert bereits.';
+$lang['galleries.folder_duplicated_error'] = 'Ein Fehler ist aufgetreten! Das Verzeichnis gehört bereits zu einer Galerie.';
+$lang['galleries.no_gallery_description'] = 'Es wurde bis jetzt noch keine Beschreibung hinzugefügt.';
+
+// Labels
+$lang['galleries.galleries_label'] = 'Galerien';
+$lang['galleries.manage_gallery_label'] = 'Galerien verwalten';
+
+$lang['galleries.gallery_label'] = 'Album';
+$lang['galleries.num_photos_label'] = 'Fotos';
+$lang['galleries.updated_label'] = 'Letzte Änderung';
+$lang['galleries.view_label'] = 'Anzeigen';
+$lang['galleries.manage_label'] = 'Verwalten';
+$lang['galleries.comments_enabled_label'] = 'Ja';
+$lang['galleries.comments_disabled_label'] = 'Nein';
+$lang['galleries.published_yes_label'] = 'Ja';
+$lang['galleries.published_no_label'] = 'Nein';
+$lang['galleries.css_label'] = 'CSS';
+$lang['galleries.js_label'] = 'JavaScript';
+
+// General labels $lang['galleries.preview_label'] = 'Folder Images Preview'; $lang['galleries.no_thumb_label'] = 'No Thumbnail';
+$lang['galleries.title_label'] = 'Titel';
+$lang['galleries.slug_label'] = 'Slug';
+$lang['galleries.folder_label'] = 'Verzeichnis';
+$lang['galleries.description_label'] = 'Album Beschreibung';
+$lang['galleries.thumbnail_label'] = 'Thumbnail';
+$lang['galleries.comments_label'] = 'Kommentare aktivieren';
+$lang['galleries.published_label'] = 'Veröffentlicht';
+$lang['galleries.current_label'] = 'Aktuelle Bilder (drag & drop um zu Sortieren, Klicken um zu Editieren)';
+
+// Sidebar labels
+$lang['galleries.list_label'] = 'Galerien auflisten';
+$lang['galleries.new_gallery_label'] = 'Neue Galerie anlegen';
+$lang['galleries.upload_label'] = 'Bild Hochladen';
+
+// Frontend labels
+$lang['galleries.sub-galleries_label'] = 'Unter-Galerien';
+
+// tabs
+$lang['galleries.content_label'] = 'Galerie Inhalt';
+$lang['galleries.design_label'] = 'Design';
+$lang['galleries.script_label'] = 'Script';
26 language/german/gallery_images_lang.php
@@ -0,0 +1,26 @@
+<?php
+// Success messages
+$lang['gallery_images.upload_success'] = 'Das Bild wurde erfolgreich hochgeladen.';
+$lang['gallery_images.delete_success'] = 'Das Bild wurde gelöscht.';
+$lang['gallery_images.changes_success'] = 'Die Änderungen wurden gespeichert.';
+
+// Errors
+$lang['gallery_images.upload_error'] = 'Das Bild konnte nicht hochgeladen werden.';
+$lang['gallery_images.exists_error'] = 'Das Bild existiert nicht.';
+$lang['gallery_images.delete_error'] = 'Das Bild konnte nicht gelöscht werden.';
+$lang['gallery_images.changes_error'] = 'Die Änderungen konnten nicht gespeichert werden.';
+
+// Labels
+$lang['gallery_images.upload_label'] = 'Bild hochladen';
+$lang['gallery_images.edit_image_label'] = 'Bild bearbeiten';
+$lang['gallery_images.thumbnail_label'] = 'Thumbnail';
+$lang['gallery_images.crop_label'] = 'Bild zuschneiden';
+$lang['gallery_images.recreate_label'] = 'Thumbnail neu anlegen';
+$lang['gallery_images.title_label'] = 'Titel';
+$lang['gallery_images.image_label'] = 'Bild';
+$lang['gallery_images.description_label'] = 'Beschreibung';
+$lang['gallery_images.gallery_label'] = 'Galerie';
+$lang['gallery_images.no_images_label'] = 'Es wurden noch keine Bilder hinzugefügt';
+$lang['gallery_images.ratio_label'] = 'Seitenverhältnis erhalten';
+$lang['gallery_images.options_label'] = 'Optionen:';
+$lang['gallery_images.crop.save_label'] = 'Speichern drücken um Zuschnitt anzuwenden';
59 language/greek/galleries_lang.php
@@ -0,0 +1,59 @@
+<?php
+// Success notifications
+$lang['galleries.create_success'] = 'Η γκαλερί δημιουργήθηκε με επιτυχία.';
+$lang['galleries.update_success'] = 'Η γκαλερί ενημερώθηκε με επιτυχία.';
+$lang['galleries.delete_success'] = 'Όλες οι γκαλερί διαγράφηκαν με επιτυχία.';
+$lang['galleries.install_success'] = 'Το πρόσθετο εγκαταστάθηκε με επιτυχία';
+
+// Error notifications
+$lang['galleries.create_error'] = 'Η γκαλερί δεν ήταν δυνατό να δημιουργηθεί.';
+$lang['galleries.exists_error'] = 'Η συγκεκριμένη γκαλερί δεν υπάρχει.';
+$lang['galleries.update_error'] = 'Η γκαλερί δεν ήταν δυνατό να ενημερωθεί.';
+$lang['galleries.id_error'] = 'Δεν έχουν οριστεί IDs.';
+