Updated : upgrade_3.0.sql

Updated : edit_account.php, Now when avatar is set it redirects to user profile
Updated : EXIF Data url
Updated : queryString function regex. Old one was removing complete query string
Updated : display_manager_links(), now all variables except omo are removed from url
Added : Make profile link for photos @startup.php
Added : return_object_order in template_functions.php, This returns the order of provided omo value
Updated : Order checking @manage_collections.php and @manage_photos.php. Now only return_object_order is used
Updated : Updating of photo when it is uploaded
Updated : photo.html, single_feed.html, single_feed_comment.html, photo_form.html, user.html, video.html, /view_channel/feed.html, manage_photos.html, view_channel.html
Added : user_contacts.html, user_photos.html and user_videos.html
Added : autoComplete parameter for photo tagging
Updated : default.css, feeds.css and view_channel.css
Updated : user_contacts.php
Added : Next and Previous photos links @view_item.php
Fixed : Avatar Delete
Fixed : getProfileItem method of $userquery
This commit is contained in:
Fawaz 2012-12-04 13:27:13 +00:00
parent fe9a28797f
commit d5f43443bb
28 changed files with 495 additions and 251 deletions

View file

@ -143,6 +143,10 @@ CREATE TABLE IF NOT EXISTS `{tbl_prefix}video_meta` (
ALTER TABLE `{tbl_prefix}group_members` ADD `is_admin` ENUM( 'yes', 'no' ) NOT NULL DEFAULT 'no' AFTER `userid` ,
ADD `ban` ENUM( 'yes', 'no' ) NOT NULL DEFAULT 'no' AFTER `is_admin`;
--11-29-2102 @author: Fawaz Tahir
ALTER TABLE `{tbl_prefix}photos` CHANGE `exif_data` `has_exif` ENUM( 'yes', 'no' ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'no'
--11-28-2012 @author : Arslan
CREATE TABLE IF NOT EXISTS `tbl_prefix}user_mentions` (
`mention_id` int(255) NOT NULL AUTO_INCREMENT,

View file

@ -69,7 +69,7 @@ if ( mysql_clean($_GET['mode']) == 'make_avatar' ) {
/* update cover photo of collection */
$cbcollection->set_cover_photo( $photo['photo_id'], $photo['collection_id'] );
// redirect back to photo
redirect_to( $cbphoto->photo_links( $photo, 'view_photo' ) );
redirect_to( $userquery->profile_link( $photo['userid'] ) );
} else if( isset( $_POST['set_avatar']) ) {
/* Run make avatar code */
make_new_avatar();

View file

@ -2189,7 +2189,7 @@ class CBPhotos {
case 'exif_data': case 'exif': {
if ( SEO == 'yes' ) {
$link = BASEURL.'/exif/'.$details['photo_key'];
$link = BASEURL.'/exif.php?id='.$details['photo_key'];
} else {
$link = BASEURL.'/exif.php?id='.$details['photo_key'];
}

View file

@ -2080,16 +2080,16 @@ function queryString($var = false, $remove = false)
$queryString = $_SERVER['QUERY_STRING'];
if ($var)
$queryString = preg_replace("/&?$var=([\w+\s\b\.?\S]+|)/", "", $queryString);
$queryString = preg_replace("/&?($var)=([\w+\s\b\.?\S])[^&]*/", "", $queryString);
if ($remove)
{
if (!is_array($remove))
$queryString = preg_replace("/&?$remove=([\w+\s\b\.?\S]+|)/", "", $queryString);
$queryString = preg_replace("/&?($remove)=([\w+\s\b\.?\S])[^&]*/", "", $queryString);
else
foreach ($remove as $rm)
{
$queryString = preg_replace("/&?$rm=([\w+\s\b\.?\S]+|)/", "", $queryString);
$queryString = preg_replace("/&?($rm)=([\w+\s\b\.?\S])[^&]*/", "", $queryString);
}
}

View file

@ -220,7 +220,7 @@ function insert_exif_data( $photo ) {
$insert_id = $db->insert( tbl('photosmeta'), array('photo_id','meta_name','meta_value'), array($ph['photo_id'],'exif_data',"|no_mc|$jexif") );
if ( $insert_id ) {
/* update photo has_exif to yes, so we know that this photo has exif data */
$db->update( tbl($cbphoto->p_tbl), array('exif_data'), array('yes'), " photo_id = '".$ph['photo_id']."' " );
$db->update( tbl($cbphoto->p_tbl), array('has_exif'), array('yes'), " photo_id = '".$ph['photo_id']."' " );
return $insert_id;
}
@ -491,7 +491,7 @@ function cbphoto_pm_action_link_filter( $links ) {
global $photo, $cbphoto;
if ( ( $photo['exif_data'] == 'yes' && $photo['view_exif'] == 'yes' ) || ( $photo['userid'] == userid() && $photo['exif_data'] == 'yes' ) ) {
if ( ( $photo['has_exif'] == 'yes' && $photo['view_exif'] == 'yes' ) || ( $photo['userid'] == userid() && $photo['has_exif'] == 'yes' ) ) {
$links[] = add_photo_action_link( lang('EXIF Data'), $cbphoto->photo_links( $photo, 'exif_data' ), 'camera' );
}
@ -820,12 +820,19 @@ function join_collection_table() {
global $cbcollection, $cbphoto;
$c = tbl ($cbcollection->section_tbl ) ; $p = tbl('photos');
$join = ' LEFT JOIN '.( $c ).' ON '.( $p.'.collection_id' ). ' = '.( $c.'.collection_id' );
$alias = ", $p.userid as userid, $p.views as views, $p.allow_comments as allow_comments, $p.allow_rating as allow_rating, $p.total_comments as total_comments, $p.date_added as date_added, $p.rating as rating, $p.rated_by as rated_by, $p.voters as voters, $p.featured as featured, $p.broadcast as broadcast, $p.active as active";
$alias .= ", $c.collection_name as collection_name, $c.userid as cuserid, $c.views as cviews, $c.allow_comments as callow_comments, $c.allow_rating as callow_rating, $c.total_comments as ctotal_comments, $c.date_added as cdate_added, $c.rating as crating, $c.rated_by as crated_by, $c.voters as cvoters, $c.featured as cfeatured, $c.broadcast as cbroadcast, $c.active as cactive, $c.cover_photo";
//$alias = ", $p.userid as userid, $p.views as views, $p.allow_comments as allow_comments, $p.allow_rating as allow_rating, $p.total_comments as total_comments, $p.date_added as date_added, $p.rating as rating, $p.rated_by as rated_by, $p.voters as voters, $p.featured as featured, $p.broadcast as broadcast, $p.active as active";
//$alias .= ", $c.collection_name as collection_name, $c.userid as cuserid, $c.views as cviews, $c.allow_comments as callow_comments, $c.allow_rating as callow_rating, $c.total_comments as ctotal_comments, $c.date_added as cdate_added, $c.rating as crating, $c.rated_by as crated_by, $c.voters as cvoters, $c.featured as cfeatured, $c.broadcast as cbroadcast, $c.active as cactive, $c.cover_photo";
$alias = ", $c.collection_name, $c.cover_photo, $c.category";
return array( $join, $alias );
}
/**
* This function creates LEFT for meta data
*/
function join_meta_details() {
}
/**
* This function return all photos that are avatars
*
@ -1084,14 +1091,24 @@ function display_manager_links( $photo, $front_end = false ) {
$url = $url['link'] ? $url['link'] : $link['link'];
}
if ( $_SERVER['QUERY_STRING'] && strpos( $url, '.php') === false ) {
if ( $_SERVER['QUERY_STRING'] && strpos( $url, '.php') === false && strpos($url,'?') !== false ) {
// QUERY_STRING exists and $url does not have .php
// append QUERY_STRING before $url
$url = ltrim( $url, '?' ); // removing the ? from start of string
parse_str( $url, $variables ); // changing $url query string to array
parse_str( $_SERVER['QUERY_STRING'], $server_variables );
if ( $variables ) {
$query_string_variables = array_keys( $variables ); // extracting only names of variables
$query_string = queryString( null, $query_string_variables );
$server_string_variables = array_keys( $server_variables );
if ( $query_string_variables ) {
$query_string_variables = ( array_merge( $query_string_variables, $server_string_variables ) );
$query_string_variables = array_unique( $query_string_variables );
$query_string_variables = array_diff( $query_string_variables, array('omo') );
//pr( $query_string_variables, true );
$query_string = queryString( null, $query_string_variables );
}
//echo $query_string."<br/>";
$url = $query_string.$url;
}
}

View file

@ -1356,4 +1356,23 @@ function display_manager_orders( $type = 'video', $display = 'unselected' ) {
return false;
}
function return_object_order( $type = null ) {
if ( is_null( $type) ) {
return false;
}
$orders = object_manager_orders($type);
if ( $orders ) {
$current_order = $_GET['omo'] ? mysql_clean( $_GET['omo'] ) : (int)0;
if ( !$orders[$current_order] ) {
$current_order = 0;
}
if ( $orders[ $current_order]['order'] ) {
return $orders[ $current_order]['order'];
}
}
return false;
}
?>

View file

@ -23,7 +23,7 @@ add_thumb_size('original');
* Register metas
*/
$cbvid->register_meta('thumbs');
$cbvid->register_meta('thumbs_options');
/**
* Registering Photo Embed codes
*/
@ -63,7 +63,7 @@ function _edit_collection_link( $photo ) {
*/
function _view_exif_data_link( $photo ) {
global $cbphoto;
if ( ( $photo['exif_data'] == 'yes' && $photo['view_exif'] == 'yes' ) || ( $photo['userid'] == userid() && $photo['exif_data'] == 'yes' ) ) {
if ( ( $photo['has_exif'] == 'yes' && $photo['view_exif'] == 'yes' ) || ( $photo['userid'] == userid() && $photo['has_exif'] == 'yes' ) ) {
return $cbphoto->photo_links( $photo, 'exif_data' );
}
return false;
@ -123,8 +123,28 @@ function _set_cover_photo_callback() {
}
}
/**
* Make profile item link for photo
*/
function _make_profile_item_link( $photo ) {
if ( !userid() ) {
return false;
}
global $userquery;
if ( !$userquery->isProfileItem($photo['photo_id'],'p') ) {
$data = array('title' => lang('Make profile item'), 'link' => '?makeProfileItem='.$photo['photo_id'].'&type=p' );
} else {
$data = array('title' => lang('Remove profile item'), 'link' => '?removeProfileItem='.$photo['photo_id'].'&type=p' );
}
return $data;
}
add_photo_manager_link( lang('Exif data'), '_view_exif_data_link', false, true );
add_photo_manager_link( lang('Edit collection'), '_edit_collection_link', false, true );
add_photo_manager_link( lang('Make profile item'), '_make_profile_item_link', false, true );
add_photo_manager_link( lang('Set as avatar'), '_manager_set_avatar_link', false, true );
add_photo_manager_link( lang('Make collection cover'), '_set_cover_photo_link', '_set_cover_photo_callback', true );

View file

@ -14,7 +14,7 @@ require 'includes/config.inc.php';
$userquery->logincheck();
$udetails = $userquery->get_user_details(userid());
assign('user',$udetails);
$order = tbl("collection_items").".date_added DESC";
//$order = tbl("collection_items").".date_added DESC";
$mode = $_GET['mode'];
$cid = mysql_clean($_GET['cid']);
@ -23,7 +23,7 @@ assign("mode",$mode);
$page = mysql_clean($_GET['page']);
$get_limit = create_query_limit($page,COLLPP);
$orders = get_collection_manager_orders();
$order = return_object_order('collection');
switch($mode)
{
@ -47,15 +47,6 @@ switch($mode)
e("selected_collects_del","m");
}
$order_id = $_GET['omo'] ? mysql_clean($_GET['omo']) : (int)0;
if ( !$orders[$order_id] ) {
$order = tbl('collections.date_added desc');
} else {
$order = $orders[$order_id]['order'];
}
$collectArray = array('user'=>userid(),"limit"=>$get_limit, 'order' => $order );
if(get('query') != '')
{
@ -127,14 +118,7 @@ switch($mode)
$collection = $cbcollection->get_collection($cid);
$type = clean($_GET['type']);
$type = confirm_collection_type( $type );
$orders = get_photo_manager_orders();
$order_id = $_GET['omo'] ? mysql_clean($_GET['omo']) : (int)0;
if ( !$orders[$order_id] ) {
$order = tbl('photos.date_added desc');
} else {
$order = $orders[$order_id]['order'];
}
$order = return_object_order('photo');
photo_manager_link_callbacks();

View file

@ -21,15 +21,13 @@ $mode = $_GET['mode'];
$page = mysql_clean($_GET['page']);
$get_limit = create_query_limit($page,MAINPLIST);
assign('queryString',queryString(NULL,array('type',
'makeProfileItem',
'removeProfileItem',
'delete_photo')));
photo_manager_link_callbacks();
$orders = object_manager_orders('photo');
$order = return_object_order('photo');
switch($mode)
{
@ -67,13 +65,6 @@ switch($mode)
{
$userquery->removeProfileItem();
}
$po = $_GET['omo'] ? mysql_clean($_GET['omo']) : (int)0;
if ( !$orders[$po] ) {
$order = tbl('photos.date_added desc');
} else {
$order = $orders[$po]['order'];
}
$photo_arr = array("user"=>userid(),"limit"=>$get_limit, 'order'=> $order );

View file

@ -176,11 +176,40 @@ How this should work
});
// Bind click event on save button to update photo
form_template.find('.save, .save-video').on( 'click', function(){
form_template.find('.save, .save-video').on( 'click', function() {
var save_button = $('.save, .save-video');
if ( save_button.hasClass('disabled') || save_button.attr('disabled') == 'disabled' ) {
return;
}
var formdata = form_template.find('form').serialize();
formdata += '&updatePhoto=true';
alert( formdata );
var update_response = form_template.find('.update-response');
if ( update_response.css('display') == 'block' ) {
update_response.hide();
}
$(this).addClass('disabled').attr('disabled','disabled');
// Disabling form fields
disable_form_inputs( 'form-'+file.id );
amplify.request('photo_upload', formdata, function ( data ){
save_button.removeClass('disabled').removeAttr('disabled');
// Enabling form fields
enable_form_inputs( 'form-'+file.id );
if ( data.error ) {
update_response.html('<div class="alert alert-error">'+data.error+'</div>');
} else if ( data.success ) {
update_response.html('<div class="alert alert-success">'+data.success+'</div>');
}
update_response.show();
});
});
});

View file

@ -3,7 +3,7 @@
<a href="{$cbphoto->photo_links($photo,'view_photo')}" class="cbv3-index-photo">
<div class="index-photo">
<span>
{get_photo details=$photo size='t' output='html' style='max-width:none' height='140'}
{get_photo details=$photo size='m' output='html' style='max-width:none' height='140'}
</span>
</div>
<div class="index-photo large display-none">
@ -62,16 +62,13 @@
{/if}
{if $display_method == 'view_channel'}
<div class="user-photo-block">
<div class="user-photo-block popover-class" rel="popover" data-title="{$photo.collection_name}" data-content="{$photo.photo_description|truncate:100} <div class='popover-footer'> {name($photo)} <div class='pull-right'>{$photo.views|number_format} {lang code='views'}</div> </div>" data-placement="left" data-trigger="hover" data-delay="500">
<a href="{view_photo_link($photo)}">
<div class="user-photo-thumb">
{get_photo details=$photo class='cbv3-center-image' output='html' size='m'}
</div>
<div class="user-photo-details">
<h5 class="title"><a href="{collection_links($photo,'vc')}">{$photo.collection_name}</a></h5>
<div class="info">
<a href="{$userquery->profile_link($photo)}">{name($video)}</a>
<div class="pull-right">{$video.views|number_format} {lang code='views'}</div>
</div>
{$pd=json_decode($photo.photo_details,true)}
{$psize='m'}
<img src="{get_photo details=$photo size=$psize}" width="{$pd.$psize.width}" height="{$pd.$psize.height}" alt="{$photo.photo_title}" />
</div>
</a>
</div>
{/if}

View file

@ -1,26 +1,28 @@
{$feed=feed($feed)}
<div class="group-feed group-feed-{$feed.feed_id} feed" id="feed-{$feed.feed_id}">
<div class="feed-author">
<img src="{$userquery->avatar($feed.user,'small')}" />
<div class="{$feed.content_type}-feed {$feed.content_type}-feed-{$feed.feed_id} feed clearfix" id="feed-{$feed.feed_id}">
<div class="feed-header">
<div class="feed-author">
<a href="{$userquery->profile_link($feed.user)}"><img src="{avatar uid=$feed.user.userid size='small'}" /></a>
<span class="feed-author-name"><a href="{$userquery->profile_link($feed.user)}">{name($feed.user)}</a></span>
</div>
<div class="feed-time">{what_time($feed.time)} <i class="icon-globe icon-v3"></i></div>
</div>
<div class="feed-context">
<div class="feed-author-name">
{name($feed.user)}
</div>
{if $feed.message}
<div class="feed-message">
<div class="feed-message{if !$feed.content} feed-message-only{/if}">
{feed_message($feed)}
</div>
{/if}
{if $feed.content}
{$content=$feed.content}
<div class="feed-content content-{$content.type}">
<div class="feed-content content-{$feed.content_type} clearfix">
{if $content.thumb}
<div class="content-thumb">
<img src="{$content.thumb}" />
<a href="{$content.link}"><img src="{$content.thumb}" /></a>
</div>
{/if}
<div class="content-details">
@ -51,8 +53,9 @@
{if $cbfeeds->is_liked($feed.likes)}
{$liked='yes'}
{/if}
<div class="feed-options">
<div class="feed-action-buttons">
<div class="feed-options clearfix">
<div class="feed-triangle"></div>
<div class="feed-action-buttons feed-row">
<a onclick="like_feed('{$feed.feed_id}');"
id="likeable-{$feed.feed_id}"
class="feed-like-link"
@ -72,19 +75,13 @@
</a> &#8226;
<a href="javascript:void(0);" onclick="$('#add-comment-{$feed.feed_id}').focus()">Comment</a> &#8226; Share
</div>
<div class="feed-time">
{what_time($feed.time)} <i class="icon-globe icon-v3"></i>
</div>
<div class="clearfix"></div>
</div>
<div class="feed-interaction">
<div class="feed-triangle"></div>
<div class="feed-likes" id="like-phrase-{$feed.feed_id}">
<div class="feed-likes feed-row" id="like-phrase-{$feed.feed_id}">
{get_likes_phrase($feed.likes,$feed.likes_count,$liked)}
</div>
@ -101,7 +98,7 @@
<div id="new_comment_placeholder_{$feed.feed_id}"></div>
<div class="feed-comment">
<div class="feed-comment feed-row">
<div class="feed-comment-author">
<img src="{$userquery->avatar($userquery->udetails,'small')}" />
</div>

View file

@ -1,4 +1,4 @@
<div class="feed-comment">
<div class="feed-comment feed-row">
<div class="feed-comment-author">
<img src="{$userquery->avatar($comment,'small')}" />

View file

@ -34,7 +34,7 @@
<img src="{$imageurl}/icons/photo-uploading.png" class="no-photo-preview display-block" />
</div>
</div>
<div class="update-response display-none"></div>
<div class="btn-group">
<a class="btn form-group form-btn btn-primary active"data-toggle="tab" data-target="#photo_details_box">{lang code='Photo Details'}</a>
<a class="btn form-group form-btn btn-primary disabled"data-toggle="tab" data-target="#photo_options_box">{lang code='Photo Options'}</a>

View file

@ -4,4 +4,8 @@
{else}
<li><a href="{$userquery->profile_link($user)}"><img src="{avatar uid=$user.userid size='small'}" width="25" class="marginR5" /> {$user.username}</a></li>
{/if}
{/if}
{if $display_method == 'user_contacts'}
<li><a href="{$userquery->profile_link($user)}"><img src="{avatar details=$user}" width="60" height="60" /></a> <a href="{$userquery->profile_link($user)}">{name($user)}</a></li>
{/if}

View file

@ -62,17 +62,12 @@
{/if}
{if $display_method == 'view_channel'}
<div class="user-video-block">
<div class="user-video-block popover-class" rel="popover" data-title="{$video.title}" data-content="{$video.description|truncate:100} <div class='popover-footer'> {name($video)} <div class='pull-right'>{$video.views|number_format} {lang code='views'}</div> </div>" data-placement="left" data-trigger="hover" data-delay="500">
<a href="{videoLink vdetails=$video}">
<div class="user-video-thumb">
<img src="{getThumb vdetails=$video}" class="cbv3-center-image" />
<span class="duration">{$video.duration|setTime}</span>
</div>
<div class="user-video-details">
<h5 class="title"><a href="{videoLink vdetails=$video}">{$video.title}</a></h5>
<p class="description cbv3-scroller">{$video.description|description}</p>
<div class="info">
<a href="{$userquery->profile_link($video)}">{name($video)}</a>
<div class="pull-right">{$video.views|number_format} {lang code='views'}</div>
</div>
</div>
</a>
</div>
{/if}

View file

@ -1,79 +1,9 @@
{$feed=feed($feed)}
<div class="view-channel-box">
<div class="view-channel-box feed-box">
<div class="view-channel-box-content">
{$single_feed=get_template('single_feed','path')}
{include file=$single_feed feed=$feed}
<div class="user-feed-box">
<div class="user-feed-header">
<div class="user-feed-avatar">
<a href="{$userquery->profile_link($feed.user)}">
<img src="{$userquery->avatar($feed.user,'small')}" />
</a></div>
<a href="{$userquery->profile_link($feed.user)}" class="username">{name($feed.user)}</a>
<div class="user-feed-time">{what_time($feed.time)}</div>
</div>
{$liked='no'}
{if $cbfeeds->is_liked($feed.likes)}
{$liked='yes'}
{/if}
<div class="user-feed-cotent">
{if $feed.message}
<div class="feed-message">
{feed_message($feed)}
</div>
{/if}
</div>
<div class="user-feed-action-links">
<a onclick="like_feed('{$feed.feed_id}');"
id="likeable-{$feed.feed_id}"
class="feed-like-link"
{if $liked=='yes'}
data-toggle-text="{lang code='Like'}"
data-like="no"
{else}
data-toggle-text="{lang code='Unlike'}"
data-like="yes"
{/if}
>
{if $liked=='yes'}
{lang code='Unlike'}
{else}
{lang code='Like'}
{/if}
</a> &#8226;
<a href="javascript:void(0);" onclick="$('#add-comment-{$feed.feed_id}').focus()">Comment</a> &#8226; Share
</div>
<div class="user-feed-box-row user-feed-likes" id="like-phrase-{$feed.feed_id}">
{get_likes_phrase($feed.likes,$feed.likes_count,$liked)}
</div>
<div class="user-feed-comments">
<div class="user-feed-box-row clearfix">
<div class="user-avatar"><img src="{avatar details=$u size='small'}" width="32" height="32" /></div>
<div class="user-feed-comment">
<div class="comment"><a href="#"><strong>{name($u)}</strong></a> Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</div>
<span class="user-feed-comment-time">March 11, 2012</span>
</div>
</div>
{if $feed.comments_count > 0}
{$feed_comments=feed_comments($feed)}
{foreach $feed_comments as $comment}
{$comment_tpl=get_template('single_feed_comment','path')}
{include file=$comment_tpl comment=$comment}
{/foreach}
{/if}
<div class="user-feed-box-row clearfix">
<div class="user-avatar"><img src="{avatar details=$u size='small'}" width="32" height="32" /></div>
<div class="user-feed-comment">
<textarea></textarea>
</div>
</div>
</div>
</div>
</div>
</div> <!-- view-channel-box end -->

View file

@ -55,8 +55,8 @@
<tr>
<td class="text-center"><input type="checkbox" class="check-item" name="check_photo[]" value="{$photo.photo_id}" /></td>
<td>
<div class="object-manager-thumb">
<img src="{get_photo details=$photo size='m'}" />
<div class="object-manager-thumb image-not-loaded-background">
<img src="{get_photo details=$photo size='m'}" class="cbv3-center-image" />
</div>
<div class="object-manager-content">
<a href="edit_photo.php?photo={$photo.photo_id}" class="object-manager-title">{$photo.photo_title}</a>
@ -237,7 +237,7 @@
{display_manager_links($avatar)}
<li class="divider"></li>
<li><a href="#" onclick="cb_confirm('Delete Photo', 'Are you sure you want to delete this photo ? This action will delete photo permanently.', function(){
window.location = '?mode={$mode}&delete_photo={$photo.photo_id}';
window.location = '?mode={$mode}&delete_photo={$avatar.photo_id}';
});">Delete</a></li>
</ul>
</li>

View file

@ -0,0 +1,42 @@
{lang code='channel' assign='object_type'}
{include file="$style_dir/global_header.html"}
<body class="relative view_channel">
{display_user_custom_background( $u )}
<div class="container view-channel-container">
{include_template_file file="header.html" }
<div id="global-container" class="relative clearfix">
{include file="$style_dir/message.html"}
<div class="view-channel-box user-info-box clearfix">
<a href="{$userquery->profile_link($u)}"><img src="{avatar size='small' details=$u}" width="30" height="30" /> {name($u)}</a>
</div>
<div class="view-channel-box clearfix">
Here links to other pages will be displayed, for example subscriptions and subscribers
</div>
<div class="view-channel-box clearfix">
{if $mode == '' || $mode == 'contacts'}
<div class="view-channel-box-header"><h4>{lang code="%s's Contacts"|sprintf:$u.username}</h4></div>
<div class="view-channel-box-content clearfix">
</div>
{else}
<div class="view-channel-box-header"><h4>{$heading}</h4></div>
<div class="view-channel-box-content clearfix">
{if $userSubs}
<ul class="user-contacts">
{foreach $userSubs as $sub}
{include_template_file file='blocks/user.html' user=$sub display_method='user_contacts'}
{/foreach}
</ul>
{else}
<p class="alert alert-large">{$no_subs_found}</p>
{/if}
</div>
{/if}
<div class="view-channel-box-footer">
this is footer
</div>
</div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,29 @@
{lang code='channel' assign='object_type'}
{include file="$style_dir/global_header.html"}
<body class="relative view_channel">
{display_user_custom_background( $u )}
<div class="container view-channel-container">
{include_template_file file="header.html" }
<div id="global-container" class="relative clearfix">
{include file="$style_dir/message.html"}
<div class="view-channel-box user-info-box clearfix">
<a href="{$userquery->profile_link($u)}"><img src="{avatar size='small' details=$u}" width="30" height="30" /> {name($u)}</a>
</div>
<div class="view-channel-box clearfix">
Here links to other pages will be displayed, for example photos and collections
</div>
<div class="view-channel-box clearfix">
<div class="view-channel-box-header"><h4>{$the_title}</h4></div>
<div class="view-channel-box-content clearfix">
{foreach $photos as $photo}
{include_template_file file='blocks/photo.html' photo=$photo}
{/foreach}
</div>
<div class="view-channel-box-footer">
this is footer
</div>
</div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,29 @@
{lang code='channel' assign='object_type'}
{include file="$style_dir/global_header.html"}
<body class="relative view_channel">
{display_user_custom_background( $u )}
<div class="container view-channel-container">
{include_template_file file="header.html" }
<div id="global-container" class="relative clearfix">
{include file="$style_dir/message.html"}
<div class="view-channel-box user-info-box clearfix">
<a href="{$userquery->profile_link($u)}"><img src="{avatar size='small' details=$u}" width="30" height="30" /> {name($u)}</a>
</div>
<div class="view-channel-box clearfix">
Here links to other pages will be displayed, for example photos and collections
</div>
<div class="view-channel-box clearfix">
<div class="view-channel-box-header"><h4>{$the_title}</h4></div>
<div class="view-channel-box-content clearfix">
{foreach $videos as $video}
{include_template_file file='blocks/video.html' video=$video}
{/foreach}
</div>
<div class="view-channel-box-footer">
this is footer
</div>
</div>
</div>
</div>
</body>
</html>

View file

@ -31,7 +31,7 @@
<div class="view-channel-box clearfix">
<ul class="view-channel-top-row-items">
<li>
<a href="#">
<a href="{link name='user_contacts'}{$u.username}">
<div class="view-channel-top-row-item-block image-not-loaded-background six-blocks">
{foreach from=$user_contacts item=contact}
<div class="top-row-content-block"><img src="{avatar uid=$contact.userid size='small'}" /></div>
@ -41,7 +41,7 @@
</a>
</li>
<li>
<a href="#">
<a href="{link name='user_videos'}{$u.username}">
<div class="view-channel-top-row-item-block image-not-loaded-background one-block">
{if $user_videos}
{$single_video_index=array_rand($user_videos)}
@ -52,7 +52,7 @@
</a>
</li>
<li>
<a href="#">
<a href="{link name='user_photos'}{$u.username}">
<div class="view-channel-top-row-item-block image-not-loaded-background one-block">
{if $user_photos}
{$single_photo_index=array_rand($user_photos)}
@ -63,7 +63,7 @@
</a>
</li>
<li>
<a href="#">
<a href="{link name='user_subscribers'}{$u.username}">
<div class="view-channel-top-row-item-block image-not-loaded-background">
<strong class="user-subscribers">{$u.subscribers}</strong>
</div>
@ -74,36 +74,34 @@
</div>
<div class="view-channel-column-left">
<div class="new_post_box">
<div align="left" class="post_btns btn-group">
<a class="btn btn-mini active" data-toggle="modal" data-target="#add-topic-modal">
<i class="icon-comment"></i> Post Status</a>
<a class="btn btn-mini" data-toggle="modal" data-target="#add-topic-modal">
<i class="icon-list"></i> Post Topic</a>
<a class="btn btn-mini" href="http://localhost/cb-sf/upload/add_group_videos.php?url=one_piece">
<i class="icon-film"></i> Post Video</a>
<a class="btn btn-mini"><i class="icon-picture"></i> Post Photo</a>
</div>
<div class="new_post_container padding_box" id="new_post_container">
<div class="post_message_container">
<textarea class="post_message" placeholder="Post something..." rows="1" style="overflow: hidden; word-wrap: break-word; resize: none; height: 20px;"></textarea>
</div>
<div id="post_content"></div>
<div class="post_options display-none" align="right" id="post_options" style="display: block;">
<button class="btn btn-primary btn-mini" data-type-id="5" data-type="g" id="add_new_post" data-loading-text="Loading...">Post</button>
<div class="view-channel-box">
<div class="new_post_box">
<ul class="post_btns clearfix">
<li class="active"><a href="#"><i class="icon-comment"></i> Status</a></li>
<li><a href="#"><i class="icon-film"></i> Video</a></li>
<li><a href="#"><i class="icon-picture"></i> Photo</a></li>
</ul>
<div class="new_post_container padding_box" id="new_post_container">
<div class="post_message_container">
<textarea class="post_message" id="post_message" placeholder="Post ..." rows="1" style="overflow: hidden; word-wrap: break-word; resize: none; height: 20px;"></textarea>
</div>
<div id="post_content"></div>
<div class="post_options">
<button class="btn btn-primary btn-mini" data-type-id="{$u.userid}" data-type="u" id="add_new_post" data-loading-text="Loading...">Post</button>
</div>
</div>
</div>
</div>
</div>
{if $feeds}
{foreach $feeds as $feed}
{include_template_file file='blocks/view_channel/feed.html' feed=$feed}
{/foreach}
{else}
<div class="alert">{lang code='No feeds were found'}</div>
<div class="view-channel-box">
<p class="text-center margin0 text-error">{lang code='No feeds were found'}</p>
</div>
{/if}
</div>
@ -113,7 +111,7 @@
<div class="view-channel-box-header">
<h4>Videos <small>({$u.total_videos|number_format})</small></h4>
<div class="view-channel-box-header-right">
<a href="#">See All</a>
<a href="{link name='user_videos'}{$u.username}">See All</a>
</div>
</div>
<div class="view-channel-box-content clearfix">
@ -124,11 +122,11 @@
{/if}
</div>
</div>
<div class="view-channel-box">
<div class="view-channel-box user-photos-block">
<div class="view-channel-box-header">
<h4>Photos <small>({$u.total_photos|number_format})</small></h4>
<div class="view-channel-box-header-right">
<a href="#">See All</a>
<a href="{link name='user_photos'}{$u.username}">See All</a>
</div>
</div>
<div class="view-channel-box-content clearfix">

View file

@ -129,7 +129,8 @@ function cbv3_photo_tagger_options( $options ) {
$options['labelWrapper'] = 'photo-tags';
$options['buttonWrapper'] = 'photo-tagger-button';
$options['addIcon'] = false;
$options['autoComplete'] = true;
return $options;
}

View file

@ -1380,4 +1380,73 @@ padding-bottom: 5px; margin-bottom: 5px ;font-weight: bold; font-size: 12px; pos
cursor: pointer;
border-radius: 3px; -moz-border-radius: 2px; -webkit-border-radius: 3px;
display: inline-block; padding: 2px; margin: 3px; border: 2px solid transparent}
.selectable-radio.active, .selectable-radio:hover{border:2px solid #006699}
.selectable-radio.active, .selectable-radio:hover{border:2px solid #006699}
.popover-inner {
position: relative;
}
.popover-title {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis
}
.popover-content {
font-size: 12px;
}
.popover-footer {
background: #F7F7F7;
border-top: 1px solid #EBEBEB;
border-radius: 0px 0px 5px 5px;
-webkit-border-radius: 0px 0px 5px 5px;
-moz-border-radius: 0px 0px 5px 5px;
padding: 5px 8px 4px;
margin: 9px -14px -9px;
box-shadow: inset 0px 1px 0px 0px white;
font-size: 11px;
}
.popover-footer::before, .popover-footer::after {
display: table;
line-height: 0px;
content: "";
}
.popover-footer::after {
clear: both;
}
.duration {
position: absolute;
display: block;
bottom: 2px;
right: 2px;
font-size: 11px;
background: rgba(0,0,0,0.6);
padding: 2px 5px;
color: white;
line-height: 14px;
border-radius: 3px;
}
.duration.left {
right: auto;
left: 2px;
}
.duration.top {
bottom: auto;
top: 2px;
}
.duration.right {
right: 2px;
left: auto;
}
.duration.bottom {
top: auto;
bottom: 2px;
}

View file

@ -1,35 +1,51 @@
.feed
{
width: 570px;
line-height: 20px;
position: relative;
}
.feed .feed-author{width: 42px; height: 42px; overflow: hidden;
border: 1px solid #000; float: left; margin-right: 12px}
.feed .feed-author{width: 42px; }
.feed .feed-context{float: left; width: 514px}
.feed .feed-context .feed-author-name{font-size: 12px; font-weight: bold; line-height: 12px}
.feed .feed-context .feed-message{font-size:12px }
.feed .feed-context .feed-content{
background-color: #f8f8f8;
border: 1px solid #c6c6c6;
border-radius: 3px;
box-shadow: 0px 1px 0px #fff;
padding: 5px; margin-top: 5px;
.view-channel-box.feed-box .view-channel-box-content {
margin-bottom: -19px;
}
.feed .feed-header {
display: block;
padding-bottom: 8px;
margin-bottom: 8px;
border-bottom: 1px solid #ccc;
position: relative;
}
.feed .feed-row { background-color: #EFEFEF; padding: 6px 8px; margin: 1px 0px 0px; font-size: 11px; }
.feed .feed-header .feed-author{ }
.feed .feed-header .feed-author-name{ font-size: 12px; font-weight: bold; line-height: 12px; vertical-align: top; display: inline-block; margin-left: 5px; }
.feed .feed-header .feed-time { font-size: 12px; color: #666; position: absolute; left: 48px; bottom: 8px; }
.feed .feed-header .feed-time .icon-globe { opacity: 0; margin-left: 2px; }
.feed .feed-context{ margin: 0px -11px; }
.feed .feed-context .feed-message{ font-size:13px; margin-bottom: 8px; padding-left: 13px; }
.feed .feed-context .feed-message-only { font-size:14px }
.feed .feed-context .feed-content{
background-color: whitesmoke;
position: relative;
padding-left: 135px;
font-size: 11px;
font-family: Tahoma;
line-height: 15px;
height: 90px;
line-height: 16px;
margin: 0px 11px;
border: solid #ccc;
border-width: 1px;
padding: 5px;
border-radius: 2px;
}
.feed .feed-context .feed-content .content-thumb{
position: absolute; left: 5px; overflow: hidden; height: 90px;
float: left;
height: 90px;
width: 120px;
margin-right: 6px;
}
.feed .feed-context .feed-content .content-thumb img{
max-width: 120px;
min-height: 100%;
}
.feed .feed-context .feed-content .content-title a,
@ -48,37 +64,40 @@
color: #5c5c5c
}
.feed .feed-options{font-size: 11px; color: #000; margin-top: 5px}
.feed .feed-options .feed-action-buttons{float: left;
display: inline-block; font-weight: bold}
.feed .feed-options{ margin-top: 10px; }
.feed .feed-options .feed-action-buttons{ padding: 3px 6px; color: #666; }
.feed .feed-options .feed-time{float: right;
display: inline-block}
.feed .feed-options .feed-time{float: right; display: inline-block}
.feed .feed-interaction{font-size: 11px; line-height: 15px; margin-bottom: 10px}
.feed .feed-interaction .feed-likes
{
background-color: #f8f8f8; margin-bottom: 1px;
background-color: #EFEFEF; margin-bottom: 1px;
padding: 6px; font-size: 11px; font-weight: bold;
}
.feed .feed-interaction .feed-triangle{
.feed .feed-triangle{
width: 0px;
height: 0px;
border-style: solid;
border-width: 0 6.5px 8px 6.5px;
border-color: transparent transparent #f8f8f8 transparent;
border-color: transparent transparent #EFEFEF transparent;
margin-left: 22px;
margin-bottom: -1px;
}
.feed .feed-comment {
font-size: 11px;
background-color: #f8f8f8; margin-bottom: 1px;
background-color: #EFEFEF; margin-bottom: 1px;
position: relative;
padding: 6px;
padding-left:43px;
}
.feed .feed-interaction > .feed-comment:last-child {
border-radius: 0px 0px 2px 2px;
}
.feed .feed-comment-author{
position: absolute; left: 6px; overflow: hidden;
}
@ -114,20 +133,12 @@
.new_post_container{
margin-left: 50px;
border: 1px solid #ccc;
border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 2px;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
background-color: #fff; margin-bottom: 5px
}
.new_post_container{
-webkit-border-top-left-radius: 0px !important;
-moz-border-radius-topleft: 0px !important;
border-top-left-radius: 0px !important;
}
.post_message_container{padding: 7px;}
.post_message{
@ -139,6 +150,41 @@
}
.post_message:focus{ box-shadow: none}
.new_post_box .post_btns {
margin: 0px; padding: 0px;
list-style: none; margin-bottom: 5px !important;
}
.new_post_box .post_btns li {
float: left;
padding:0px 0px;
margin-left: 20px;
}
.new_post_box .post_btns li:first-child {
margin-left: 0px;
}
.new_post_box .post_btns li a {
color: #333;
opacity: 0.5;
font-weight: bold;
}
.new_post_box .post_btns li a:hover {
text-decoration: none;
opacity: 1;
}
.new_post_box .post_btns li.active a {
opacity: 1;
}
.new_post_box .post_btns li a.active {
opacity: 1;
}
.new_post_box .post_btns .btn:last-child{
-webkit-border-top-right-radius: 3px !important;
-moz-border-radius-topright: 3px !important;
@ -160,21 +206,13 @@
.new_post_box .post_btns{margin-left: 50px; margin-bottom: -1px}
.post_options{
-webkit-border-bottom-right-radius: 4px;
-webkit-border-bottom-left-radius: 4px;
-moz-border-radius-bottomright: 4px;
-moz-border-radius-bottomleft: 4px;
border-bottom-right-radius: 4px;
border-bottom-left-radius: 4px;
background-color: #eee
background-color: #eee;
padding: 5px;
text-align: right;
}
.post_options .btn{padding-left: 20px; padding-right: 20px;
border-radius: 0px ; font-weight: bold;
-webkit-border-bottom-right-radius: 4px;
-moz-border-radius-bottomright: 4px;
border-bottom-right-radius: 4px;
border-radius: 2px; font-weight: bold;
}

View file

@ -10,6 +10,10 @@ body.view_channel .view-channel-container header {
margin-bottom: 25px;
}
body.view_channel .popover {
width: 250px;
}
body.view_channel .view-channel-container header:before, body.view_channel .view-channel-container header:after {
content: '';
position: absolute;
@ -538,7 +542,7 @@ a.playlist .playlist-items-thumb.playlist-4-items .item-thumb img {
.user-videos .user-video-thumb {
height: 150px; background: whitesmoke;
overflow: hidden;
overflow: hidden; position: relative;
}
.user-videos .user-video-thumb img {
@ -560,7 +564,7 @@ a.playlist .playlist-items-thumb.playlist-4-items .item-thumb img {
}
.view-channel-column-left {
width: 480px;
width: 500px;
float: left;
}
@ -583,6 +587,18 @@ a.playlist .playlist-items-thumb.playlist-4-items .item-thumb img {
margin-bottom: 10px;
}
.view-channel-box .view-channel-box-footer {
background: #e1ebf3;
border-top: 1px solid #CDE3F6;
box-shadow: inset 0px 1px 0px whitesmoke;
padding: 10px;
border-radius: 0px 0px 2px 2px;
-moz-border-radius: 0px 0px 2px 2px;
-webkit-border-radius: 0px 0px 2px 2px;
-o-border-radius: 0px 0px 2px 2px;
margin: 10px -11px -9px;
}
.view-channel-box .view-channel-box-header .view-channel-box-header-right {
position: absolute;
right: 0px;
@ -857,7 +873,7 @@ a.playlist .playlist-items-thumb.playlist-4-items .item-thumb img {
z-index: 500;
}
.view-channel-box.user-videos-block .view-channel-box-content {
.view-channel-box.user-videos-block .view-channel-box-content, .view-channel-box.user-photos-block .view-channel-box-content {
margin-bottom: -10px;
}
@ -874,4 +890,29 @@ a.playlist .playlist-items-thumb.playlist-4-items .item-thumb img {
.user-video-block .user-video-thumb img, .user-photo-block .user-photo-thumb img {
max-width: none;
width: 100%;
}
ul.user-contacts {
margin: 0px; padding: 0px;
list-style: none;
}
ul.user-contacts li {
width: 48%;
display: inline-block;
border-bottom: 1px solid #ccc;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-o-box-sizing: border-box;
padding: 12px;
font-weight: bold;
}
ul.user-contacts li:nth-child(odd) {
margin-right: 38px;
}
ul.user-contacts li img {
margin-right: 10px;
}

View file

@ -37,6 +37,7 @@ if($udetails)
assign('p',$userquery->get_user_profile($udetails['userid']));
assign('mode',$mode);
assign('friends',$userquery->get_contacts($udetails['userid'],0,"yes"));
subtitle(sprintf(lang("users_contacts"),$udetails['username']));
}
break;
@ -44,7 +45,10 @@ if($udetails)
{
assign('mode',$mode);
assign('heading',sprintf(lang('user_subscriptions'),$udetails['username']));
assign('the_title',sprintf(lang('user_subscriptions'),$udetails['username']));
assign('userSubs',$userquery->get_user_subscriptions($udetails['userid'],NULL));
assign('no_subs_found', lang('User has no subscriptions') );
subtitle(sprintf(lang('user_subscriptions'),$udetails['username']));
}
break;
@ -52,12 +56,14 @@ if($udetails)
{
assign('mode',$mode);
assign('heading',sprintf(lang('users_subscribers'),$udetails['username']));
assign('the_title',sprintf(lang('users_subscribers'),$udetails['username']));
assign('userSubs',$userquery->get_user_subscribers_detail($udetails['userid'],NULL));
assign('no_subs_found', lang('User has no subscribers') );
subtitle(sprintf(lang('users_subscribers'),$udetails['username']));
}
break;
}
subtitle(sprintf(lang("users_contacts"),$udetails['username']));
}else{
e(lang("usr_exist_err"));
$Cbucket->show_page = false;

View file

@ -86,7 +86,7 @@ if ( $cbcollection->is_viewable( $cid ) ) {
$photo = array_merge( $photo, $info[0] );
if ( is_photo_viewable( $photo ) ) {
increment_views( $photo['photo_id'], 'photo' );
assign( 'object', $photo );
assign( 'user', $userquery->get_user_details( $photo['userid'] ) );
assign( 'c', $collect );
@ -94,7 +94,11 @@ if ( $cbcollection->is_viewable( $cid ) ) {
subtitle( $photo['photo_title'] . ' &laquo; ' . $collect['collection_name'] );
register_photo_private_message_field( $photo );
$_next = $cbphoto->collection->get_next_prev_item( $photo['ci_id'], $photo['collection_id'], 'next' );
assign( 'next', $_next[0] );
$_prev = $cbphoto->collection->get_next_prev_item( $photo['ci_id'], $photo['collection_id'], 'prev' );
assign( 'prev', $_prev[0] );
} else {
cb_show_page( false );
}