Another update for development of the Assets Dashboard.
authorChuck Scott <cscott@gaslightmedia.com>
Fri, 9 Mar 2018 14:11:22 +0000 (09:11 -0500)
committerChuck Scott <cscott@gaslightmedia.com>
Fri, 9 Mar 2018 16:03:58 +0000 (11:03 -0500)
models/admin/ajax/assetManagement.php
models/admin/assets/index.php
views/admin/assets/facilityForm.html [new file with mode: 0644]
views/admin/assets/facilityLine.html [new file with mode: 0644]
views/admin/assets/index.html

index 3fa6dec..aaded14 100644 (file)
@@ -69,9 +69,6 @@ class GlmMembersAdmin_ajax_assetManagement
     public function modelAction ($actionData = false)
     {
 
-ini_set('log_errors_max_len', 20000);
-trigger_error(print_r($_REQUEST,1),E_USER_NOTICE);
-
         require_once GLM_MEMBERS_ASSETS_PLUGIN_CLASS_PATH.'/data/dataFacilities.php';
         $Facilities = new GlmDataAssetsFacilities($this->wpdb, $this->config);
 
@@ -79,18 +76,73 @@ trigger_error(print_r($_REQUEST,1),E_USER_NOTICE);
             die('No option specified.');
         }
 
+trigger_error("Option = ".$_REQUEST['option'],E_USER_NOTICE);
+
         switch($_REQUEST['option']) {
 
+            case 'newFacility':
+
+                $facility = $Facilities->newEntry();
+
+                $view = 'facilityForm';
+
+                $templateData = array(
+                    'status' => '0',
+                    'facility' => $facility['fieldData']
+                );
+
+                break;
+
+            case 'editFacility':
+
+                $facilityId = 0;
+                if (isset($_REQUEST) && isset($_REQUEST['id']) ) {
+                    $facilityId = $_REQUEST['id'] + 0;
+                }
+
+                if ($facilityId > 0) {
+                    $facility = $Facilities->editEntry($facilityId);
+//echo " <pre>".print_r($facility,1)."</pre>";
+//die();
+                    $view = 'facilityForm';
+
+                    $templateData = array(
+                        'status' => '0',
+                        'facility' => $facility['fieldData']
+                    );
+
+                } else {
+                    die("2Facility not found!");
+                }
+
+                break;
+
             case 'addNewFacility':
 
                 $newFacility = $Facilities->insertEntry();
 
+                $newFacilityAdded = true;
                 if (!is_array($newFacility) || trim($newFacility['fieldData']['id']) == '') {
-                    $newFacility['status'] = 0;
+
+                    $view = 'facilityForm';
+
+                    // New facility was not added so we need to redisplay the form.
+                    $templateData = array(
+                        'status' => 1,
+                        'cities' => $cities,
+                        'states' => $this->config['states'],
+                        'countries' => $this->config['countries']
+                    );
+
                 }
 
-                $response = json_encode($newFacility, JSON_FORCE_OBJECT);
-                die($response);
+                $view = 'facilityLine';
+
+                // New facility was not added so we need to redisplay the form.
+                $templateData = array(
+                    'status' => '0',
+                    'facility' => $newFacility
+                );
 
                 break;
 
@@ -98,11 +150,95 @@ trigger_error(print_r($_REQUEST,1),E_USER_NOTICE);
                 die('No valid option provided');
                 break;
         }
-die('done');
+
+        $templateData['$glmPluginMediaUrl'] = GLM_MEMBERS_PLUGIN_MEDIA_URL;
+        $html = $this->generateHTML($templateData, 'admin/assets/'.$view.'.html');
+        die($html);
 
 
         die('Nothing Here');
 
     }
 
