Added : Sub-categories

Fixed : Featured Channels on Channels page
Fixed : autoPlay typo in player.html
Fixed : Made CBv2 Template compatible with Sub-Categories
Fixed : Related Videos
Fixed : HQ Videos with other players
This commit is contained in:
Fawaz 2010-08-06 11:42:41 +00:00
parent 2fec544140
commit 0448cc4d69
12 changed files with 344 additions and 28 deletions

View file

@ -6,4 +6,18 @@ INSERT INTO cb_config (name,value) VALUES
('smtp_user','user@myserver.com'), ('smtp_user','user@myserver.com'),
('smtp_pass','password'), ('smtp_pass','password'),
('smtp_auth','yes'), ('smtp_auth','yes'),
('smtp_port','26'); ('smtp_port','26');
ALTER TABLE `cb_video_categories` ADD `parent_id` INT( 5 ) NOT NULL DEFAULT '0' AFTER `category_id`
INSERT INTO `clipbucket_svn`.`cb_config` (
`configid` ,
`name` ,
`value`
)
VALUES (
NULL , 'use_subs', '0'
);

View file

@ -42,6 +42,12 @@ if(isset($_GET['delete_category'])){
$cats = $cbvid->get_categories(); $cats = $cbvid->get_categories();
$pid = $cbvid->get_category_field($_GET['category'],'parent_id');
if($pid)
$selected = $pid;
$parent_cats = $cbvid->admin_area_cats($selected);
//Updating Category Order //Updating Category Order
@ -62,6 +68,7 @@ if(isset($_POST['update_order']))
//Assing Category Values //Assing Category Values
assign('category',$cats); assign('category',$cats);
assign('parent_cats',$parent_cats);
assign('total',$cbvid->total_categories()); assign('total',$cbvid->total_categories());
subtitle("Video Category Manager"); subtitle("Video Category Manager");

View file

@ -55,6 +55,7 @@ if(isset($_POST['update'])){
'default_country_iso2', 'default_country_iso2',
'default_time_zone', 'default_time_zone',
'disallowed_usernames', 'disallowed_usernames',
'use_subs',
'embedUpload', 'embedUpload',
'email_verification', 'email_verification',

View file

@ -28,6 +28,15 @@
<td valign="top" class="td_body">Category Description*</td> <td valign="top" class="td_body">Category Description*</td>
<td class="td_body"><textarea name="desc" id="desc" cols="33" rows="5">{'desc'|post_form_val}</textarea></td> <td class="td_body"><textarea name="desc" id="desc" cols="33" rows="5">{'desc'|post_form_val}</textarea></td>
</tr> </tr>
<tr>
<td valign="top" class="td_body">Parent Category</td>
<td class="td_body">
<select name="parent_cat" id="parent_cat">
<option value="0">None</option>
{$parent_cats}
</select>
</td>
</tr>
<tr> <tr>
<td valign="top" class="td_body">Make Default Category</td> <td valign="top" class="td_body">Make Default Category</td>
<td class="td_body"><p> <td class="td_body"><p>
@ -72,6 +81,15 @@
<td valign="top" class="td_body">Category Description*</td> <td valign="top" class="td_body">Category Description*</td>
<td class="td_body"><textarea name="desc" id="desc" cols="33" rows="5">{$cat_details.category_desc}</textarea></td> <td class="td_body"><textarea name="desc" id="desc" cols="33" rows="5">{$cat_details.category_desc}</textarea></td>
</tr> </tr>
<tr>
<td valign="top" class="td_body">Parent Category</td>
<td class="td_body">
<select name="parent_cat" id="parent_cat">
<option value="0">None</option>
{$parent_cats}
</select>
</td>
</tr>
<tr> <tr>
<td valign="top" class="td_body">Make Default Category</td> <td valign="top" class="td_body">Make Default Category</td>
<td class="td_body"><p> <td class="td_body"><p>

View file

@ -138,6 +138,21 @@ $(document).ready(function(){
</select> </select>
</td> </td>
</tr> </tr>
<tr>
<td>Use Sub-Categories</td>
<td><select name="use_subs" id="use_subs">
<option value="1"
{if $row.use_subs == 1}
selected="selected"
{/if}
>Yes</option>
<option value="0"
{if $row.use_subs == 0}
selected="selected"
{/if}
>No</option>
</select></td>
</tr>>
<tr> <tr>
<td>&nbsp;</td> <td>&nbsp;</td>
<td>&nbsp;</td> <td>&nbsp;</td>

View file

@ -32,7 +32,7 @@ switch($sort)
break; break;
case "featured": case "featured":
{ {
$u_cond['order'] = "yes"; $u_cond['featured'] = "yes";
} }
break; break;
case "top_rated": case "top_rated":

View file

@ -74,6 +74,7 @@ abstract class CBCategory
$name = ($array['name']); $name = ($array['name']);
$desc = ($array['desc']); $desc = ($array['desc']);
$default = mysql_clean($array['default']); $default = mysql_clean($array['default']);
$parent_id = mysql_clean($array['parent_cat']);
if($this->get_cat_by_name($name)) if($this->get_cat_by_name($name))
{ {
@ -84,9 +85,9 @@ abstract class CBCategory
e(lang("add_cat_no_name_err")); e(lang("add_cat_no_name_err"));
}else{ }else{
$cid = $db->insert(tbl($this->cat_tbl), $cid = $db->insert(tbl($this->cat_tbl),
array("category_name","category_desc","date_added"), array("parent_id","category_name","category_desc","date_added"),
array($name,$desc,now()) array($parent_id,$name,$desc,now())
); );
$cid = $db->insert_id(); $cid = $db->insert_id();
if($default=='yes' || !$this->get_default_category()) if($default=='yes' || !$this->get_default_category())
$this->make_default_category($cid); $this->make_default_category($cid);
@ -127,6 +128,75 @@ abstract class CBCategory
return $select; return $select;
} }
/**
* Function used to list of categories
*/
function cb_list_categories($type,$with_all=false)
{
global $db;
if($type == 'video' || $type == 'vid' || $type == 'v')
$cond = " parent_id = 0";
else
$cond = NULL;
//Getting List of categories
$cats = $db->select(tbl($this->cat_tbl),"*",$cond,NULL," category_order ASC");
if($with_all)
array_unshift($cats,array("category_id"=>"all","category_name"=>"All"));
$html = '';
for($i=0;$i<count($cats);$i++)
{
if($_GET['cat'] == $cats[$i]['category_id'] || (empty($_GET['cat']) && $cats[$i]['category_id'] == 'all'))
$selected = "selected";
else
$selected = "";
$html .= "<li class='".$selected."'>";
$html .= "<a href='".category_link($cats[$i],$type)."' title='".$cats[$i]['category_name']."'>".$cats[$i]['category_name']."</a>";
if($this->is_parent($cats[$i]['category_id']))
{
$html .= $this->cb_list_subs($cats[$i]['category_id'],$type);
}
$html .= "</li>";
}
return $html;
}
function cb_list_subs($cid,$type)
{
global $db;
$html = "";
$query = mysql_query("SELECT * FROM ".tbl($this->cat_tbl)." WHERE parent_id = $cid");
if(!empty($query))
{
$html .= "<ul id='".$cid."_subs' class='sub_categories'>";
while($result = mysql_fetch_array($query))
{
if($_GET['cat'] == $result['category_id'])
$selected = "selected";
else
$selected = "";
$html .= "<li class='".$selected."'>";
$html .= "<a href='".category_link($result,$type)."' title='".$result['category_name']."'>".$result['category_name']."</a>";
if($this->is_parent($result['category_id']))
{
$html .= $this->cb_list_subs($result['category_id'],$type);
}
$html .= "</li>";
}
$html .= "</ul>";
}
return $html;
}
/** /**
* Function used to count total number of categoies * Function used to count total number of categoies
@ -147,12 +217,35 @@ abstract class CBCategory
$cat_details = $this->category_exists($cid); $cat_details = $this->category_exists($cid);
if(!$cat_details) if(!$cat_details)
e(lang("cat_exist_error")); e(lang("cat_exist_error"));
//CHecking if category is default or not //CHecking if category is default or not
elseif($cat_details['isdefault'] == 'yes') elseif($cat_details['isdefault'] == 'yes')
e(lang("cat_default_err")); e(lang("cat_default_err"));
else{ else{
//Moving all contents to default category
$this->change_category($cid); $pcat = $this->has_parent($cid,true);
//Checking if category is both parent and child
if($pcat && $this->is_parent($cid))
{
$to = $pcat[0]['category_id'];
$has_child = TRUE;
}
elseif($pcat && !$this->is_parent($cid)) //Checking if category is only child
{
$to = $pcat[0]['category_id'];
$has_child = TRUE;
}
elseif(!$pcat && $this->is_parent($cid)) //Checking if category is only parent
{
$to = NULL;
$has_child = NULL;
$db->update(tbl($this->cat_tbl),array('parent_id'),array('0')," parent_id = $cid");
}
//Moving all contents to parent OR default category
$this->change_category($cid,$to,$has_child);
//Removing Category //Removing Category
$db->execute("DELETE FROM ".tbl($this->cat_tbl)." WHERE category_id='$cid'"); $db->execute("DELETE FROM ".tbl($this->cat_tbl)." WHERE category_id='$cid'");
e(lang("class_cat_del_msg"),'m'); e(lang("class_cat_del_msg"),'m');
@ -187,12 +280,19 @@ abstract class CBCategory
/** /**
* Function used to move contents from one section to other * Function used to move contents from one section to other
*/ */
function change_category($from,$to=NULL,$check_multiple=false) function change_category($from,$to=NULL,$has_child=NULL,$check_multiple=false)
{ {
global $db; global $db;
if(!$this->category_exists($to)) if(!$this->category_exists($to))
$to = $this->get_default_cid(); $to = $this->get_default_cid();
if($has_child) {
$db->update(tbl($this->cat_tbl),array('parent_id'),array($to)," parent_id = $from");
}
$db->execute("UPDATE ".tbl($this->section_tbl)." SET category = replace(category,'#".$from."#','#".$to."#') WHERE category LIKE '%#".$from."#%'"); $db->execute("UPDATE ".tbl($this->section_tbl)." SET category = replace(category,'#".$from."#','#".$to."#') WHERE category LIKE '%#".$from."#%'");
$db->execute("UPDATE ".tbl($this->section_tbl)." SET category = replace(category,'#".$to."# #".$to."#','#".$to."#') WHERE category LIKE '%#".$to."#%'"); $db->execute("UPDATE ".tbl($this->section_tbl)." SET category = replace(category,'#".$to."# #".$to."#','#".$to."#') WHERE category LIKE '%#".$to."#%'");
} }
@ -207,22 +307,25 @@ abstract class CBCategory
$name = ($array['name']); $name = ($array['name']);
$desc = ($array['desc']); $desc = ($array['desc']);
$default = mysql_clean($array['default']); $default = mysql_clean($array['default']);
$pcat = mysql_clean($array['parent_cat']);
$cur_name = mysql_clean($array['cur_name']); $cur_name = mysql_clean($array['cur_name']);
$cid = mysql_clean($array['cid']); $cid = mysql_clean($array['cid']);
$cur_parent = mysql_clean($array['cur_parent']);
if($this->get_cat_by_name($name) && $cur_name !=$name ) if($this->get_cat_by_name($name) && $cur_name !=$name )
{ {
e(lang("add_cat_erro")); e(lang("add_cat_erro"));
}elseif(empty($name)) }elseif(empty($name)){
{
e(lang("add_cat_no_name_err")); e(lang("add_cat_no_name_err"));
} elseif($pcat == $cid){
e(lang("You can not make category parent of itself"));
}else{ }else{
$db->update(tbl($this->cat_tbl), $db->update(tbl($this->cat_tbl),
array("category_name","category_desc"), array("parent_id","category_name","category_desc"),
array($name,$desc), array($pcat,$name,$desc),
" category_id='$cid' " " category_id='$cid' "
); );
if($default=='yes' || !$this->get_default_category()) if($default=='yes' || !$this->get_default_category())
@ -349,6 +452,155 @@ abstract class CBCategory
} }
} }
/**
* Function used get parent cateogry
*/
function get_parent_category($pid)
{
global $db;
$result = $db->select(tbl($this->cat_tbl),"*"," category_id = $pid");
if($db->num_rows>0)
return $result;
else
return false;
}
/**
* Function used to check category is parent or not
*/
function is_parent($cid)
{
global $db;
$result = $db->count(tbl($this->cat_tbl),"category_id"," parent_id = $cid");
if($result > 0)
return true;
else
return false;
}
/**
* Function used to check wheather category has parent or not
*/
function has_parent($cid,$return_parent=false)
{
global $db;
$result = $db->select(tbl($this->cat_tbl),"*"," category_id = $cid AND parent_id != 0");
if($result > 0) {
if($return_parent)
{
$pid = $this->get_parent_category($result[0]['parent_id']);
return $pid;
} else {
return true;
}
} else {
return false;
}
}
/**
* Function used to get parent categories
*/
function get_parents($count=false) {
global $db;
if($count) {
$result = $db->count(tbl($this->cat_tbl),"*"," parent_id = 0");
} else {
$result = $db->select(tbl($this->cat_tbl),"*"," parent_id = 0");
}
return $result;
}
/**
* Function used to list categories in admin area
* with indention
*/
function admin_area_cats($selected)
{
global $db;
$html = '';
$pcats = $this->get_parents();
if(!empty($pcats))
{
foreach($pcats as $key=>$pcat)
{
if($selected == $pcat['category_id'])
$select = "selected='selected'";
else
$select = NULL;
$html .= "<option value='".$pcat['category_id']."' $select>";
$html .= $pcat['category_name'];
$html .= "</option>";
if($this->is_parent($pcat['category_id']))
$html .= $this->get_sub_subs($pcat['category_id'],$selected);
}
return $html;
}
}
/**
* Function used to get child categories
*/
function get_sub_categories($cid)
{
global $db;
$result = $db->select(tbl($this->cat_tbl),"*"," parent_id = $cid");
//echo $db->db_query;
if($result > 0){
return $result;
}else{
return false;
}
}
/**
* Function used to get child child categories
*/
function get_sub_subs($cid,$selected,$space="&nbsp; - ")
{
global $db;
$html = '';
$subs = $this->get_sub_categories($cid);
if(!empty($subs))
{
foreach($subs as $sub_key=>$sub)
{
if($selected == $sub['category_id'])
$select = "selected='selected'";
else
$select = NULL;
$html .= "<option value='".$sub['category_id']."' $select>";
$html .= $space.$sub['category_name'];
$html .= "</option>";
if($this->is_parent($sub['category_id']))
$html .= $this->get_sub_subs($sub['category_id'],$selected,$space." - ");
}
return $html;
}
}
function get_category_field($cid,$field)
{
global $db;
$result = $db->select(tbl($this->cat_tbl),"$field"," category_id = $cid");
//echo $db->db_query;
if($result)
return $result[0][$field];
else
return false;
}
} }
?> ?>

