Collections functions
General functions
Node functions
Render functions
Theme permission functions
User functions
Resource functions

get_default_dash()

Parameters

ColumnTypeDefaultDescription
$user_group_id null
$edit_mode false

Location

include/dash_functions.php lines 435 to 634

Definition

 
function get_default_dash($user_group_id null$edit_mode false)
    {
    global 
$baseurl,$baseurl_short,$lang,$anonymous_login,$username;

    
#Build Tile Templates
    
$tiles ps_query("SELECT dash_tile.ref AS 'tile',dash_tile.title,dash_tile.url,dash_tile.reload_interval_secs,dash_tile.link,dash_tile.default_order_by as 'order_by',dash_tile.allow_delete FROM dash_tile WHERE dash_tile.all_users = 1 AND dash_tile.ref NOT IN (SELECT dash_tile FROM usergroup_dash_tile) AND (dash_tile.allow_delete=1 OR (dash_tile.allow_delete=0 AND dash_tile.ref IN (SELECT DISTINCT user_dash_tile.dash_tile FROM user_dash_tile))) ORDER BY default_order_by");

    
// In edit_mode, as a super admin, we want to see all user dash tiles otherwise re-ordering will be broken
    // due to tiles that are not visible but still being taken into account
    
$hidden_tiles      = array();
    
$hidden_tile_class '';

    if(
$edit_mode)
        {
        
$managed_tiles      $tiles;
        
$tiles              get_alluser_available_tiles();
        
$hidden_tile_class  ' HiddenTile';

        foreach(
$tiles as $all_user_available_tile)
            {
            if(
false === array_search($all_user_available_tile['ref'], array_column($managed_tiles'tile')))
                {
                
$hidden_tiles[] = $all_user_available_tile['ref'];
                }
            }
        }
    
    if(!
is_null($user_group_id))
        {
        
$tiles get_usergroup_available_tiles($user_group_id);
        }

    
$order=10;
    if(
count($tiles)==0){echo escape($lang["nodashtilefound"]);exit;}
    foreach(
$tiles as $tile)
        {
        
$contents_tile_class '';

        if((
$order != $tile["order_by"] || ($tile["order_by"] % 10) > 0) && is_null($user_group_id))
            {
            
update_default_dash_tile_order($tile["tile"],$order);
            }
        elseif((!isset(
$tile['default_order_by']) || $order != $tile['default_order_by'] || ($tile['default_order_by'] % 10) > 0) && !is_null($user_group_id))
            {
            
update_usergroup_dash_tile_order($user_group_id$tile['tile'], $order);
            }

        
$order+=10;

        
$tile_custom_style '';       
        
$buildstring explode('?'$tile['url']);
        
parse_str(str_replace('&''&', ($buildstring[1]??"")), $buildstring);

        if(isset(
$buildstring['tltype']) && allow_tile_colour_change($buildstring['tltype']) && isset($buildstring['tlstylecolour']))
            {
            
$tile_custom_style .= get_tile_custom_style($buildstring);
            }

        if(
in_array($tile['tile'], $hidden_tiles))
            {
            
$contents_tile_class .= $hidden_tile_class;
            }
            
?>
        <a 
             
            
# Check link for external or internal
            
if(mb_strtolower(substr($tile["link"],0,4))=="http")
                {
                
$link $tile["link"];
                
$newtab true;
                }
            else
                {
                
$link $baseurl."/".escape($tile["link"]);
                
$newtab=false;
                }
            
?>
            href=" echo $link?> echo $newtab "target='_blank'" "";?>
            onClick="if(dragging){dragging=false;return false;}" 
            class="HomePanel DashTile DashTileDraggable  echo $tile["allow_delete"]? "":"conftile";?>
            id="tile echo escape($tile["tile"]);?>"
        >
            <div id="contents_tile echo escape($tile["tile"]);?>" class="HomePanelIN HomePanelDynamicDash  echo $contents_tile_class?>" style=" echo $tile_custom_style?>">
                
                
if (strpos($tile["url"],"dash_tile.php")!==false)
                    {
                    
# Only pre-render the title if using a "standard" tile and therefore we know the H2 will be in the target data.
                    
?>
                    <h2 class="title"> echo escape($tile["title"]);?></h2>
 
                    
}
                    
?>
                <p>Loading...</p>
                <script>
                    height = jQuery("#contents_tile echo escape($tile["tile"]);?>").height();
                    width = jQuery("#contents_tile echo escape($tile["tile"]);?>").width();
                    jQuery("#contents_tile echo escape($tile["tile"]);?>").load(" echo $baseurl."/".$tile["url"]."&tile=".escape($tile["tile"]);?>&tlwidth="+width+"&tlheight="+height);
                </script>
            </div>
            
        </a>
        
        
}
        
        
render_trash("dash_tile"$lang['confirmdeleteconfigtile']);
        
?>
        <script>
            function deleteDefaultDashTile(id)
                {
                jQuery.post(
                    " echo $baseurl?>/pages/ajax/dash_tile.php",
                    {
                    "tile": id,
                    "delete": "true",
                     echo generateAjaxToken("deleteDefaultDashTile"); ?>
                    },
                    function(data)
                        {
                        jQuery("#tile"+id).remove();
                        });
                }

            function updateDashTileOrder(index,tile) {
                jQuery.post(
                    " echo $baseurl?>/pages/ajax/dash_tile.php",
                    {
                    "tile": tile,
                    "new_index": ((index*10)) if(!is_null($user_group_id)) { echo ", \"selected_user_group\": {$user_group_id}";} ?>,
                     echo generateAjaxToken("updateDashTileOrder"); ?>
                    }
                );
            }

            var dragging=false;
                jQuery(function() {
                    if(is_touch_device())
                        {
                        jQuery("#HomePanelContainer").prepend("<p> echo escape($lang["dashtilesmalldevice"]);?></p>");
                        return false;
                        }
                     jQuery("#HomePanelContainer").sortable({
                        items: ".DashTileDraggable",
                        start: function(event,ui) {
                            jQuery("#dash_tile_bin").show();
                            dragging=true;
                        },
                        stop: function(event,ui) {
                          jQuery("#dash_tile_bin").hide();
                        },
                      update: function(event, ui) {
                          nonDraggableTiles = jQuery(".HomePanel").length - jQuery(".DashTileDraggable").length;
                          newIndex = (ui.item.index() - nonDraggableTiles) + 1;
                          var id=jQuery(ui.item).attr("id").replace("tile","");
                          updateDashTileOrder(newIndex,id);
                      }
                      });
                    jQuery("#dash_tile_bin").droppable({
                        accept: ".DashTileDraggable",
                        activeClass: "ui-state-hover",
                        hoverClass: "ui-state-active",
                        drop: function(event,ui) {
                            var id=jQuery(ui.draggable).attr("id");
                            id = id.replace("tile","");
                            title = jQuery(ui.draggable).find(".title").html();
                            jQuery("#dash_tile_bin").hide();
                            if(jQuery("#tile"+id).hasClass("conftile")) {
                                jQuery("#delete_permanent_dialog").dialog({
                                    title:' echo escape($lang["dashtiledelete"]); ?>',
                                    modal: true,
                                    resizable: false,
                                    dialogClass: 'delete-dialog no-close',
                                    buttons: {
                                        " echo escape($lang['confirmdefaultdashtiledelete']); ?>": function() {
                                                jQuery(this).dialog("close");
                                                deleteDefaultDashTile(id);
                                            },    
                                        " echo escape($lang['cancel']); ?>": function() { 
                                                jQuery(this).dialog('close');
                                            }
                                    }
                                });
                                return;
                            }
                            jQuery("#trash_bin_delete_dialog").dialog({
                                title:' echo escape($lang["dashtiledelete"]); ?>',
                                modal: true,
                                resizable: false,
                                dialogClass: 'delete-dialog no-close',
                                buttons: {
                                    " echo escape($lang['confirmdefaultdashtiledelete']); ?>": function() {jQuery(this).dialog("close");deleteDefaultDashTile(id); },    
                                    " echo escape($lang['cancel']); ?>": function() { jQuery(this).dialog('close'); }
                                }
                            });
                        }
                    });
                  });
        </script>
    <div class="clearerleft"></div>
    
    
}

This article was last updated 19th March 2024 03:35 Europe/London time based on the source file dated 15th March 2024 17:00 Europe/London time.