+    /**
+     * Merge template and data to produce HTML
+     *
+     * Checks the theme's view directories and the view directories for
+     * this plugin for a matching view file.
+     *
+     * Note that $view needs to have the proper view directory path
+     * includes. (i.e. "/views/front/registrations/summary.html")
+     *
+     * $view may also be a template as a string if $viewIsString is true.
+     *
+     * @param $data array Array of data to merge with the template
+     * @param $view string Name of view file (see above))
+     * @param $viewIsString boolean If true, $view is a string containing the view.
+     *
+     * @access public
+     * @return void
+     */
+    function generateHTML($data, $view, $viewIsString = false)
+    {
+
+        // Load Smarty Template support
+        $smarty = new smartyTemplateSupport();
+
+        // Add standard parameters
+        require GLM_MEMBERS_PLUGIN_SETUP_PATH.'/standardTemplateParams.php';
+
+        // Add data from model to Smarty template
+        if (is_array($data) && count($data) > 0) {
+            foreach ($data as $k => $d) {
+                $smarty->templateAssign($k, $d);
+            }
+        }
+
+        // If is supplied as a string
+        if ($viewIsString) {
+
+            $out = $smarty->template->fetch('eval:'.$view);
+
+            // Otherwise $view is a file name
+        } else {
+
+            // Get the specified view file - check theme first
+            $viewPath = GLM_MEMBERS_PLUGIN_CURRENT_THEME_DIR."/views";
+            $viewPath2 = GLM_MEMBERS_ASSETS_PLUGIN_PATH . "/views";       // Save default
+
+            // If the view is not found in the theme, fall back to views in the plugin
+            if (!is_file($viewPath.'/'.$view)) {
+
+                // Next try the plugin/add-on
+                $viewPath = GLM_MEMBERS_REGISTRATIONS_PLUGIN_PATH . "/views";
+
+                if (!is_file($viewPath.'/'.$view)) {
+
+                    if (GLM_MEMBERS_PLUGIN_FRONT_DEBUG) {
+                        trigger_error("Bad or missing view file when generating checkout HTML: $viewPath/$view", E_USER_NOTICE);
+                    }
+
+                }
+
+            }
+
+            // Update the Smarty view path
+            $smarty->template->setTemplateDir($viewPath);
+
+            // If the view path doesn't match the default, add the default (using theme view)
+            if ($viewPath2 != $viewPath) {
+                $smarty->template->addTemplateDir($viewPath2);
+            }
+
+            // Generate output from model data and view
+            $out = $smarty->template->fetch($view);
+
+        }
+
+        return $out;
+
+    }
+
+
+
 }
index 9cc35f0..7519d0e 100644 (file)
@@ -83,24 +83,14 @@ class GlmMembersAdmin_assets_index extends GlmDataAssetsFacilities
         // Get all facility data with assets items and any future assignments of those assets items
         $facilities = $this->getList();
 
