From 7030b7657ebc7540311cde1c12e4dd5e8c90952f Mon Sep 17 00:00:00 2001 From: Tobias Reich Date: Thu, 25 Oct 2012 12:22:04 +0200 Subject: [PATCH] V1.0.1 - Improved ImageView - Login-Window now shows the version of Lychee - iPhone Homescreen Icon - Improved Readme with Pictures --- css/style.css | 20 ++++++- img/apple-touch-icon.png | Bin 0 -> 10871 bytes index.html | 2 + js/build.js | 1 + js/functions.js | 109 ++++++++++++++++++++++++++++++--------- js/main.js | 4 +- js/view.js | 35 ++++++++++++- lychee.sql | 0 php/api.php | 10 ++-- php/config.php | 9 ++-- php/functions.php | 16 ++++-- readme.md | 16 ++++-- 12 files changed, 176 insertions(+), 46 deletions(-) create mode 100644 img/apple-touch-icon.png mode change 100644 => 100755 index.html mode change 100644 => 100755 lychee.sql mode change 100644 => 100755 readme.md diff --git a/css/style.css b/css/style.css index 10d9028..7df9eab 100755 --- a/css/style.css +++ b/css/style.css @@ -349,6 +349,11 @@ header { #tools_albums, #tools_album, #tools_photo { display: none; } + + /* Button Custom ------------------------------------------------*/ + header .button.icon-refresh { + padding: 7px 10px 4px 10px; + } /* Button Divider ------------------------------------------------*/ header .button_divider { @@ -854,6 +859,13 @@ header { .sign_in input.error:focus { box-shadow: 0px 1px 0px #777, inset 0px 0px 3px #333, 0px 0px 5px #cc0007; } + .message #version { + display: inline-block; + margin-top: 23px; + margin-left: 19px; + color: #888; + text-shadow: 0px -1px 0px #111; + } /* Sign in ------------------------------------------------*/ .copylink { @@ -891,7 +903,7 @@ header { background-repeat: no-repeat; background-position: 50% 50%; background-size: contain; - -webkit-transition: top .3s, bottom .3s; + -webkit-transition: top .3s, bottom .3s, margin-top .3s; -webkit-animation-name: zoomIn; -webkit-animation-duration: .3s; @@ -906,6 +918,12 @@ header { animation-duration: .3s; animation-fill-mode: forwards; } +#image_view #image.small { + top: 50%; + right: auto; + bottom: auto; + left: 50%; +} /* Previous/Next Buttons ------------------------------------------------*/ #image_view a { diff --git a/img/apple-touch-icon.png b/img/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bd3b738c4c6bded6febfeb3cf1a74e27bc771943 GIT binary patch literal 10871 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 + @@ -31,6 +32,7 @@ diff --git a/js/build.js b/js/build.js index 9e6beae..529cf20 100644 --- a/js/build.js +++ b/js/build.js @@ -140,6 +140,7 @@ function buildSignInModal() { modal += ""; modal += ""; modal += ""; + modal += "
Version " + version + "
"; modal += "Sign in"; modal += ""; modal += ""; diff --git a/js/functions.js b/js/functions.js index c6aec31..7cf0f4a 100644 --- a/js/functions.js +++ b/js/functions.js @@ -68,21 +68,39 @@ function setURL(website_url) { } function getURL() { + closeContextMenu(); hash = document.location.hash.replace("#", ""); - if (hash.indexOf("a")!=-1) { - if (hash.indexOf("p")!=-1) { - hash = hash.split("p"); - content.hide(); - showImageview(hash[1]); - if (content.html()=="") loadPhotos(hash[0].replace("a", ""), true); - } else { - if (visibleImageview()) hideImageview(); - else loadPhotos(hash.replace("a", ""), false); - } + + albumID = ""; + photoID = ""; + + if (hash.indexOf("a")!=-1) albumID = hash.split("p")[0].replace("a", ""); + if (hash.indexOf("p")!=-1) photoID = hash.split("p")[1]; + + if (hash=="upload") { + + loadAlbums(); + $("body").append(buildAddModal); + + } else if (albumID&&photoID) { + + content.hide(); + showImageview(photoID); + if (content.html()=="") loadPhotos(albumID, true); + + } else if (albumID) { + + if (!visibleControls()) showControls(); + if (visibleImageview()) hideImageview(); + else loadPhotos(albumID, false); + } else { + loadAlbums(); + } + } /* @@ -190,12 +208,18 @@ function showControls() { image_view.css("background-color", "rgba(30,30,30,.99)"); loading.css("opacity", 1); header.css("margin-Top", "0px"); - $("#image_view #image").css({ - top: 70, - right: 30, - bottom: 30, - left: 30 - }); + if ($("#image_view #image.small").length>0) { + $("#image_view #image").css({ + marginTop: -1*($("#image_view #image").height()/2)+20 + }); + } else { + $("#image_view #image").css({ + top: 70, + right: 30, + bottom: 30, + left: 30 + }); + } } } function hideControls() { @@ -207,12 +231,18 @@ function hideControls() { image_view.css("background-color", "#111"); loading.css("opacity", 0); header.css("margin-Top", "-45px"); - $("#image_view #image").css({ - top: 0, - right: 0, - bottom: 0, - left: 0 - }); + if ($("#image_view #image.small").length>0) { + $("#image_view #image").css({ + marginTop: -1*($("#image_view #image").height()/2) + }); + } else { + $("#image_view #image").css({ + top: 0, + right: 0, + bottom: 0, + left: 0 + }); + } }, 500)); } } @@ -354,6 +384,21 @@ function visibleInfobox() { else return true; } +function isPhotoSmall(photo) { + + size = [ + ["width", false], + ["height", false] + ]; + + if (photo.width<$(window).width()-60) size["width"] = true; + if (photo.height<$(window).height()-100) size["height"] = true; + + if (size["width"]&&size["height"]) return true; + else return false; + +} + /* Key Function This function triggers events when a special key is pressed. @@ -447,7 +492,7 @@ function renamePhoto(photoID) { newTitle = prompt("Please enter a new title for this photo:", oldTitle); - if (photoID!=""&&photoID!=null&&photoID!=undefined&&newTitle.length>2&&newTitle.length<31) { + if (photoID!=null&&photoID!=undefined&&newTitle.length<31) { loadingFadeIn("loading"); @@ -680,8 +725,10 @@ function loadPhotoInfo(photoID) { } image_view.attr("data-id", photoID); - if (visibleControls()) image_view.html("").append("
"); - else image_view.html("").append("
"); + if (visibleControls()&&isPhotoSmall(data)) image_view.html("").append("
"); + else if (visibleControls()) image_view.html("").append("
"); + else if (isPhotoSmall(data)) image_view.html("").append("
"); + else image_view.html("").append("
"); image_view.removeClass("fadeOut").addClass("fadeIn").show(); if (!visibleControls()) hideControls(true); @@ -914,6 +961,18 @@ function loadNextPhoto() { } +function syncFolder() { + + params = "function=syncFolder"; + $.ajax({type: "POST", url: api_path, data: params, success: function(data) { + + if (data==1) setURL("a0"); + else loadingFadeIn("error"); + + }, error: ajaxError }); + +} + function search(term) { clearTimeout($(window).data("timeout")); diff --git a/js/main.js b/js/main.js index 0f3cbf9..690a421 100755 --- a/js/main.js +++ b/js/main.js @@ -11,7 +11,8 @@ var header = $("header"), image_view = $("#image_view"), loading = $("#loading"), infobox = $("#infobox"), - api_path = "php/api.php"; + api_path = "php/api.php", + version = "1.0.1"; $(document).ready(function(){ @@ -46,6 +47,7 @@ $(document).ready(function(){ $("#button_edit").live("click", function() { renamePhoto() }); $("#button_info").live("click", function() { showInfobox() }); $("#button_archive").live("click", function() { getAlbumArchive() }); + $("#button_sync").live("click", function() { syncFolder() }); /* Rename Album/Photo via Titlebar */ $("#title.editable").live("click", function() { diff --git a/js/view.js b/js/view.js index eeca97b..198cf43 100644 --- a/js/view.js +++ b/js/view.js @@ -13,6 +13,9 @@ var header = $("header"), $(document).ready(function(){ + /* Window */ + $(window).keydown(key); + /* Infobox */ $("#infobox_overlay, #infobox .header a").live("click", function() { hideInfobox() }); $("#button_info").live("click", function() { showInfobox() }); @@ -27,6 +30,35 @@ $(document).ready(function(){ }); +function key(e) { + + code = (e.keyCode ? e.keyCode : e.which); + if (code==27&&visibleInfobox()) { hideInfobox(); e.preventDefault(); } + +} + +function visibleInfobox() { + + if (parseInt(infobox.css("right").replace("px", ""))<0) return false; + else return true; + +} + +function isPhotoSmall(photo) { + + size = [ + ["width", false], + ["height", false] + ]; + + if (photo.width<$(window).width()-60) size["width"] = true; + if (photo.height<$(window).height()-100) size["height"] = true; + + if (size["width"]&&size["height"]) return true; + else return false; + +} + function showInfobox() { $("body").append("
"); @@ -51,7 +83,8 @@ function loadPhotoInfo(photoID) { headerTitle.html(data.title); image_view.attr("data-id", photoID); - image_view.html("").append("
"); + if (isPhotoSmall(data)) image_view.html("").append("
"); + else image_view.html("").append("
"); image_view.removeClass("fadeOut").addClass("fadeIn").show(); infobox.html(buildInfobox(data)).show(); diff --git a/lychee.sql b/lychee.sql old mode 100644 new mode 100755 diff --git a/php/api.php b/php/api.php index ef7a58e..4ee1cae 100644 --- a/php/api.php +++ b/php/api.php @@ -16,7 +16,6 @@ if((isset($_POST["function"])&&$_POST["function"]!="")||(isset($_GET["function"] // Security if(isset($_POST["albumID"])&&($_POST["albumID"]==""||$_POST["albumID"]<0)) exit("Wrong parameter type for 'albumID'!"); if(isset($_POST["photoID"])&&$_POST["photoID"]=="") exit("Wrong parameter type for 'photoID'!"); - if(isset($_POST["title"])&&$_POST["title"]=="") exit("Wrong parameter type for 'title'!"); if($_SESSION["login"]==true) { @@ -45,11 +44,14 @@ if((isset($_POST["function"])&&$_POST["function"]!="")||(isset($_GET["function"] if($_POST["function"]=="previousPhoto"&&isset($_POST["photoID"])&&isset($_POST["albumID"])) echo array2json(previousPhoto($_POST["photoID"], $_POST["albumID"])); if($_POST["function"]=="nextPhoto"&&isset($_POST["photoID"])&&isset($_POST["albumID"])) echo array2json(nextPhoto($_POST["photoID"], $_POST["albumID"])); - // Upload Function + // Upload Function if($_POST["function"]=="upload"&&isset($_FILES)&&isset($_POST["albumID"])) echo upload($_FILES, $_POST["albumID"]); - // Upload Function - if($_POST["function"]=="search"&&isset($_POST["term"])) echo array2json(search($_POST["term"])); + // Search Function + if($_POST["function"]=="search"&&isset($_POST["term"])) echo array2json(search($_POST["term"])); + + // Sync Function + if($_POST["function"]=="syncFolder") echo syncFolder(); // Session Functions if($_POST["function"]=="logout") logout(); diff --git a/php/config.php b/php/config.php index 3452c48..21128e3 100644 --- a/php/config.php +++ b/php/config.php @@ -4,13 +4,14 @@ * @name config.php * @author Philipp Maurer * @author Tobias Reich - * @copyright 2012 by Philipp Maurer, Tobias Reich + * @copyright 2012 by Philipp Maurer, Tobias Reich */ //Database configurations $db = "lychee"; //Database name -$dbUser = ""; //Username of the database -$dbPassword = ""; //Password of the Database +$dbUser = "lychee"; //Username of the database +$dbPassword = "lychee_passwd"; //Password of the Database +$dbHost = "localhost"; //Host of the Database //lychee user configuration $user = "lychee"; //lychee username @@ -21,4 +22,4 @@ $thumbQuality = 95; //Quality of the Thumbs (0-100). Default: 95 $bitlyUsername = ""; //Your Bit.ly Username $bitlyApi = ""; //Your Bit.ly API Key -?> +?> \ No newline at end of file diff --git a/php/functions.php b/php/functions.php index 02201ef..5cb8eeb 100644 --- a/php/functions.php +++ b/php/functions.php @@ -11,16 +11,16 @@ include("config.php"); // Database Functions function dbConnect() { - global $db, $dbUser, $dbPassword; - $connect = mysql_connect("localhost", $dbUser, $dbPassword); + global $db, $dbUser, $dbPassword, $dbHost; + $connect = mysql_connect($dbHost, $dbUser, $dbPassword); if(!$connect) { echo "No connection: ".mysql_error(); return false; } $dbSelect = mysql_select_db($db); if(!$dbSelect) { - echo "Can not find Database!"; - return false; + if(createDatabase($db)){$dbSelect = mysql_select_db($db);} + else {echo "Can not create Database!"; return false;} } $query = "SELECT * FROM photos, albums;"; if(!mysql_query($query)) createTables(); @@ -34,6 +34,12 @@ function dbClose() { } return true; } +function createDatabase($db) { + $query = "CREATE DATABASE $db;"; + $result = mysql_query($query); + if(!$result) return false; + return true; +} function createTables() { $query = "CREATE TABLE IF NOT EXISTS `albums` ( `id` int(11) NOT NULL AUTO_INCREMENT, @@ -524,7 +530,7 @@ function movePhoto($photoID, $newAlbum) { } function setPhotoTitle($photoID, $title) { $title = mysql_real_escape_string(urldecode($title)); - if(strlen($title)<3||strlen($title)>30) return false; + if(strlen($title)>30) return false; $query = "UPDATE photos SET title = '$title' WHERE id = '$photoID';"; $result = mysql_query($query); if(!$result) return false; diff --git a/readme.md b/readme.md old mode 100644 new mode 100755 index 5fb076b..8693bc8 --- a/readme.md +++ b/readme.md @@ -2,7 +2,10 @@ #### A great looking and easy-to-use Photo-Management-System. -Lychee is open-source and free to use wherever you want. Just download the source and follow the instructions to install Lychee on your server. +![Lychee ImageView](http://lychee.electerious.com/uploads/big/13511584079432.png) +![Lychee ImageView](http://lychee.electerious.com/uploads/big/13497110451270.png) + +Lychee is a free, easy to use and great looking photo-management-system you can run on your server to manage and share photos. Just download the source and follow the instructions to install Lychee wherever you want. ## Installation @@ -20,15 +23,18 @@ To use Lychee without restrictions, we recommend to increase the values of the f upload_max_filesize = 100M max_file_uploads = 100 post_max_size = 100M -#### MySQL configuration +#### Folder permissions + +Change the permissions of `/lychee/uploads` to 777, including all subfolders: + + chmod -R 777 /lychee/uploads -Create a new Database and remember the name. - #### Lychee configuration `lychee/php/config.php` Change the following properties with your MySQL information: - $db = The name of the Database you want to use $dbUser = Your MySQL username $dbPassword = Your MySQL password + $db = The name of the Database you want to use + -> Lychee will create the Database for you $dbUser = Your MySQL username $dbPassword = Your MySQL password $dbHost = Your MySQL host (in most cases you can use localhost) Your photos are protected by a username and password you need to set: