"
+ "
+
+ # clear out the region array
+ array unset fake_element_ids
}
- # clear out the region array
- array unset fake_element_ids
+ if {![portal::non_hidden_elements_p -page_id $page_id]} {
+
+ #
+ # Non first page with all hidden elements
+ #
+
+ #
+ # Remove page chunk - don't allow removal of the first page
+ #
+
+ if {!$first_page_p} {
+ append template "
+
+
+ No Elements on this page
+
+
+
+
"
+ }
+
+ #
+ # Layout change chunk - only shown when there are no visible elements on the page
+ #
+ set layout_chunk ""
+
+ foreach layout [get_layout_info] {
+ set layout_id [ns_set get $layout layout_id]
+ set layout_name [ns_set get $layout layout_name]
+ set layout_description [ns_set get $layout layout_description]
+ set one_layout_chunk " $layout_name - $layout_description"
+ append layout_chunk " \n"
+ }
+
+
+ append template "
+
+
+
+
+
"
+
+ }
+
+
+ # close the page's table
+ append template "
"
+
}
+
+ #
+ # New page chunk
+ #
- # set up the page creation stuff
set new_page_num [expr [page_count -portal_id $portal_id] + 1]
append template "
@@ -525,10 +587,10 @@
"
-
-
- # reverting to template support
- # this is new code (4/15/02)
+
+ #
+ # Revert page chunk
+ #
if {![empty_string_p [get_portal_template_id $portal_id]]} {
append template "
@@ -540,7 +602,9 @@
"
}
- # This hack is to work around the acs-templating system
+ #
+ # Templating system hacks
+ #
set __adp_stub "[get_server_root][www_path]/."
set {master_template} \"master\"
@@ -664,35 +728,10 @@
db_dml show_here_update_state {}
}
}
- "move_to_page" {
- set page_id [ns_set get $form page_id]
- set element_id [ns_set get $form element_id]
- set curr_reg [db_string move_to_page_curr_select {}]
- set target_reg_num [db_string move_to_page_target_select {}]
-
- if {$curr_reg > $target_reg_num} {
- # the new page dosent have this region, set to max region
- set region $target_reg_num
- } else {
- set region $curr_reg
- }
-
- db_dml move_to_page_update {}
- }
"Move to page" {
- set page_id [ns_set get $form page_id]
- set element_id [ns_set get $form element_id]
- set curr_reg [db_string move_to_page_curr_select {}]
- set target_reg_num [db_string move_to_page_target_select {}]
-
- if {$curr_reg > $target_reg_num} {
- # the new page dosent have this region, set to max region
- set region $target_reg_num
- } else {
- set region $curr_reg
- }
-
- db_dml move_to_page_update {}
+ portal::move_element_to_page \
+ -page_id [ns_set get $form page_id] \
+ -element_id [ns_set get $form element_id]
}
"hide" {
set element_id_list [list]
@@ -704,8 +743,17 @@
}
if {! [empty_string_p $element_id_list] } {
- foreach element_id $element_id_list {
- db_dml hide_update {}
+ db_transaction {
+ foreach element_id $element_id_list {
+ db_dml hide_update {}
+
+ # after hiding an element, add
+ # it to the _first_ page
+ # of the portal.
+ portal::move_element_to_page \
+ -page_id [portal::get_page_id -portal_id $portal_id] \
+ -element_id $element_id
+ }
}
}
}
@@ -725,15 +773,19 @@
set page_id [ns_set get $form page_id]
page_delete -page_id $page_id
}
+ "Change Page Layout" {
+ set_layout_id \
+ -page_id [ns_set get $form page_id] \
+ -layout_id [ns_set get $form layout_id]
+ }
"Rename Page" {
set pretty_name [ns_set get $form pretty_name]
set page_id [ns_set get $form page_id]
if {[empty_string_p $pretty_name]} {
ad_return_complaint 1 "You must enter new name for the page."
}
- set_page_pretty_name \
- -pretty_name $pretty_name -page_id $page_id
+ set_page_pretty_name -pretty_name $pretty_name -page_id $page_id
}
"toggle_pinned" {
set element_id [ns_set get $form element_id]
@@ -758,12 +810,6 @@
set element_id [ns_set get $form element_id]
toggle_element_param -element_id $element_id -key "shadeable_p"
}
- "update_layout" {
- ns_log Error \
- "portal::config_dispatch: Bad op = $op!"
- ad_return_complaint 1 \
- "portal::config_dispatch: Not implimented op = $op"
- }
default {
ns_log Error \
"portal::config_dispatch: Bad op = $op!"
@@ -845,6 +891,19 @@
}
}
+ ad_proc -public first_page_p {
+ {-portal_id:required}
+ {-page_id:required}
+ } {
+ Returns 1 if the given page_id is the first page in the given portal. Otherwise 0.
+ } {
+ if {$page_id == [portal::get_page_id -portal_id $portal_id -sort_key 0]} {
+ return 1
+ } else {
+ return 0
+ }
+ }
+
ad_proc -public page_count {
{-portal_id:required}
} {
@@ -1204,6 +1263,35 @@
db_dml update {}
}
+ ad_proc -private get_element_region {
+ {-element_id:required}
+ } {
+ Gets the region an element is in
+ } {
+ return [db_string get_element_region_select {}]
+ }
+
+ ad_proc -private move_element_to_page {
+ {-page_id:required}
+ {-element_id:required}
+ } {
+ Moves a PE to the given page
+ } {
+ set curr_reg [get_element_region -element_id $element_id]
+ set target_reg_num [get_layout_region_count_not_cached \
+ -layout_id [get_layout_id -page_id $page_id]
+ ]
+
+ if {$curr_reg > $target_reg_num} {
+ # the new page dosent have this region, set to max region
+ set region $target_reg_num
+ } else {
+ set region $curr_reg
+ }
+
+ db_dml update {}
+ }
+
ad_proc -private hideable_p {
{-element_id:required}
} {
@@ -1237,6 +1325,15 @@
return [db_list_of_lists select_hidden_elements {}]
}
+ ad_proc -private non_hidden_elements_p {
+ {-page_id:required}
+ } {
+ Returns 1 when this page has at least 1 non-hidden element on it.
+ } {
+ return [db_string non_hidden_elements_p_select {} -default 0]
+
+ }
+
ad_proc -private set_element_param {
element_id
key
@@ -1693,13 +1790,15 @@
ad_proc -private get_layout_region_count {
{-layout_id:required}
} {
+ Get the number of regions (aka columns) this layout supports
+ } {
return [util_memoize "portal::get_layout_region_count_not_cached -layout_id $layout_id"]
}
ad_proc -private get_layout_region_count_not_cached {
{-layout_id:required}
} {
- return [db_string select_region_count {}]
+ return [db_string select {}]
}
ad_proc -private get_layout_region_list {
@@ -1718,6 +1817,23 @@
return [db_list select_region_list {}]
}
+ ad_proc -private get_layout_info {
+ } {
+ Returns a list of all the layouts in the system asns_sets with
+ keys being: name, description, and number of regions.
+ } {
+ return [db_list_of_ns_sets select_layout_info {}]
+ }
+
+ ad_proc -private set_layout_id {
+ {-page_id:required}
+ {-layout_id:required}
+ } {
+ Updates a page's layout.
+ } {
+ db_dml update_layout_id {}
+ }
+
ad_proc -private get_layout_id {
{-page_num ""}
{-page_id ""}
@@ -1972,6 +2088,21 @@
}
+ ad_proc -private get_theme_info {
+ } {
+ Returns a list of all the themes in the system as ns_sets with
+ keys being: theme_id, name, description
+ } {
+ return [util_memoize "portal::get_theme_info_not_cached"]
+ }
+
+ ad_proc -private get_theme_info_not_cached {
+ } {
+ Memoizing helper
+ } {
+ return [db_list_of_ns_sets get_theme_info_select {}]
+ }
+
ad_proc dimensional {
{-no_header:boolean}
{-no_bars:boolean}