-        if (is_array($facilities) && count(facilities) > 0) {
+        if (is_array($facilities) && count($facilities) > 0) {
             $haveFacilities = true;
         }
 
-        // Get cities list
-        require_once GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataCities.php';
-        $Cities = new GlmDataCities($this->wpdb, $this->config);
-        $cities = $Cities->getList();
-
-
-//echo "<pre>".print_r($this->config,1)."</pre>";
-
         // Compile template data
         $templateData = array(
             'haveFacilities' => $haveFacilities,
-            'cities' => $cities,
-            'states' => $this->config['states'],
-            'countries' => $this->config['countries']
+            'facilities' => $facilities
         );
 
         // Return status, any suggested view, and any data to controller
diff --git a/views/admin/assets/facilityForm.html b/views/admin/assets/facilityForm.html
new file mode 100644 (file)
index 0000000..5bfd495
--- /dev/null
@@ -0,0 +1,109 @@
+{$status}
+
+    <style type='text/css'>
+        .assets-dialog-box {
+            display: grid;
+            grid-gap: 5px 5px;
+            grid-template-columns: 8rem auto;
+        }
+        .assets-facility-descr {
+            width: 30em !important;
+        }
+        .assets-facility-input-prompt {
+            padding: 5px 0 0 5px;
+        }       
+        .assetsFacilityInputMsg {
+            color: red;
+        }
+    </style>
+
+
+    {* New Facility Dialog Box *}
+        
+        <form id="facilityForm" method="post" enctype="multipart/form-data">
+
+            <input type="hidden" name="glm_action" value="assetManagement">
+            <input type="hidden" name="option" value="addNewFacility">
+            
+            <div class="assets-dialog-box">
+                
+                <div class="glm-required assets-facility-input-prompt">Name:</div>
+                <div><input type="text" name="name" class="glm-form-text-intput glm-form-text-input-medium" value="{$facility.name}" required><span id="assetsFacilityInputMsg_name" class="assetsFacilityInputMsg"></span></div>
+                
+                <div class="assets-facility-input-prompt">Description:</div>
+                <div><textarea name="descr" class="glm-form-textarea assets-facility-descr">{$facility.descr}</textarea></div>
+                
+                <div class="assets-facility-input-prompt">Address:</div>
+                <div><input type="text" name="address" class="glm-form-text-intput glm-form-text-input-medium" value="{$facility.addr}"></div>
+                
+                <div class="assets-facility-input-prompt">City:</div>
+                <div>
+                    <select name="city">
+                        <option value=""></option>
+    {foreach $facility.city.list as $city}
+                        <option value="{$city.value}"{if $city.default} selected="selected"{/if}>{$city.name}</option>
+    {/foreach}                    
+                    </select>
+                </div>
+
+                <div class="assets-facility-input-prompt">State:</div>
+                <div>
+                    <select name="state">
+                        <option value=""></option>
+    {foreach $facility.state.list as $state}
+                        <option value="{$state.value}"{if $state.default} selected="selected"{/if}>{$state.name}</option>
+    {/foreach}                    
+                    </select>
+                </div>
+
+                <div class="assets-facility-input-prompt">ZIP / Postal Code:</div>
+                <div><input type="text" name="zip" class="glm-form-text-intput glm-form-text-input-veryshort" value="{$facility.zip}"></div>
+                
+                <div class="assets-facility-input-prompt">Country:</div>
+                <div>
+                    <select name="country">
+                        <option value=""></option>
+    {foreach $facility.country.list as $country}
+                        <option value="{$country.value}"{if $country.default} selected="selected"{/if}>{$country.name}</option>
+    {/foreach}                    
+                    </select>
+                </div>
+
+                <!-- LAT / LON can go here if needed -->
+                
+                <div class="assets-facility-input-prompt">Phone:</div>
+                <div><input type="text" name="phone" class="glm-form-text-intput" value="{$facility.phone}"></div>
+
+                <div class="assets-facility-input-prompt">URL:</div>
+                <div><input type="text" name="url" class="glm-form-text-intput glm-form-text-input-medium" value="{$facility.URL}" placeholder="http://somefacilityname.com"></div>
+
+                <div class="assets-facility-input-prompt">E-Mail Address:</div>
+                <div><input type="text" name="email" class="glm-form-text-intput glm-form-text-input-medium" value="{$facility.email}"></div>
+
+                <div class="assets-facility-input-prompt">Facility Map:</div>
+                <div>
+                    <p>
+                        Facility map file must be a standard image file such as JPG, PNG, or GIF and
+                        of adequate size and resolution. Images larger than 1200 pixels wide may be 
+                        too large for the page.
+                    </p>
+                    
+                    <P>******* IMAGE URL NOT WORKING *********</P>
+                    
+                    <a href="{$glmPluginMediaUrl}/images/small/{$facility.image_map}" target="facilityMap">{$facility.facility_map}</a><br>
+                    <input type="checkbox" name="logo_delete"> Delete Image<br>
+                    <b>New image:</b> <input id="assetFacilityMap" type="file" name="facility_map_new">
+                </div>
+
+                <div>&nbsp;</div><div>&nbsp;</div>
+
+                <div><span class="glm-required">*</span> Required</div>
+                <div>
+                    <input class="button button-primary" type="submit" name="Click Here" value="Add New Facility">
+                    <a id="assetsDialogCancel" class="button button-primary">Cancel</a>
+                </div>
+                
+                </div> {* assetsFacilityDialog *}
+            
+        
+        </form>
diff --git a/views/admin/assets/facilityLine.html b/views/admin/assets/facilityLine.html
new file mode 100644 (file)
index 0000000..ef7e5ce
--- /dev/null
@@ -0,0 +1,4 @@
+{$status}
+
+<div style="grid-column: 1 / span 7;" class="facility_{$facility.fieldData.id} facility-name">{$facility.fieldData.name}</div>
+<div style="grid-column: 2 / span 6;" class="facility_{$facility.fieldData.id} glm-hidden"><a href="#edit">Edit</a> <a href="#edit">Delete</a></div>
index a6d3f23..04f3207 100644 (file)
 
             <a id="glm-assets-add-facility-button" class="button">Add a Facility</a>
             
+            <div id="assetsFacilitiesContainer" class="assets-admin-content">
     
 {if $haveFacilities}
-    
-            <div id="assets-facilities-container" class="assets-admin-content">
 
     {foreach $facilities as $facility}                
 
-                <div style="grid-column: 1 / span 7;" class="facility_{$facility.id} facility-name">{$facility.name}</div>
+                <div style="grid-column: 1 / span 7;" id="facility_{$facility.id}" class="facility-name" data-id="{$facility.id}">{$facility.name} {$facility.id}</div>
                 
                 {* First indent here *}
                 
-                <div style="grid-column: 2 / span 6;" class="facility_{$facility.id}"><a href="#edit">Edit</a> <a href="#edit">Delete</a></div>
+                <div style="grid-column: 2 / span 6;" id="facilityEditLinks_{$facility.id}" class="glm-hidden facility_{$facility.id}">
+                    <a class="facility-edit button glm-button-small" data-id="{$facility.id}">Edit</a>
+                    <a class="facility-delete button glm-button-small" data-id="{$facility.id}">Delete</a>
+                </div>
                 
-                <div style="grid-column: 2 / span 3;" class="assets-colum-title">Asset Type</div>
-                <div class="assets-colum-title">Name</div>
-                <div class="assets-colum-title">Number</div>
-                <div class="assets-colum-title">Quantity</div>
+                <div style="grid-column: 2 / span 3;" class="assets-colum-title facility_{$facility.id} glm-hidden">Asset Type</div>
+                <div class="assets-colum-title facility_{$facility.id} glm-hidden">Name</div>
+                <div class="assets-colum-title facility_{$facility.id} glm-hidden">Number</div>
+                <div class="assets-colum-title facility_{$facility.id} glm-hidden">Quantity</div>
     
       {foreach $facility.assets as $asset}   
         
-                <div style="grid-column: 2 / span 3;" >Room</div>
-                <div>Ballroom</div>
-                <div>101</div>
-                <div>1</div>
+                <div style="grid-column: 2 / span 3;" class="facility_{$facility.id} glm-hidden">Room</div>
+                <div class="facility_{$facility.id} glm-hidden">Ballroom</div>
+                <div class="facility_{$facility.id} glm-hidden">101</div>
+                <div class="facility_{$facility.id} glm-hidden">1</div>
 
                 {* Second indent here *}
                 
-                <div style="grid-column: 3 / span 5;"><a href="#edit">Edit</a> <a href="#edit">Delete</a></div>
+                <div style="grid-column: 3 / span 5;" class="facility_{$facility.id} glm-hidden"><a href="#edit">Edit</a> <a href="#edit">Delete</a></div>
         
-                <div style="grid-column: 3 / span 2;" class="assets-colum-title">Start</div>
-                <div class="assets-colum-title">End</div>
-                <div class="assets-colum-title">Account</div>
-                <div class="assets-colum-title">Quantity</div>
+                <div style="grid-column: 3 / span 2;" class="assets-colum-title facility_{$facility.id} glm-hidden">Start</div>
+                <div class="assets-colum-title facility_{$facility.id} glm-hidden">End</div>
+                <div class="assets-colum-title facility_{$facility.id} glm-hidden">Account</div>
+                <div class="assets-colum-title facility_{$facility.id} glm-hidden">Quantity</div>
     
         {foreach $asset.assignments as $assignment}                        
 
-                <div style="grid-column: 3 / span 2" >1/1/2018 07:00 AM</div>
-                <div>1/1/2018 05:00 PM</div>
-                <div>Gaslight Media</div>
-                <div>1</div>
+                <div style="grid-column: 3 / span 2" class="facility_{$facility.id} glm-hidden">1/1/2018 07:00 AM</div>
+                <div class="facility_{$facility.id} glm-hidden">1/1/2018 05:00 PM</div>
+                <div class="facility_{$facility.id} glm-hidden">Gaslight Media</div>
+                <div> class="facility_{$facility.id} glm-hidden"1</div>
 
                 {* Third indent here *}    
-                <div style="grid-column: 4 / span 4;"><a href="#edit">Edit</a> <a href="#edit">Delete</a></div>
+                <div style="grid-column: 4 / span 4;" class="facility_{$facility.id} glm-hidden"><a href="#edit">Edit</a> <a href="#edit">Delete</a></div>
                 
         {/foreach} {* assignments *}
     
     
 {else} {* if haveFacilities *}
 
-            <div id="glm-assets-no-facilities">No Facilities Listed</div>
+                <div style="grid-column: 1 / span 7;" id="glmAssetNoFacilities">No Facilities Listed</div>
 
 {/if} {* if haveFacilities *}
+
+            </div> {* assetsFacilitiesContainer *}
     
-            </div> {* assets-admin-content *}
-          
-       </div> {* glm-admin-table-inner *}
-    
-    </div> {* glm-admin-table *}
+        </div> {* assets-admin-inner *}
     
-    {* New Facility Dialog Box *}
-    <div id="assetsFacilityDialog" class="glm-dialog-box" title="Enter a New Facility">
-        <form id="assetsFacilityForm" enctype="multipart/form-data">
-            <input type="hidden" name="glm_action" value="assetManagement">
+    </div> {* glm-admin-table-inner *}
     
-            <div class="assets-dialog-box">
-                
-                <div class="glm-required assets-facility-input-prompt">Name:</div>
-                <div><input type="text" name="name" class="glm-form-text-intput glm-form-text-input-medium" value="" required><span id="assetsFacilityInputMsg_name" class="assetsFacilityInputMsg"></span></div>
-                
-                <div class="assets-facility-input-prompt">Description:</div>
-                <div><textarea name="descr" class="glm-form-textarea assets-facility-descr" required></textarea></div>
-                
-                <div class="assets-facility-input-prompt">Address:</div>
-                <div><input type="text" name="address" class="glm-form-text-intput glm-form-text-input-medium" value="" required></div>
-                
-                <div class="assets-facility-input-prompt">City:</div>
-                <div>
-                    <select name="city" required>
-                        <option value=""></option>
-    {foreach $cities as $city}
-                        <option value="{$city.id}">{$city.name}</option>
-    {/foreach}                    
-                    </select>
-                </div>
-
-                <div class="assets-facility-input-prompt">State:</div>
-                <div>
-                    <select name="state" required>
-                        <option value=""></option>
-    {foreach from=$states item="stateName" key="stateKey"}
-                        <option value="{$stateKey}">{$stateName}</option>
-    {/foreach}                    
-                    </select>
-                </div>
-
-                <div class="assets-facility-input-prompt">ZIP / Postal Code:</div>
-                <div><input type="text" name="zip" class="glm-form-text-intput glm-form-text-input-veryshort" value="" required></div>
-                
-                <div class="assets-facility-input-prompt">Country:</div>
-                <div>
-                    <select name="country" required>
-                        <option value=""></option>
-    {foreach from=$countries item="countryName" key="countryKey"}
-                        <option value="{$countryKey}">{$countryName}</option>
-    {/foreach}                    
-                    </select>
-                </div>
-
-                <!-- LAT / LON can go here if needed -->
-                
-                <div class="assets-facility-input-prompt">Phone:</div>
-                <div><input type="text" name="phone" class="glm-form-text-intput" value="" required></div>
-
-                <div class="assets-facility-input-prompt">URL:</div>
-                <div><input type="text" name="url" class="glm-form-text-intput glm-form-text-input-medium" value="" placeholder="http://somefacilityname.com" required></div>
-
-                <div class="assets-facility-input-prompt">E-Mail Address:</div>
-                <div><input type="text" name="email" class="glm-form-text-intput glm-form-text-input-medium" value="" required></div>
-
-                <div class="assets-facility-input-prompt">Facility Map:</div>
-                <div>
-                    <p>
-                        Facility map file must be a standard image file such as JPG, PNG, or GIF and
-                        of adequate size and resolution. Images larger than 1200 pixels wide may be 
-                        too large for the page.
-                    </p>
-                    <a href="image url here" target="facilityMap">(image url here) </a><br>
-                    <input type="checkbox" name="logo_delete"> Delete Image<br>
-                    <b>New image:</b> <input id="assetFacilityMap" type="file" name="facility_map_new">
-                </div>
-
-                <div>&nbsp;</div><div>&nbsp;</div>
-
-                <div><span class="glm-required">*</span> Required</div>
-                <div>
-                    <a id="assetsFacilitySubmit" class="button button-primary">Add New Facility</a>
-                    <a id="assetsFacilityCancel" class="button button-primary">Cancel</a>
-                </div>
-                
-                </div> {* assetsFacilityDialog *}
-            
-        
-        </form>
-    </div>
+    </div> {* glm-admin-table *}
     
     <div id="assetsFailityTemplate" class="glm-hidden">
         <div style="grid-column: 1 / span 7;" class="facility-name facility_{* facility_id *}">{* facility_name *}</div>
         <div style="grid-column: 2 / span 6;" class="facility_{* facility_id *}"><a href="#edit" data-id="{* facility_id *}">Edit</a> <a href="#edit" data-id="{* facility_id *}">Delete</a></div>
     </div>
     
-
+    <div id="assetsDialog" class="glm-dialog-box">
+    </div>
+    
 
 
 <script>
 jQuery(document).ready(function($){
 
+    // File Line Hover Action
+    var facilityEditFlag = false;
+    var facilityHoverId = false;    
+    $('.facility-name').live( 'mouseenter', function() {     
+        if (facilityEditFlag) {
+            return;
+        }
+        if (facilityHoverId) {
+            $('.facility_' + facilityHoverId).addClass('glm-hidden');
+        }
+        facilityHoverId = $(this).attr('data-id');
+        $('.facility_' + facilityHoverId).removeClass('glm-hidden');
+    });
 
+
+    function fileLinksEditSelected() {
+        $('#facilityLinks_' + facilityHoverId).addClass('glm-hidden');
+        fileEditFlag = true;
+    }
+
+    function clearFacilityExpand() {
+        facilityLinksEditSelected();
+        facilityEditFlag = false;
+        facilityHoverId = false;
+    }
+    
+    
+    
+    
+    
+    
     // Facility dialog box
-    $('#assetsFacilityDialog').dialog({
+    $('#assetsDialog').dialog({
         autoOpen: false,
         width: 600,
         minWidth: 300,
         dialogClass: 'glm-dialog-no-close'
     });
 
-    // Add a facility
-    $('#glm-assets-add-facility-button').on('click', function() {
-        $('#assetsFacilityDialog').dialog('open');
-        $('#assetsFacilityForm')[0].reset();
-    })
-    
     // Hide "No facilities"
     function hideNoFacilities() {
-        $('#glm-assets-no-facilities').hide();
+        $('#glmAssetNoFacilities').hide();
     }
-    
+
     // Cancel facility dialog box
-    $('#assetsFacilityCancel').on('click', function() {
-        $('#assetsFacilityDialog').dialog('close');
-    })
+    $('#assetsDialogCancel').live('click', function() {
+        $('#assetsDialog').dialog('close');
+        facilityEditFlag = false;
+    });
     
-    // Save facility data
-    $('#assetsFacilitySubmit').on('click', function(e){
 
-//        var facilityData = $('#assetsFacilityForm').serializeArray();
-        var facilityData = new FormData();
-        facilityData.append('option', 'addNewFacility');
-        facilityData.append('facility_map_new', $('#assetFacilityMap')[0].files[0]);
-        var formFields = $('#assetsFacilityForm').serializeArray();
-        for (var i = 0; i < formFields.length; i++) {
-            facilityData.append(formFields[i].name, formFields[i].value);
-        }
-        
+    // Add a facility
+    $('#glm-assets-add-facility-button').on('click', function(event) {
         $.ajax({
-            context: this,
-            type: 'POST',
-            url: '{$ajaxUrl}?action=glm_members_admin_ajax',
-            data : facilityData,
+            url: '{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=assetManagement&option=newFacility',
+            type: $(this).attr("method"),
+            dataType: 'html',
             processData: false,
             contentType: false,
-        }).done(function(msg){
-alert(msg);
-            // Get response message
-            var response = JSON.parse(msg);
-
-            // Clear any submission error messages
-            $('.assetsFacilityInputMsg').html('');
-
-            // If there was a submission problem
-            if (!response.status) {
-
-                // For each input field
-                for (var key in response.fieldFail) {
-
-                    // If this field was a problem
-                    if (response.fieldFail[key]) {
-
-                        // Put a highlighted message under this field.
-                        $('#assetsFacilityInput_' + key).addClass('assets-facility-input-fail');
-                        $('#assetsFacilityInputMsg_' + key).html('<br>' + response.fieldFail[key]);
-
-                    }
-                }
-                alert('Facility not saved. Please check the indicated fields.');
-            } else {
-                $('#assetsFacilityDialog').dialog('close');
-                hideNoFacilities();
-                var facilityTemplate = templateParse($('#assetsFailityTemplate').html(), 'facility_', response.fieldStore);
-                $('#assets-facilities-container').prepend(facilityTemplate);
-                
-                
+            success: function (data, status)
+            {
+                var status = data.charAt(0);
+                $('#assetsDialog').html(data.substring(1));
+                $('#assetsDialog').dialog( "option", "title", "Add a new Facility" );
+                $('#assetsDialog').dialog('open');
+            },
+            error: function (xhr, desc, err)
+            {
+                alert("Sorry, we were unable to talk to our systems at the moment. Please try again.");
             }
-
-        function templateParse(template, prefix, data) {
-alert(data.name);            
-            for (var key in data) {
-alert(data[key]);                
-                template = template.replace('{* ' + prefix + key + ' *}', data[key]);
-            }
-            return template;            
-        }
-            
-        }).fail(function(){
-            alert('Unable to store this facility at this time. Please try again.');            
-        });
-
-/*
-        e.preventDefault();
-        var fileId = $(this).data('file');
-        
-        // Get possible custom field data
-        var fileFormData = $('#glm-file-form-' + fileId).serialize();
-        console.log(fileFormData);
-
-        var fileTitle = $('#InputTitle_' + fileId).val().trim();
-        var fileDescr = $('#InputDescr_' + fileId).val().trim();
-
-        $.ajax({
-            context: this,
-            type: 'POST',
-            url: '{$ajaxUrl}?action=glm_members_admin_ajax',
-            dataType: 'text',
-            data: {
-                glm_action: 'fileLibraryUpdate',
-                fileId: fileId,
-                title: fileTitle,
-                descr: fileDescr
-            }
-        }).done(function(){
-            $('.glm-edit-form-' + $(this).data('file')).hide();
-            $('.glm-file-' + $(this).data('file')).show();
-            $('#fileTitle_' + fileId).text(fileTitle);
-            clearFileLinks();
-        }).fail(function(msg){
-            alert('Unable to update file: ' + msg);            
-        });
-*/        
-    });
-    
-
-/*
-    
-    
-    $('.glm-edit').live('click', function(e){
-        e.preventDefault();
-        fileLinksEditSelected();
-        $('.glm-edit-form-' + $(this).data('file')).show();
-        var fileId = $(this).data('file');
-        lastFileTouched(fileId);
-    });
-
-    $('.glm-cancel').live('click', function(e){
-        e.preventDefault();
-        clearFileLinks();
-        $('.glm-edit-form-' + $(this).data('file')).hide();
-        $('.glm-file-' + $(this).data('file')).show();
-    });
-
-    // File Line Hover Action
-    var fileEditFlag = false;
-    var fileHoverId = false;    
-    $('.glm-file-line').live( 'mouseenter', function() {
-        if (fileEditFlag) {
-            return;
-        }
-        fileHoverId = $(this).attr('data-file');
-        $('.glm-file-links').addClass('glm-hidden');
-        $('#fileLinks_' + fileHoverId).removeClass('glm-hidden');
+        });        
     });
-    function fileLinksEditSelected() {
-        $('#fileLinks_' + fileHoverId).addClass('glm-hidden');
-        fileEditFlag = true;
-    }
-    function clearFileLinks() {
-        fileLinksEditSelected();
-        fileEditFlag = false;
-        fileHoverId = false;
-    }
-    $('.glm-admin-table-inner').mouseleave( function() {
-        $('#fileLinks_' + fileHoverId).addClass('glm-hidden');
-    })
     
-    // Delete file
-    $('.delete-file').live('click', function(e){
-        
-        e.preventDefault();
-        var fileId = $(this).data('file');
-
-        if (confirm('Are you sure you want to delete this file?')) {
-            $.ajax({
-                context: this,
-                url: '{$ajaxUrl}?action=glm_members_admin_ajax',
-                data: {
-                    glm_action: 'fileLibraryDelete',
-                    fileId: fileId
-                }
-            }).done(function(msg){
-                if (msg == 'File Deleted') {
-                    $('#fileContainer_' + fileId).fadeOut(1000, function() {
-                        $('#fileContainer_' + fileId).remove();
-                    });
-                } else {
-                    alert('Unable to delete: ' + msg);
-                }
-            }).fail(function(msg){
-                alert('Unable to delete this file at this time.');
-            });
-        }
-
+    // Edit a facility
+    $('.facility-edit').on('click', function(event) {
+        facilityEditFlag = true;
+        $.ajax({
+            url: '{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=assetManagement&option=editFacility&id=' + facilityHoverId,
+            type: $(this).attr("method"),
+            dataType: 'html',
+            processData: false,
+            contentType: false,
+            success: function (data, status)
+            {
+                var status = data.charAt(0);
+                $('#assetsDialog').html(data.substring(1));
+                $('#assetsDialog').dialog( "option", "title", "Edit Facility" );
+                $('#assetsDialog').dialog('open');
+            },
+            error: function (xhr, desc, err)
+            {
+                alert("Sorry, we were unable to talk to our systems at the moment. Please try again.");
+            }
+        });        
     });
-
-    function flashNotice(notice) {
-        notice.fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500);
-    }
     
-    $('.glm-update').live('click', function(e){
-        e.preventDefault();
-        var fileId = $(this).data('file');
-        
-        // Get possible custom field data
-        var fileFormData = $('#glm-file-form-' + fileId).serialize();
-        console.log(fileFormData);
-
-        var fileTitle = $('#InputTitle_' + fileId).val().trim();
-        var fileDescr = $('#InputDescr_' + fileId).val().trim();
+    // Submit Facility Form
+    $('#facilityForm').live('submit', function(event) {
 
+        event.preventDefault();        
         $.ajax({
-            context: this,
-            type: 'POST',
-            url: '{$ajaxUrl}?action=glm_members_admin_ajax',
-            dataType: 'text',
-            data: {
-                glm_action: 'fileLibraryUpdate',
-                fileId: fileId,
-                title: fileTitle,
-                descr: fileDescr
+            url: '{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=assetManagement&option=addNewFacility',
+            type: $(this).attr("method"),
+            dataType: 'html',
+            data: new FormData(this),
+            processData: false,
+            contentType: false,
+            success: function (data, status)
+            {
+                var status = data.charAt(0);
+                var html = data.substring(1);
+
+                // If all is good add this facility to the top of the list for now
+                if (status == 0) {
+                    $('#assetsFacilitiesContainer').prepend(html);
+                    $('#assetsDialog').dialog('close');
+                    hideNoFacilities();    
+                }
+            },
+            error: function (xhr, desc, err)
+            {
+                alert("Sorry, we were unable to talk to our systems at the moment. Please try again.");
             }
-        }).done(function(){
-            $('.glm-edit-form-' + $(this).data('file')).hide();
-            $('.glm-file-' + $(this).data('file')).show();
-            $('#fileTitle_' + fileId).text(fileTitle);
-            clearFileLinks();
-        }).fail(function(msg){
-            alert('Unable to update file: ' + msg);            
-        });
+        });        
     });
-
-    // highlight last file touched
-    function lastFileTouched(fileId) {
-        $('.glm-file-line').removeClass('last-file-touched');
-        $('#filenameLine_' + fileId).addClass('last-file-touched file-been-touched');
-    }
-*/
-
+    
+    
     function flashNotice(notice) {
         notice.fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500);
     }