aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Zotlabs/Module/Photos.php64
-rw-r--r--include/attach.php48
-rwxr-xr-xview/tpl/photo_view.tpl3
3 files changed, 83 insertions, 32 deletions
diff --git a/Zotlabs/Module/Photos.php b/Zotlabs/Module/Photos.php
index 6aeac7af7..040a90aaa 100644
--- a/Zotlabs/Module/Photos.php
+++ b/Zotlabs/Module/Photos.php
@@ -50,7 +50,7 @@ class Photos extends \Zotlabs\Web\Controller {
- function post() {
+ function post() {
logger('mod-photos: photos_post: begin' , LOGGER_DEBUG);
@@ -106,24 +106,6 @@ class Photos extends \Zotlabs\Web\Controller {
/*
- * RENAME photo album
- */
-
- $newalbum = notags(trim($_REQUEST['albumname']));
- if($newalbum != $album) {
-
- // @fixme - syncronise with DAV or disallow completely
-
- goaway(z_root() . '/' . $_SESSION['photo_return']);
-
- // $x = photos_album_rename($page_owner_uid,$album,$newalbum);
- // if($x) {
- // $newurl = str_replace(bin2hex($album),bin2hex($newalbum),$_SESSION['photo_return']);
- // goaway(z_root() . '/' . $newurl);
- // }
- }
-
- /*
* DELETE photo album and all its photos
*/
@@ -229,15 +211,25 @@ class Photos extends \Zotlabs\Web\Controller {
goaway(z_root() . '/photos/' . \App::$data['channel']['channel_address'] . '/album/' . $_SESSION['album_return']);
}
-
-
- if((\App::$argc > 2) && ((x($_POST,'desc') !== false) || (x($_POST,'newtag') !== false)) || (x($_POST,'albname') !== false)) {
-
+
+ if((argc() > 2) && array_key_exists('move_to_album',$_POST)) {
+ $m = q("select folder from attach where hash = '%s' and uid = %d limit 1",
+ dbesc(argv(2)),
+ intval($page_owner_uid)
+ );
+ if(($m) && ($m[0]['folder'] != $_POST['move_to_album'])) {
+ attach_move($page_owner_uid,argv(2),$_POST['move_to_album']);
+ if(! ($_POST['desc'] && $_POST['newtag']))
+ goaway(z_root() . '/' . $_SESSION['photo_return']);
+ }
+ }
+
+ if((argc() > 2) && ((x($_POST,'desc') !== false) || (x($_POST,'newtag') !== false))) {
$desc = ((x($_POST,'desc')) ? notags(trim($_POST['desc'])) : '');
$rawtags = ((x($_POST,'newtag')) ? notags(trim($_POST['newtag'])) : '');
$item_id = ((x($_POST,'item_id')) ? intval($_POST['item_id']) : 0);
- $albname = ((x($_POST,'albname')) ? notags(trim($_POST['albname'])) : '');
+
$is_nsfw = ((x($_POST,'adult')) ? intval($_POST['adult']) : 0);
$acl->set_from_array($_POST);
@@ -245,10 +237,6 @@ class Photos extends \Zotlabs\Web\Controller {
$resource_id = argv(2);
- if(! strlen($albname))
- $albname = datetime_convert('UTC',date_default_timezone_get(),'now', 'Y');
-
-
if((x($_POST,'rotate') !== false) &&
( (intval($_POST['rotate']) == 1) || (intval($_POST['rotate']) == 2) )) {
logger('rotate');
@@ -464,14 +452,15 @@ class Photos extends \Zotlabs\Web\Controller {
}
}
-
- goaway(z_root() . '/' . $_SESSION['photo_return']);
- return; // NOTREACHED
-
+
$sync = attach_export_data(\App::$data['channel'],$resource_id);
if($sync)
build_sync_packet($page_owner_uid,array('file' => array($sync)));
+
+ goaway(z_root() . '/' . $_SESSION['photo_return']);
+ return; // NOTREACHED
+
}
@@ -1023,12 +1012,22 @@ class Photos extends \Zotlabs\Web\Controller {
$edit = null;
if($can_post) {
+
+ $m = q("select folder from attach where hash = '%s' and uid = %d limit 1",
+ dbesc($ph[0]['resource_id']),
+ intval($ph[0]['uid'])
+ );
+ if($m)
+ $album_hash = $m[0]['folder'];
+
$album_e = $ph[0]['album'];
$caption_e = $ph[0]['description'];
$aclselect_e = (($_is_owner) ? populate_acl($ph[0], true, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_storage')) : '');
$albums = ((array_key_exists('albums', \App::$data)) ? \App::$data['albums'] : photos_albums_list(\App::$data['channel'],\App::$data['observer']));
$_SESSION['album_return'] = bin2hex($ph[0]['album']);
+
+ $folder_list = attach_folder_select_list($ph[0]['uid']);
$edit = array(
'edit' => t('Edit photo'),
@@ -1037,6 +1036,7 @@ class Photos extends \Zotlabs\Web\Controller {
'rotateccw' => t('Rotate CCW (left)'),
'albums' => $albums['albums'],
'album' => $album_e,
+ 'album_select' => [ 'move_to_album', t('Move photo to album'), $album_hash, '', $folder_list ],
'newalbum_label' => t('Enter a new album name'),
'newalbum_placeholder' => t('or select an existing one (doubleclick)'),
'nickname' => \App::$data['channel']['channel_address'],
diff --git a/include/attach.php b/include/attach.php
index 137d2b11c..237b06217 100644
--- a/include/attach.php
+++ b/include/attach.php
@@ -2165,3 +2165,51 @@ function attach_move($channel_id,$resource_id,$new_folder_hash) {
}
+function attach_folder_select_list($channel_id) {
+
+ $r = q("select * from attach where is_dir = 1 and uid = %d",
+ intval($channel_id)
+ );
+
+ $out = [];
+ $out[''] = '/';
+
+ if($r) {
+ foreach($r as $rv) {
+ $x = attach_folder_rpaths($r,$rv);
+ if($x)
+ $out[$x[0]] = $x[1];
+ }
+ }
+ return $out;
+}
+
+function attach_folder_rpaths($all_folders,$that_folder) {
+
+ $path = '/' . $that_folder['filename'];
+ $current_hash = $that_folder['hash'];
+ $parent_hash = $that_folder['folder'];
+ $error = false;
+ $found = false;
+
+ if($parent_hash) {
+ do {
+ foreach($all_folders as $selected) {
+ if(! $selected['is_dir'])
+ continue;
+ if($selected['hash'] == $parent_hash) {
+ $path = '/' . $selected['filename'] . $path;
+ $current_hash = $selected['hash'];
+ $parent_hash = $selected['folder'];
+ $found = true;
+ break;
+ }
+ }
+ if(! $found)
+ $error = true;
+ }
+ while((! $found) && (! $error) && ($parent_hash != ''));
+ }
+ return (($error) ? false : [ $current_hash , $path ]);
+
+} \ No newline at end of file
diff --git a/view/tpl/photo_view.tpl b/view/tpl/photo_view.tpl
index ec827d990..db5ffe3f5 100755
--- a/view/tpl/photo_view.tpl
+++ b/view/tpl/photo_view.tpl
@@ -79,6 +79,9 @@
<input name="newtag" id="photo-edit-newtag" class="form-control" title="{{$edit.help_tags}}" type="text" />
</div>
<div class="form-group">
+ {{include file="field_select.tpl" field=$edit.album_select}}
+ </div>
+ <div class="form-group">
<label class="radio-inline" id="photo-edit-rotate-cw-label" for="photo-edit-rotate-cw"><input id="photo-edit-rotate-cw" type="radio" name="rotate" value="1" />{{$edit.rotatecw}}</label>
<label class="radio-inline" id="photo-edit-rotate-ccw-label" for="photo-edit-rotate-ccw"><input id="photo-edit-rotate-ccw" type="radio" name="rotate" value="2" />{{$edit.rotateccw}}</label>
</div>