View file

@ -922,6 +922,8 @@
*/ */
function getCategoryList($type='video',$with_all=false,$return_html=false) function getCategoryList($type='video',$with_all=false,$return_html=false)
{ {
$use_subs = config('use_subs');
switch ($type) switch ($type)
{ {
case "video": case "video":
@ -929,7 +931,7 @@
{ {
global $cbvid; global $cbvid;
if($return_html) { if($return_html && $use_subs == "1") {
$cats = $cbvid->cb_list_categories($type,$with_all); $cats = $cbvid->cb_list_categories($type,$with_all);
} else { } else {
if($with_all) if($with_all)
@ -948,7 +950,7 @@
global $userquery; global $userquery;
if($return_html) { if($return_html && $use_subs == "1") {
$cats = $userquery->cb_list_categories($type,$with_all); $cats = $userquery->cb_list_categories($type,$with_all);
} else { } else {
if($with_all) if($with_all)
@ -969,7 +971,7 @@
global $cbgroup; global $cbgroup;
if($return_html) { if($return_html && $use_subs == "1") {
$cats = $cbgroup->cb_list_categories($type,$with_all); $cats = $cbgroup->cb_list_categories($type,$with_all);
} else { } else {
if($with_all) if($with_all)

View file

@ -80,7 +80,7 @@ flowplayer("the_Video_Player", "{$pak_player_url}/pak_player.swf", {literal}{
, ,
clip:{ clip:{
{/literal} {/literal}
autoPlay:{$player_data.autoplay}, autoplay:'{$player_data.autoplay}',
{if $youtube} {if $youtube}
url : 'api:{$ytcode}', url : 'api:{$ytcode}',

View file

@ -1,15 +1,17 @@
<div class="category_list"> <div class="category_list">
<span class="cat_heading">{lang code='categories'}</span> <span class="cat_heading">{lang code='categories'}</span>
{assign var='category_list' value=func->getCategoryList($type,true)} {assign var='category_list' value=func->getCategoryList($type,true,true)}
{assign var='use_subs' value=func->config(use_subs)}
<div class="categories"> <div class="categories">
{if $category_list} <ul>
<ul> {if $use_subs == "1"}
{foreach from=$category_list item=cat} {$category_list}
{else}
{foreach from=$category_list item=cat}
<li {if $smarty.get.cat==$cat.category_id || ($smarty.get.cat=="" && $cat.category_id=='all')} class="selected"{/if}><a href="{link name='category' data=$cat type=$type}">{$cat.category_name}</a></li> <li {if $smarty.get.cat==$cat.category_id || ($smarty.get.cat=="" && $cat.category_id=='all')} class="selected"{/if}><a href="{link name='category' data=$cat type=$type}">{$cat.category_name}</a></li>
{/foreach} {/foreach}
</ul> {/if}
{else} </ul>
No Category
{/if}
</div> </div>
</div> </div>

View file

@ -22,6 +22,11 @@
{FlashPlayer vdetails = $vdo} {FlashPlayer vdetails = $vdo}
</div> </div>
{if has_hq($vdo)}
<div id="hd_player_cont" style="display:none">
{FlashPlayer vdetails =$vdo player_div='hd_div' hq=true}
</div>
{/if}
<!-- Actions --> <!-- Actions -->
<div class="video_actions_cont clearfix"> <div class="video_actions_cont clearfix">
<div class="rating_container"> <div class="rating_container">
@ -163,9 +168,9 @@
<!-- Getting Related videos --> <!-- Getting Related videos -->
{assign var=videos_items_columns value=func->config(videos_items_columns)} {assign var=videos_items_columns value=func->config(videos_items_columns)}
{get_videos nonuser=$vdo.userid exclude=$vdo.videoid limit=$videos_items_columns order="date_added ASC" assign=related_vids} {get_videos nonuser=$vdo.userid exclude=$vdo.videoid limit=$videos_items_columns order="date_added ASC" assign=related_vids show_related=yes title=$vdo.title}
<!-- Related Videos based on category, please remove * and also above smarty function --> <!-- Related Videos based on category, please remove * and also above smarty function -->
{* get_videos category=$vid_cat nonuser=$vdo.userid exclude=$vdo.videoid limit=$videos_items_columns order="date_added ASC" assign=related_vids *} {* get_videos category=$vid_cat nonuser=$vdo.userid exclude=$vdo.videoid limit=$videos_items_columns order="date_added ASC" assign=related_vids show_related=yes title=$vdo.title*}
{if $related_vids} {if $related_vids}

View file

@ -385,8 +385,8 @@ span.remember { font-size:10px; }
.categories ul li:last-child{border-bottom:none} .categories ul li:last-child{border-bottom:none}
.categories .selected { background-color:#efefef; display:block;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px} .categories .selected { background-color:#efefef; display:block;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px}
.categories ul a{font:bold 14px arial;color:#0066cc; text-decoration:none; display:block; padding:2px 2px 2px 6px; } .categories ul a{font:bold 14px arial;color:#0066cc; text-decoration:none; display:block; padding:2px 2px 2px 6px; }
.categories ul.sub_categories { padding:0px; margin:0px 0 0 5px; } .categories ul.sub_categories { padding:0px; margin:0px 0px 0px 5px; }
.categories ul.sub_categories li { padding:2px; margin:0px; } .categories ul.sub_categories li { padding:1px; margin:0px; }
.categories ul.sub_categories li a { font:bold 11px Tahoma; } .categories ul.sub_categories li a { font:bold 11px Tahoma; }
.time_cont{border-bottom:1px solid #CCC; margin-bottom:5px; padding:5px; font-size:10px} .time_cont{border-bottom:1px solid #CCC; margin-bottom:5px; padding:5px; font-size:10px}
.time_cont a{ font-size:10px; color:#666; text-decoration:none} .time_cont a{ font-size:10px; color:#666; text-decoration:none}