JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
progress on webpacking css
[wfpl-cms.git] / inc / cms.php
index f8154a9..827880c 100644 (file)
@@ -2,86 +2,97 @@
 
 # This function (which loads the navbar and page content from the database) is
 # called automatically by wfpl_main()
+
+function enc_css_str($str) {
+    $str = str_replace("\\", "\\00005c", $str);
+    return str_replace("\"", "\\000022", $str);
+}
+
 function cms_display($basename, &$tem) {
-       if(preg_match('/([.]l(ocal)?$)|^192[.]168[.]|^127.0.0.1$|^10[.]/', $_SERVER['HTTP_HOST'])) {
-               $GLOBALS['wfpl_main_template']->set('$running_locally');
-       }
-       $tem->set('$host', this_host());
-       $nav_items = db_get_assocs('cms_pages', "coalesce(nullif(nav_title,''), title) as title,filename", 'where navbar!=0 order by navbar');
-       if($nav_items) {
-               foreach($nav_items as &$item) {
-                       $item['basename'] = $item['filename']; # for nav-links as images
-                       if($item['filename'] == $basename) {
-                               $item['current'] = true;
-                       }
-                       if($item['filename'] == 'index') {
-                               $item['filename'] = './';
-                       }
-                       if($item['title'] == '') {
-                               $item['title'] = '(untitled)';
-                       }
-               }
-               $tem->set('$navbar_items', $nav_items);
-       }
+    $tem->set('$host', this_host());
+    $nav_items = db_get_assocs('cms_pages', "coalesce(nullif(nav_title,''), title) as title,filename", 'where navbar!=0 order by navbar');
+    if($nav_items) {
+        foreach($nav_items as &$item) {
+            $item['basename'] = $item['filename']; # for nav-links as images
+            if($item['filename'] == $basename) {
+                $item['current'] = true;
+            }
+            if($item['filename'] == 'index') {
+                $item['filename'] = './';
+            }
+            if($item['title'] == '') {
+                $item['title'] = '(untitled)';
+            }
+        }
+        $tem->set('$navbar_items', $nav_items);
+    }
+
+    $header_image = persistent_get('wfplcms_header_image');
+    if ($header_image) {
+        $hi_css  = "\n<style>\n";
+        if ($header_image['width'] != WFPL_SITE_WIDTH) {
+            $hi_css .= ".siteHeader {\n";
+            $hi_css .=   'width: ' . $header_image['width'] . "px;\n";
+            $hi_css .= "}\n";
+        }
+        $hi_css .= ".siteHeader:before {\n";
+        $hi_css .=   "content: \"\";\n";
+        $hi_css .=   "display: block;\n";
+        $hi_css .=   'background-image: url(' . $header_image['url'] . ");\n";
+        $hi_css .=   'padding-top: ' . ($header_image['height'] / $header_image['width'] * 100) . "%;\n";
+        $hi_css .= "}\n";
+        if ($header_image['caption']) {
+            $hi_css .= ".siteHeader:after {\n";
+            $hi_css .=   "content: \"" . enc_css_str($header_image['caption']) . "\";\n";
+            $hi_css .= "}\n";
+        }
+        $hi_css .= "</style>\n";
 
-       $cms_page_id = cms_display_content($tem, 'where filename=%"', $basename);
+        $tem->set('$cms_css', $hi_css);
+    }
 
-       $footer = db_get_value('cms_pages', 'content', 'where filename="_footer"');
-       if ($footer) {
-               $tem->set('$cms_footer', $footer);
-       }
+    $cms_page = db_get_assoc('cms_pages', 'id,title,keywords,description,layout,content,sidebar_content', 'where filename=%"', $basename);
+    cms_display_content($tem, $cms_page);
 
-       $header = db_get_value('cms_images', 'image', 'where name="Header"');
-       if ($header) {
-               $parts = explode(' ', $header . '      ', 7);
-               $tem->set('$cms_header',
-                       '<div style="'
-                       . 'padding-top: ' . round(100000 * (int)$parts[2] / (int)$parts[1] / 1000) . '%;'
-                       . 'background-image: url(' . $parts[0] . ');'
-                       . 'background-repeat: no-repeat;'
-                       . 'background-size: 100% auto;'
-                       . '"></div>'
-               );
-       }
+    $footer = db_get_value('cms_pages', 'content', 'where filename="_footer"');
+    if ($footer) {
+        $tem->set('$cms_footer', $footer);
+    }
 
-       if(session_auth_can('admin_links')) {
-               $admin_links = array();
-               if($cms_page_id) {
-                       $admin_links['$edit_page_id'] = $cms_page_id;
-               }
-               $tem->set('$admin_links', $admin_links);
-       }
+    if(session_auth_can('admin_links')) {
+        $admin_links = array();
+        if($cms_page) {
+            $admin_links['$edit_page_id'] = $cms_page['id'];
+        }
+        $tem->set('$admin_links', $admin_links);
+    }
 
-       if($cms_page_id) {
-               return true;
-       } else {
-               return false;
-       }
+    if($cms_page) {
+        return true;
+    } else {
+        return false;
+    }
 }
 
-function cms_display_content(&$tem /*, 'where clause %", %i', string, int */) {
-       $args = array_slice(func_get_args(), 1);
-       $args = array_merge(array('cms_pages', 'id,title,keywords,description,layout,content,sidebar_content'), $args);
-       $row = call_user_func_array('db_get_assoc', $args);
-       if($row) {
-               $tem->set('$cms_title', $row['title']);
-               $tem->set('$meta_keywords', $row['keywords']);
-               $tem->set('$meta_description', $row['description']);
-               $tem->set('$cms_body', $row['content']);
-               if ($row['layout'] === '' || $row['layout'] === '0') {
-                       $tem->set('$layout_centerer_class', 'full');
-               } else {
-                       $tem->set('$layout_centerer_class', 'with_sidebar');
-                       if ($row['layout'] === '1') {
-                               $tem->set('$layout_sidebar_class', 'plain');
-                       } else {
-                               $tem->set('$layout_sidebar_class', 'bordered');
-                       }
-                       $tem->set('$cms_sidebar', $row['sidebar_content']);
-               }
-               return $row['id'];
-       } else {
-               $tem->set('$layout_centerer_class', 'full');
-       }
-       return false;
+function cms_display_content(&$tem, $row) {
+    if($row) {
+        $tem->set('$cms_title', $row['title']);
+        $tem->set('$meta_keywords', $row['keywords']);
+        $tem->set('$meta_description', $row['description']);
+        $tem->set('$cms_body', $row['content']);
+        if ($row['layout'] === '' || $row['layout'] === '0') {
+            $tem->set('siteLayoutClass', 'siteLayoutFull');
+        } else {
+            $tem->set('siteLayoutClass', 'siteLayoutSidebar');
+            if ($row['layout'] === '1') {
+                $tem->set('$layout_sidebar_class', 'plain');
+            } else {
+                $tem->set('$layout_sidebar_class', 'bordered');
+            }
+            $tem->set('$cms_sidebar', $row['sidebar_content']);
+        }
+        return $row['id'];
+    } else {
+        $tem->set('siteLayoutClass', 'siteLayoutFull');
+    }
 }