some work on issue #62 (comments collapsing on liveupdate), but still a work in progress
some work on photo consolidated "view/edit", but still a work in progress
This commit is contained in:
		| @@ -1858,9 +1858,6 @@ function tag_deliver($uid,$item_id) { | ||||
| 		// See if we are the owner of the parent item and have given permission to tag our posts. | ||||
| 		// If so tag the parent post. | ||||
|   | ||||
| 		// FIXME --- If the item is deleted, remove the tag from the parent. | ||||
| 		// (First ensure that deleted items use this function, or else do that part separately.) | ||||
|  | ||||
| 		logger('tag_deliver: community tag activity received'); | ||||
|  | ||||
| 		if(($item['owner_xchan'] === $u[0]['channel_hash']) && (! get_pconfig($u[0]['channel_id'],'system','blocktags'))) { | ||||
|   | ||||
							
								
								
									
										37
									
								
								js/main.js
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								js/main.js
									
									
									
									
									
								
							| @@ -355,14 +355,22 @@ function updateConvItems(mode,data) { | ||||
| 				$('img',this).each(function() { | ||||
| 					$(this).attr('src',$(this).attr('dst')); | ||||
| 				}); | ||||
| //				expanded_comments = false; | ||||
| //				$('.collapsed-comments',this).each(function() { | ||||
| //					if($(this).is(':visible')) | ||||
| //						expanded_comments = this; | ||||
| //				}); | ||||
|  | ||||
| 				// FIXME this doesn't work at all to prevent open comments from | ||||
| 				// collapsing on update - but I'm leaving this experimental code here until | ||||
| 				// I have time to dig into it again. Ideally we want to find | ||||
| 				// the expanded comments div on the page and then expand the one we received | ||||
| 				// over the wire (in the data variable) before placing the thread on the page, | ||||
| 				// as then it won't blink. | ||||
|  | ||||
| 				expanded_comments = false; | ||||
| 				$('.collapsed-comments',this).each(function() { | ||||
| 					if($('.thread-wrapper',this).is(':visible')) | ||||
| 						expanded_comments = this; | ||||
| 				}); | ||||
| 				$('#' + prev).after($(this)); | ||||
| //				if(expanded_comments) | ||||
| //					$(expanded_comments).show(); | ||||
| 				if(expanded_comments) | ||||
| 					$(expanded_comments).show(); | ||||
| 				$(".autotime").timeago(); | ||||
| 				// divgrow doesn't prevent itself from attaching a second (or 500th) | ||||
| 				// "show more" div to a content region - it also has a few other | ||||
| @@ -374,14 +382,15 @@ function updateConvItems(mode,data) { | ||||
| 				$('img',this).each(function() { | ||||
| 					$(this).attr('src',$(this).attr('dst')); | ||||
| 				}); | ||||
| //				expanded_comments = false; | ||||
| //				$('.collapsed-comments',this).each(function() { | ||||
| //					if($(this).is(':visible')) | ||||
| //						expanded_comments = this; | ||||
| //				}); | ||||
| 				// more FIXME related to expanded comments | ||||
| 				expanded_comments = false; | ||||
| 				$('.collapsed-comments',this).each(function() { | ||||
| 					if($('.thread-wrapper',this).is(':visible')) | ||||
| 						expanded_comments = $(this); | ||||
| 				}); | ||||
| 				$('#' + ident).replaceWith($(this)); | ||||
| //				if(expanded_comments) | ||||
| //					$(expanded_comments).show(); | ||||
| 				if(expanded_comments) | ||||
| 					$(expanded_comments).show(); | ||||
| 				$(".autotime").timeago(); | ||||
| 				//	$("div.wall-item-body").divgrow({ initialHeight: 400 }); | ||||
|  | ||||
|   | ||||
							
								
								
									
										134
									
								
								mod/photos.php
									
									
									
									
									
								
							
							
						
						
									
										134
									
								
								mod/photos.php
									
									
									
									
									
								
							| @@ -633,6 +633,9 @@ function photos_content(&$a) { | ||||
| 	// dispatch request | ||||
| 	// | ||||
|  | ||||
| 	/** | ||||
| 	 * Display upload form | ||||
| 	 */ | ||||
|  | ||||
| 	if($datatype === 'upload') { | ||||
| 		if(! ($can_post)) { | ||||
| @@ -640,12 +643,8 @@ function photos_content(&$a) { | ||||
| 			return; | ||||
| 		} | ||||
|  | ||||
|  | ||||
| 		$selname = (($datum) ? hex2bin($datum) : ''); | ||||
|  | ||||
|  | ||||
| 		$albumselect = '<select id="photos-upload-album-select" name="album" size="4">'; | ||||
|  | ||||
| 		 | ||||
| 		$albumselect .= '<option value="" ' . ((! $selname) ? ' selected="selected" ' : '') . '>        </option>'; | ||||
| 		if(count($a->data['albums'])) { | ||||
| @@ -673,6 +672,7 @@ function photos_content(&$a) { | ||||
| 		$default_upload = '<input id="photos-upload-choose" type="file" name="userfile" /> 	<div class="photos-upload-submit-wrapper" > | ||||
| 		<input type="submit" name="submit" value="' . t('Submit') . '" id="photos-upload-submit" /> </div>'; | ||||
|  | ||||
| 		/* Show space usage */ | ||||
|  | ||||
| 		$r = q("select sum(size) as total from photo where uid = %d and scale = 0 ", | ||||
| 			intval($a->data['channel']['channel_id']) | ||||
| @@ -687,15 +687,8 @@ function photos_content(&$a) { | ||||
| 			$usage_message = sprintf( t('You have used %1$.2f Mbytes of photo storage.'), $r[0]['total'] / 1024000 ); | ||||
|  		} | ||||
|  | ||||
|  | ||||
| 		if($a->get_template_engine() === 'internal') { | ||||
| 			$albumselect_e = template_escape($albumselect); | ||||
| 			$aclselect_e = (($visitor) ? '' : template_escape(populate_acl($a->user, $celeb))); | ||||
| 		} | ||||
| 		else { | ||||
| 			$albumselect_e = $albumselect; | ||||
| 			$aclselect_e = (($visitor) ? '' : populate_acl($a->user, $celeb)); | ||||
| 		} | ||||
| 		$albumselect_e = $albumselect; | ||||
| 		$aclselect_e = (($visitor) ? '' : populate_acl($a->user, $celeb)); | ||||
|  | ||||
| 		$tpl = get_markup_template('photos_upload.tpl'); | ||||
| 		$o .= replace_macros($tpl,array( | ||||
| @@ -718,6 +711,10 @@ function photos_content(&$a) { | ||||
| 		return $o;  | ||||
| 	} | ||||
|  | ||||
| 	/* | ||||
| 	 * Display a single photo album | ||||
| 	 */ | ||||
|  | ||||
| 	if($datatype === 'album') { | ||||
|  | ||||
| 		$album = hex2bin($datum); | ||||
| @@ -793,6 +790,7 @@ function photos_content(&$a) { | ||||
| 		if(count($r)) | ||||
| 			$twist = 'rotright'; | ||||
| 			foreach($r as $rr) { | ||||
|  | ||||
| 				if($twist == 'rotright') | ||||
| 					$twist = 'rotleft'; | ||||
| 				else | ||||
| @@ -839,12 +837,12 @@ function photos_content(&$a) { | ||||
|  | ||||
| 	}	 | ||||
|  | ||||
| 	/**  | ||||
| 	 * Display one photo | ||||
| 	 */ | ||||
|  | ||||
| 	if($datatype === 'image') { | ||||
|  | ||||
|  | ||||
|  | ||||
| 		//$o = ''; | ||||
| 		// fetch image, item containing image, then comments | ||||
|  | ||||
| 		$ph = q("SELECT * FROM `photo` WHERE `uid` = %d AND `resource_id` = '%s'  | ||||
| @@ -853,13 +851,16 @@ function photos_content(&$a) { | ||||
| 			dbesc($datum) | ||||
| 		); | ||||
|  | ||||
| 		if(! count($ph)) { | ||||
| 		if(! $ph) { | ||||
|  | ||||
| 			/* Check again - this time without specifying permissions */ | ||||
|  | ||||
| 			$ph = q("SELECT `id` FROM `photo` WHERE `uid` = %d AND `resource_id` = '%s'  | ||||
| 				LIMIT 1", | ||||
| 				intval($owner_uid), | ||||
| 				dbesc($datum) | ||||
| 			); | ||||
| 			if(count($ph))  | ||||
| 			if($ph)  | ||||
| 				notice( t('Permission denied. Access to this item may be restricted.')); | ||||
| 			else | ||||
| 				notice( t('Photo not available') . EOL ); | ||||
| @@ -893,9 +894,9 @@ function photos_content(&$a) { | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			$edit_suffix = ((($cmd === 'edit') && ($can_post)) ? '/edit' : ''); | ||||
| 			$prevlink = $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/image/' . $prvnxt[$prv]['resource_id'] . $edit_suffix . (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''); | ||||
| 			$nextlink = $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/image/' . $prvnxt[$nxt]['resource_id'] . $edit_suffix . (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''); | ||||
|  | ||||
| 			$prevlink = $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/image/' . $prvnxt[$prv]['resource_id'] . (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''); | ||||
| 			$nextlink = $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/image/' . $prvnxt[$nxt]['resource_id'] . (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''); | ||||
|  		} | ||||
|  | ||||
|  | ||||
| @@ -918,7 +919,6 @@ function photos_content(&$a) { | ||||
|   | ||||
| 		if($can_post && ($ph[0]['uid'] == $owner_uid)) { | ||||
| 			$tools = array( | ||||
| 				'edit'	=> array($a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/image/' . $datum . (($cmd === 'edit') ? '' : '/edit'), (($cmd === 'edit') ? t('View photo') : t('Edit photo'))), | ||||
| 				'profile'=>array($a->get_baseurl() . '/profile_photo/use/'.$ph[0]['resource_id'], t('Use as profile photo')), | ||||
| 			); | ||||
|  | ||||
| @@ -931,7 +931,7 @@ function photos_content(&$a) { | ||||
| 			 | ||||
| 		} | ||||
|  | ||||
| 		if(! $cmd !== 'edit') { | ||||
| 		if(! $can_post) { | ||||
| 			$a->page['htmlhead'] .= '<script> | ||||
| 				$(document).keydown(function(event) {' . "\n"; | ||||
|  | ||||
| @@ -990,39 +990,33 @@ function photos_content(&$a) { | ||||
| 		} | ||||
|  | ||||
|  | ||||
| 		$edit = Null; | ||||
| 		if(($cmd === 'edit') && ($can_post)) { | ||||
| 			if($a->get_template_engine() === 'internal') { | ||||
| 				$album_e = template_escape($ph[0]['album']); | ||||
| 				$caption_e = template_escape($ph[0]['desc']); | ||||
| 				$aclselect_e = template_escape(populate_acl($ph[0])); | ||||
| 			} | ||||
| 			else { | ||||
| 				$album_e = $ph[0]['album']; | ||||
| 				$caption_e = $ph[0]['desc']; | ||||
| 				$aclselect_e = populate_acl($ph[0]); | ||||
| 			} | ||||
| 		$edit = null; | ||||
| 		if($can_post) { | ||||
|  | ||||
| 			$edit_tpl = get_markup_template('photo_edit.tpl'); | ||||
| 			$edit = replace_macros($edit_tpl, array( | ||||
| 				'$id' => $ph[0]['id'], | ||||
| 				'$rotatecw' => t('Rotate CW (right)'), | ||||
| 				'$rotateccw' => t('Rotate CCW (left)'), | ||||
| 				'$album' => $album_e, | ||||
| 				'$newalbum' => t('New album name'),  | ||||
| 				'$nickname' => $a->data['channel']['channel_address'], | ||||
| 				'$resource_id' => $ph[0]['resource_id'], | ||||
| 				'$capt_label' => t('Caption'), | ||||
| 				'$caption' => $caption_e, | ||||
| 				'$tag_label' => t('Add a Tag'), | ||||
| 				'$tags' => $link_item['tag'], | ||||
| 				'$permissions' => t('Permissions'), | ||||
| 				'$aclselect' => $aclselect_e, | ||||
| 				'$help_tags' => t('Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping'), | ||||
| 				'$item_id' => ((count($linked_items)) ? $link_item['id'] : 0), | ||||
| 				'$submit' => t('Submit'), | ||||
| 				'$delete' => t('Delete Photo') | ||||
| 			)); | ||||
| 			$album_e = $ph[0]['album']; | ||||
| 			$caption_e = $ph[0]['desc']; | ||||
| 			$aclselect_e = populate_acl($ph[0]); | ||||
|  | ||||
| 			$edit = array( | ||||
| 				'edit' => t('Edit photo'), | ||||
| 				'id' => $ph[0]['id'], | ||||
| 				'rotatecw' => t('Rotate CW (right)'), | ||||
| 				'rotateccw' => t('Rotate CCW (left)'), | ||||
| 				'album' => $album_e, | ||||
| 				'newalbum' => t('New album name'),  | ||||
| 				'nickname' => $a->data['channel']['channel_address'], | ||||
| 				'resource_id' => $ph[0]['resource_id'], | ||||
| 				'capt_label' => t('Caption'), | ||||
| 				'caption' => $caption_e, | ||||
| 				'tag_label' => t('Add a Tag'), | ||||
| 				'tags' => $link_item['tag'], | ||||
| 				'permissions' => t('Permissions'), | ||||
| 				'aclselect' => $aclselect_e, | ||||
| 				'help_tags' => t('Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping'), | ||||
| 				'item_id' => ((count($linked_items)) ? $link_item['id'] : 0), | ||||
| 				'submit' => t('Submit'), | ||||
| 				'delete' => t('Delete Photo') | ||||
| 			); | ||||
| 		} | ||||
|  | ||||
| 		if(count($linked_items)) { | ||||
| @@ -1154,16 +1148,10 @@ function photos_content(&$a) { | ||||
| 						$drop = replace_macros(get_markup_template('photo_drop.tpl'), array('$id' => $item['id'], '$delete' => t('Delete'))); | ||||
|  | ||||
|  | ||||
| 					if($a->get_template_engine() === 'internal') { | ||||
| 						$name_e = template_escape($profile_name); | ||||
| 						$title_e = template_escape($item['title']); | ||||
| 						$body_e = template_escape(bbcode($item['body'])); | ||||
| 					} | ||||
| 					else { | ||||
| 						$name_e = $profile_name; | ||||
| 						$title_e = $item['title']; | ||||
| 						$body_e = bbcode($item['body']); | ||||
| 					} | ||||
| 					$name_e = $profile_name; | ||||
| 					$title_e = $item['title']; | ||||
| 					$body_e = bbcode($item['body']); | ||||
|  | ||||
|  | ||||
| 					$comments .= replace_macros($template,array( | ||||
| 						'$id' => $item['item_id'], | ||||
| @@ -1184,18 +1172,10 @@ function photos_content(&$a) { | ||||
| 			$paginate = paginate($a); | ||||
| 		} | ||||
| 		 | ||||
| 		if($a->get_template_engine() === 'internal') { | ||||
| 			$album_e = array($album_link,template_escape($ph[0]['album'])); | ||||
| 			$tags_e = template_escape($tags); | ||||
| 			$like_e = template_escape($like); | ||||
| 			$dislike_e = template_escape($dislike); | ||||
| 		} | ||||
| 		else { | ||||
| 			$album_e = array($album_link,$ph[0]['album']); | ||||
| 			$tags_e = $tags; | ||||
| 			$like_e = $like; | ||||
| 			$dislike_e = $dislike; | ||||
| 		} | ||||
| 		$album_e = array($album_link,$ph[0]['album']); | ||||
| 		$tags_e = $tags; | ||||
| 		$like_e = $like; | ||||
| 		$dislike_e = $dislike; | ||||
|  | ||||
| 		$photo_tpl = get_markup_template('photo_view.tpl'); | ||||
| 		$o .= replace_macros($photo_tpl, array( | ||||
|   | ||||
| @@ -1 +1 @@ | ||||
| 2013-07-01.361 | ||||
| 2013-07-02.362 | ||||
|   | ||||
| @@ -1,55 +0,0 @@ | ||||
| {{* | ||||
|  *	AUTOMATICALLY GENERATED TEMPLATE | ||||
|  *	DO NOT EDIT THIS FILE, CHANGES WILL BE OVERWRITTEN | ||||
|  * | ||||
|  *}} | ||||
|  | ||||
| <form action="photos/{{$nickname}}/{{$resource_id}}" method="post" id="photo_edit_form" > | ||||
|  | ||||
| 	<input type="hidden" name="item_id" value="{{$item_id}}" /> | ||||
|  | ||||
| 	<label id="photo-edit-albumname-label" for="photo-edit-albumname">{{$newalbum}}</label> | ||||
| 	<input id="photo-edit-albumname" type="text" size="32" name="albname" value="{{$album}}" /> | ||||
|  | ||||
| 	<div id="photo-edit-albumname-end"></div> | ||||
|  | ||||
| 	<label id="photo-edit-caption-label" for="photo-edit-caption">{{$capt_label}}</label> | ||||
| 	<input id="photo-edit-caption" type="text" size="84" name="desc" value="{{$caption}}" /> | ||||
|  | ||||
| 	<div id="photo-edit-caption-end"></div> | ||||
|  | ||||
| 	<label id="photo-edit-tags-label" for="photo-edit-newtag" >{{$tag_label}}</label> | ||||
| 	<input name="newtag" id="photo-edit-newtag" size="84" title="{{$help_tags}}" type="text" /> | ||||
|  | ||||
| 	<div id="photo-edit-tags-end"></div> | ||||
| 	<div id="photo-edit-rotate-wrapper"> | ||||
| 		<div id="photo-edit-rotate-label"> | ||||
| 			{{$rotatecw}}<br> | ||||
| 			{{$rotateccw}} | ||||
| 		</div> | ||||
| 		<input type="radio" name="rotate" value="1" /><br> | ||||
| 		<input type="radio" name="rotate" value="2" /> | ||||
| 	</div> | ||||
| 	<div id="photo-edit-rotate-end"></div> | ||||
|  | ||||
| 	<div id="photo-edit-perms" class="photo-edit-perms" > | ||||
| 		<a href="#photo-edit-perms-select" id="photo-edit-perms-menu" class="button popupbox" title="{{$permissions}}"/> | ||||
| 			<span id="jot-perms-icon" class="icon {{$lockstate}}" ></span>{{$permissions}} | ||||
| 		</a> | ||||
| 		<div id="photo-edit-perms-menu-end"></div> | ||||
| 		 | ||||
| 		<div style="display: none;"> | ||||
| 			<div id="photo-edit-perms-select" > | ||||
| 				{{$aclselect}} | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</div> | ||||
| 	<div id="photo-edit-perms-end"></div> | ||||
|  | ||||
| 	<input id="photo-edit-submit-button" type="submit" name="submit" value="{{$submit}}" /> | ||||
| 	<input id="photo-edit-delete-button" type="submit" name="delete" value="{{$delete}}" onclick="return confirmDelete()"; /> | ||||
|  | ||||
| 	<div id="photo-edit-end"></div> | ||||
| </form> | ||||
|  | ||||
|  | ||||
| @@ -14,8 +14,6 @@ | ||||
|  | ||||
| <div id="photo-edit-link-wrap"> | ||||
| {{if $tools}} | ||||
| <a id="photo-edit-link" href="{{$tools.edit.0}}">{{$tools.edit.1}}</a> | ||||
| | | ||||
| <a id="photo-toprofile-link" href="{{$tools.profile.0}}">{{$tools.profile.1}}</a> | ||||
| {{/if}} | ||||
| {{if $lock}} | <img src="images/lock_icon.gif" class="lockview" alt="{{$lock}}" onclick="lockview(event,'photo/{{$id}}');" /> {{/if}} | ||||
| @@ -32,7 +30,58 @@ | ||||
| {{/if}} | ||||
| {{if $tags.2}}<div id="tag-remove"><a href="{{$tags.2}}">{{$tags.3}}</a></div>{{/if}} | ||||
|  | ||||
| {{if $edit}}{{$edit}}{{/if}} | ||||
| {{if $edit}} | ||||
| <div id="photo-edit-edit-wrapper" class="fakelink" onclick="openClose('photo-edit-edit');">{{$edit.edit}}</div> | ||||
| <div id="photo-edit-edit" style="display: none;"> | ||||
| <form action="photos/{{$edit.nickname}}/{{$edit.resource_id}}" method="post" id="photo_edit_form" > | ||||
|  | ||||
| 	<input type="hidden" name="item_id" value="{{$item_id}}" /> | ||||
|  | ||||
| 	<label id="photo-edit-albumname-label" for="photo-edit-albumname">{{$edit.newalbum}}</label> | ||||
| 	<input id="photo-edit-albumname" type="text" size="32" name="albname" value="{{$edit.album}}" /> | ||||
|  | ||||
| 	<div id="photo-edit-albumname-end"></div> | ||||
|  | ||||
| 	<label id="photo-edit-caption-label" for="photo-edit-caption">{{$edit.capt_label}}</label> | ||||
| 	<input id="photo-edit-caption" type="text" size="84" name="desc" value="{{$edit.caption}}" /> | ||||
|  | ||||
| 	<div id="photo-edit-caption-end"></div> | ||||
|  | ||||
| 	<label id="photo-edit-tags-label" for="photo-edit-newtag" >{{$edit.tag_label}}</label> | ||||
| 	<input name="newtag" id="photo-edit-newtag" size="84" title="{{$edit.help_tags}}" type="text" /> | ||||
|  | ||||
| 	<div id="photo-edit-tags-end"></div> | ||||
| 	<div id="photo-edit-rotate-wrapper"> | ||||
| 		<div id="photo-edit-rotate-label"> | ||||
| 			{{$edit.rotatecw}}<br> | ||||
| 			{{$edit.rotateccw}} | ||||
| 		</div> | ||||
| 		<input type="radio" name="rotate" value="1" /><br> | ||||
| 		<input type="radio" name="rotate" value="2" /> | ||||
| 	</div> | ||||
| 	<div id="photo-edit-rotate-end"></div> | ||||
|  | ||||
| 	<div id="photo-edit-perms" class="photo-edit-perms" > | ||||
| 		<a href="#photo-edit-perms-select" id="photo-edit-perms-menu" class="button popupbox" title="{{$edit.permissions}}"/> | ||||
| 			<span id="jot-perms-icon" class="icon {{$edit.lockstate}}" ></span>{{$edit.permissions}} | ||||
| 		</a> | ||||
| 		<div id="photo-edit-perms-menu-end"></div> | ||||
| 		 | ||||
| 		<div style="display: none;"> | ||||
| 			<div id="photo-edit-perms-select" > | ||||
| 				{{$edit.aclselect}} | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</div> | ||||
| 	<div id="photo-edit-perms-end"></div> | ||||
|  | ||||
| 	<input id="photo-edit-submit-button" type="submit" name="submit" value="{{$edit.submit}}" /> | ||||
| 	<input id="photo-edit-delete-button" type="submit" name="delete" value="{{$edit.delete}}" onclick="return confirmDelete()"; /> | ||||
|  | ||||
| 	<div id="photo-edit-end"></div> | ||||
| </form> | ||||
| </div> | ||||
| {{/if}} | ||||
|  | ||||
| {{if $likebuttons}} | ||||
| <div id="photo-like-div"> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user