diff --git a/config.ini b/config.ini index cc6d3ffe..937a9120 100644 --- a/config.ini +++ b/config.ini @@ -62,10 +62,9 @@ retrievePost=anonymous favoritePost=registered editPostSafety.own=registered editPostSafety.all=moderator -editPostTags.own=registered -editPostTags.all=registered -editPostThumb.own=moderator -editPostThumb.all=moderator +editPostTags=registered +editPostThumb=moderator +editPostSource=moderator hidePost.own=moderator hidePost.all=moderator deletePost.own=moderator diff --git a/public_html/media/css/auth.css b/public_html/media/css/auth.css index c4d7be51..4a895172 100644 --- a/public_html/media/css/auth.css +++ b/public_html/media/css/auth.css @@ -1,35 +1,12 @@ form.auth { margin: 0 auto; - display: table; - border-collapse:separate; - border-spacing: 0 0.5em; width: 400px; } -form.auth div { - display: table-row; -} - form.auth label.left { - display: table-cell; - float: left; width: 144px; } -form.auth input { - display: block; -} - -form.auth input { - width: 156px; - padding: 5px; - margin: 0; -} - -form.auth button { - display: block; -} - form.auth p { text-align: center; margin: 10px 0; diff --git a/public_html/media/css/core.css b/public_html/media/css/core.css index ba757b38..1db5c025 100644 --- a/public_html/media/css/core.css +++ b/public_html/media/css/core.css @@ -253,6 +253,16 @@ form.aligned input[type=checkbox] { vertical-align: text-top; } +.input-wrapper { + overflow: hidden; + display: block; +} +.input-wrapper ul.tagit, +.input-wrapper input, +.input-wrapper select { + width: 80%; +} + label { display: inline-block; } @@ -263,9 +273,11 @@ button { font-family: inherit; font-size: 11pt; } +ul.tagit, select, input:not([type=radio]):not([type=checkbox]):not([type=file]) { border: 1px solid #ccc; + border-radius: 3px; } ul.tagit input { border: 0 !important; diff --git a/public_html/media/css/post-view.css b/public_html/media/css/post-view.css index 352a0fd0..78d3786c 100644 --- a/public_html/media/css/post-view.css +++ b/public_html/media/css/post-view.css @@ -19,19 +19,19 @@ embed { color: silver; } -nav { +#sidebar nav { margin-bottom: 2em; } -nav .left { +#sidebar nav .left { float: left; } -nav .right { +#sidebar nav .right { float: right; } -nav a.disabled { +#sidebar nav a.disabled { color: silver; } -nav a.disabled i[class*='icon-'] { +#sidebar nav a.disabled i[class*='icon-'] { background-color: silver; } diff --git a/public_html/media/css/upload.css b/public_html/media/css/upload.css index 6a0d915d..edf04c09 100644 --- a/public_html/media/css/upload.css +++ b/public_html/media/css/upload.css @@ -140,3 +140,7 @@ ul.tagit { #theSubmit { margin: 0 auto; } + +.post .form-wrapper { + overflow: hidden; +} diff --git a/public_html/media/css/user-view.css b/public_html/media/css/user-view.css index 06f7a443..cfd07eac 100644 --- a/public_html/media/css/user-view.css +++ b/public_html/media/css/user-view.css @@ -40,10 +40,15 @@ padding: 0; } -form.aligned label.left { +form.edit label.left { width: 10em; } form.edit .alert { margin: 1em 0; } + +form.edit select, +form.edit input { + width: 16em; +} diff --git a/public_html/media/js/post-view.js b/public_html/media/js/post-view.js index 3c49578c..54dfd4db 100644 --- a/public_html/media/js/post-view.js +++ b/public_html/media/js/post-view.js @@ -23,7 +23,8 @@ $(function() $('.tags input').tagit(tagItOptions); e.preventDefault(); - $('form.edit-post').slideDown(); + var formDom = $('form.edit-post'); + formDom.show().css('height', formDom.height()).hide().slideDown(); }); }); diff --git a/public_html/media/js/upload.js b/public_html/media/js/upload.js index 3e0ae023..14c03d7f 100644 --- a/public_html/media/js/upload.js +++ b/public_html/media/js/upload.js @@ -76,10 +76,12 @@ $(function() var file = postDom.data('file'); var tags = postDom.find('[name=tags]').val(); var safety = postDom.find('[name=safety]:checked').val(); + var source = postDom.find('[name=source]').val(); var fd = new FormData(); fd.append('file', file); fd.append('tags', tags); fd.append('safety', safety); + fd.append('source', source); var ajaxData = { diff --git a/src/Controllers/PostController.php b/src/Controllers/PostController.php index 5e753f0b..b6e4efe3 100644 --- a/src/Controllers/PostController.php +++ b/src/Controllers/PostController.php @@ -234,12 +234,15 @@ class PostController $suppliedSafety = InputHelper::get('safety'); $suppliedSafety = Model_Post::validateSafety($suppliedSafety); - /* tags */ $suppliedTags = InputHelper::get('tags'); $suppliedTags = Model_Post::validateTags($suppliedTags); $dbTags = Model_Tag::insertOrUpdate($suppliedTags); + /* source */ + $suppliedSource = InputHelper::get('source'); + $suppliedSource = Model_Post::validateSource($suppliedSource); + /* db storage */ $dbPost = R::dispense('post'); $dbPost->type = $postType; @@ -249,6 +252,7 @@ class PostController $dbPost->file_size = filesize($suppliedFile['tmp_name']); $dbPost->mime_type = $mimeType; $dbPost->safety = $suppliedSafety; + $dbPost->source = $suppliedSource; $dbPost->hidden = false; $dbPost->upload_date = time(); $dbPost->image_width = $imageWidth; @@ -325,6 +329,17 @@ class PostController } + /* source */ + $suppliedSource = InputHelper::get('source'); + if ($suppliedSource !== null) + { + PrivilegesHelper::confirmWithException(Privilege::EditPostSource, PrivilegesHelper::getIdentitySubPrivilege($post->uploader)); + $suppliedSource = Model_Post::validateSource($suppliedSource); + $post->source = $suppliedSource; + $edited = true; + } + + /* db storage */ if ($edited) R::store($post); diff --git a/src/Models/Model_Post.php b/src/Models/Model_Post.php index 0d57276a..6f5fbfac 100644 --- a/src/Models/Model_Post.php +++ b/src/Models/Model_Post.php @@ -28,6 +28,18 @@ class Model_Post extends RedBean_SimpleModel return $safety; } + public static function validateSource($source) + { + $source = trim($source); + + $maxLength = 100; + if (strlen($source) > $maxLength) + throw new SimpleException('Source must have at most ' . $maxLength . ' characters'); + + return $source; + } + + public static function validateTag($tag) { $tag = trim($tag); diff --git a/src/Models/Privilege.php b/src/Models/Privilege.php index 02ab75f9..151e25d1 100644 --- a/src/Models/Privilege.php +++ b/src/Models/Privilege.php @@ -9,6 +9,7 @@ class Privilege extends Enum const EditPostSafety = 6; const EditPostTags = 7; const EditPostThumb = 8; + const EditPostSource = 26; const HidePost = 9; const DeletePost = 10; const FeaturePost = 25; diff --git a/src/Views/auth-login.phtml b/src/Views/auth-login.phtml index 3cb44bcc..b54aede1 100644 --- a/src/Views/auth-login.phtml +++ b/src/Views/auth-login.phtml @@ -6,12 +6,12 @@
- +
- +
context->transport->errorMessage)): ?> diff --git a/src/Views/post-upload.phtml b/src/Views/post-upload.phtml index 33481af6..5fc7a363 100644 --- a/src/Views/post-upload.phtml +++ b/src/Views/post-upload.phtml @@ -35,9 +35,11 @@
-
-

Some kind of error

+

Some kind of error

+ Thumbnail + +
- Thumbnail -
+
filename.jpg @@ -68,11 +69,15 @@
- +
-
-
- + +
+ +
+
+ +
diff --git a/src/Views/post-view.phtml b/src/Views/post-view.phtml index c028d210..e3c756bd 100644 --- a/src/Views/post-view.phtml +++ b/src/Views/post-view.phtml @@ -84,6 +84,13 @@
+
+ Source: + + + +
+