diff --git a/addons/smartphone/classes/smartphone.class.php b/addons/smartphone/classes/smartphone.class.php index 9ba8f7f0f..623f1bb90 100644 --- a/addons/smartphone/classes/smartphone.class.php +++ b/addons/smartphone/classes/smartphone.class.php @@ -1,106 +1,109 @@ oModule = $oModule; + $this->module_info = $module_info; + + if(!$this->module_info->menu_srl) { + $oMenuModel = &getAdminModel('menu'); + $menus = $oMenuModel->getMenus($this->module_info->site_srl); + if($menus[0]) $this->module_info->menu_srl = $menus[0]->menu_srl; + } + + if($this->module_info->menu_srl) { + $menu_cache_file = sprintf(_XE_PATH_.'files/cache/menu/%d.php', $this->module_info->menu_srl); + if(!file_exists($menu_cache_file)) return; + @include $menu_cache_file; + Context::addHtmlHeader(sprintf('', $this->_getAllItems($menu->list))); + $this->_setParentUrl($menu->list); } } - function setModuleInstance(&$oModule) { - if($this->oModule) return; - $this->oModule = $oModule; + function _setParentUrl($menu_list) { + if(!count($menu_list)) return; + foreach($menu_list as $key => $val) { + if(!$val['text']) continue; + if($val['list'] && $this->_setParentUrl($val['list'])) { + $href = $val['href']; + if(preg_match('/^[a-z0-9_]+$/i',$val['url'])) $href = getUrl('','mid',$val['url'],'smartphone','true'); + else $href = $val['href']; + $this->setParentUrl($href); + return false; + } + if($val['url']==Context::get('mid')) return true; + } + return false; + } + + function _getAllItems($menu_list, $depth=0) { + if(!count($menu_list)) return; + $output = ''; + + foreach($menu_list as $menu_item) + { + if($output) $output .= ","; + $key = $menu_item['text']; + $val = $menu_item['url']; + if($menu_item['list']) { + $childs = '{'.$this->_getAllItems($menu_item['list'], $depth+1).'}'; + } else { + $childs = 'null'; + } + + $output .= sprintf('"%s" : { "url" : "%s", "childs" : %s } ',str_replace('"','\"',$key), str_replace('"','\"',$val), $childs); + } + return $output; + } + + function procSmartPhone() { + if(is_a($this->output, 'Object') || is_subclass_of($this->output, 'Object')) { + $this->setContent($this->output->getMessage()); + return; + } + + if($this->haveSmartphoneModule($this->module_info->module)) { + $oSmartPhoneModule =& getModule($this->module_info->module, 'smartphone'); + $vars = get_object_vars($this->oModule); + if(count($vars)) foreach($vars as $key => $val) $oSmartPhoneModule->{$key} = $val; + $oSmartPhoneModule->procSmartPhone($this); + } else { + $this->setContent('요청하신 모듈은 스마트폰을 지원하지 않습니다'); + } } function setContent($content) { $this->content = $content; } - function setModuleInfo(&$module_info) - { - if($this->module_info) return; - $this->module_info = $module_info; + function setParentUrl($url) { + $this->parent_url = $url; } - function procSmartPhone() - { - if(!$this->module_info) return; - $oModule =& getModule($this->module_info->module, 'smartphone'); - if(!$oModule || !method_exists($oModule, 'procSmartPhone') ) return; - $vars = get_object_vars($this->oModule); - if(count($vars)) foreach($vars as $key => $val) $oModule->{$key} = $val; - return $oModule->procSmartPhone($this); + function setPrevUrl($url) { + $this->prev_url = $url; } - function getAllItems(&$menu_list, $node_srl = 0, $node_text= "Main Menu") - { - if($node_srl == 0) $this->menuList = array(); - - $obj = null; - $obj->text = $node_text; - $obj->list = array(); - foreach($menu_list as $menu_node_srl => $menu_item) - { - $it = null; - if(!preg_match('/^([a-zA-Z0-9\_\-]+)$/', $menu_item['url'])) { continue; } - if($menu_item["list"] && count($menu_item["list"]) > 0) - { - $this->getAllItems($menu_item["list"], $menu_node_srl, $menu_item["text"]); - } - $it->text = $menu_item["text"]; - $it->url = $menu_item["url"]; - $obj->list[$menu_node_srl] = $it; - } - $this->menuList[$node_srl] = $obj; + function setNextUrl($url) { + $this->next_url = $url; } - function setMenu() - { - $menu_cache_file = sprintf(_XE_PATH_.'files/cache/menu/%d.php', $this->module_info->menu_srl); - if(!file_exists($menu_cache_file)) return; - - include $menu_cache_file; - - $this->getAllItems($menu->list); - Context::set('menus', $this->menuList); - } - - function display() - { - Context::set('layout', 'none'); - $act = Context::get('act'); - if($act) - { - $content = $this->procSmartPhone(); - } - else - { - Context::set('module_info', $this->module_info); - $this->setMenu(); - $oModule =& getModule($this->module_info->module, 'smartphone'); - if($oModule && method_exists($oModule, 'procSmartPhone') ) Context::set('bHavePhoneMethod', true); - $oTemplate = new TemplateHandler(); - $oContext = &Context::getInstance(); - $content = $oTemplate->compile(_XE_PATH_."addons/smartphone/tpl", "layout"); - } - print $content; - - exit(); - } } ?> diff --git a/addons/smartphone/iui/LICENSE.txt b/addons/smartphone/iui/LICENSE.txt deleted file mode 100644 index c43b26eec..000000000 --- a/addons/smartphone/iui/LICENSE.txt +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 2007, iUI Project Members - -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of the iUI Project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/addons/smartphone/iui/backButton.png b/addons/smartphone/iui/backButton.png deleted file mode 100644 index e27ea8cdf..000000000 Binary files a/addons/smartphone/iui/backButton.png and /dev/null differ diff --git a/addons/smartphone/iui/blueButton.png b/addons/smartphone/iui/blueButton.png deleted file mode 100644 index 0f92dfd94..000000000 Binary files a/addons/smartphone/iui/blueButton.png and /dev/null differ diff --git a/addons/smartphone/iui/cancel.png b/addons/smartphone/iui/cancel.png deleted file mode 100644 index 5f6dcc87d..000000000 Binary files a/addons/smartphone/iui/cancel.png and /dev/null differ diff --git a/addons/smartphone/iui/grayButton.png b/addons/smartphone/iui/grayButton.png deleted file mode 100644 index 0ce6a30d4..000000000 Binary files a/addons/smartphone/iui/grayButton.png and /dev/null differ diff --git a/addons/smartphone/iui/image/next.png b/addons/smartphone/iui/image/next.png deleted file mode 100644 index 1b2c6e4ef..000000000 Binary files a/addons/smartphone/iui/image/next.png and /dev/null differ diff --git a/addons/smartphone/iui/image/next_New.png b/addons/smartphone/iui/image/next_New.png deleted file mode 100644 index eefc826dd..000000000 Binary files a/addons/smartphone/iui/image/next_New.png and /dev/null differ diff --git a/addons/smartphone/iui/image/previous.png b/addons/smartphone/iui/image/previous.png deleted file mode 100644 index 8095e0928..000000000 Binary files a/addons/smartphone/iui/image/previous.png and /dev/null differ diff --git a/addons/smartphone/iui/image/previous_New.png b/addons/smartphone/iui/image/previous_New.png deleted file mode 100644 index 36b1752c0..000000000 Binary files a/addons/smartphone/iui/image/previous_New.png and /dev/null differ diff --git a/addons/smartphone/iui/iui.css b/addons/smartphone/iui/iui.css deleted file mode 100644 index 6470d9b59..000000000 --- a/addons/smartphone/iui/iui.css +++ /dev/null @@ -1,486 +0,0 @@ -/* iui.css (c) 2007 by iUI Project Members, see LICENSE.txt for license */ -body { - margin: 0; - font-family: Helvetica; - background: #FFFFFF; - color: #000000; - overflow-x: hidden; - -webkit-user-select: none; - -webkit-text-size-adjust: none; -} - -body > *:not(.toolbar) { - display: none; - position: absolute; - margin: 0; - padding: 0; - left: 0; - top: 45px; - width: 100%; - min-height: 372px; -} - -body[orient="landscape"] > *:not(.toolbar) { - min-height: 268px; -} - -body > *[selected="true"] { - display: block; -} - -a[selected].link, a:active, link { - background-color: #194fdb !important; - background-image: url(listArrowSel.png), url(selection.png) !important; - background-repeat: no-repeat, repeat-x; - background-position: right center, left top; - color: #FFFFFF !important; -} - -a[selected="progress"].link { - background-image: url(loading.gif), url(selection.png) !important; -} - -/************************************************************************************************/ - -body > .toolbar { - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - border-bottom: 1px solid #2d3642; - border-top: 1px solid #6d84a2; - padding: 10px; - height: 45px; - background: url(toolbar.png) #6d84a2 repeat-x; -} - -.toolbar > h1 { - position: absolute; - overflow: hidden; - left: 50%; - margin: 1px 0 0 -75px; - height: 45px; - font-size: 20px; - width: 150px; - font-weight: bold; - text-shadow: rgba(0, 0, 0, 0.4) 0px -1px 0; - text-align: center; - text-overflow: ellipsis; - white-space: nowrap; - color: #FFFFFF; -} - -body[orient="landscape"] > .toolbar > h1 { - margin-left: -125px; - width: 250px; -} - -.button { - position: absolute; - overflow: hidden; - top: 8px; - right: 6px; - margin: 0; - border-width: 0 5px; - padding: 0 3px; - width: auto; - height: 30px; - line-height: 30px; - font-family: inherit; - font-size: 12px; - font-weight: bold; - color: #FFFFFF; - text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0; - text-overflow: ellipsis; - text-decoration: none; - white-space: nowrap; - background: none; - -webkit-border-image: url(toolButton.png) 0 5 0 5; -} - -.blueButton { - -webkit-border-image: url(blueButton.png) 0 5 0 5; - border-width: 0 5px; -} - -.leftButton { - left: 6px; - right: auto; -} - -#backButton { - display: none; - left: 6px; - right: auto; - padding: 0; - max-width: 55px; - border-width: 0 8px 0 14px; - -webkit-border-image: url(backButton.png) 0 8 0 14; -} - -.whiteButton, -.grayButton { - display: block; - border-width: 0 12px; - padding: 10px; - text-align: center; - font-size: 20px; - font-weight: bold; - text-decoration: inherit; - color: inherit; -} - -.whiteButton { - -webkit-border-image: url(whiteButton.png) 0 12 0 12; - text-shadow: rgba(255, 255, 255, 0.7) 0 1px 0; -} - -.grayButton { - -webkit-border-image: url(grayButton.png) 0 12 0 12; - color: #FFFFFF; -} - -/************************************************************************************************/ - -body > ul > li { - position: relative; - margin: 0; - border-bottom: 1px solid #E0E0E0; - padding: 8px 0 8px 10px; - font-size: 18px; - font-weight: bold; - list-style: none; -} - -body > ul > li.group { - position: relative; - top: -1px; - margin-bottom: -2px; - border-top: 1px solid #7d7d7d; - border-bottom: 1px solid #999999; - padding: 1px 10px; - background: url(listGroup.png) repeat-x; - font-size: 17px; - font-weight: bold; - text-shadow: rgba(0, 0, 0, 0.4) 0 1px 0; - color: #FFFFFF; -} - -body > ul > li.group:first-child { - top: 0; - border-top: none; -} - -body > ul > li > a { - display: block; - margin: -8px 0 -8px -10px; - padding: 8px 32px 8px 10px; - text-decoration: none; - color: inherit; - background: url(listArrow.png) no-repeat right center; -} - -a[target="_replace"] { - box-sizing: border-box; - -webkit-box-sizing: border-box; - padding-top: 25px; - padding-bottom: 25px; - font-size: 18px; - color: cornflowerblue; - background-color: #FFFFFF; - background-image: none; -} - -/************************************************************************************************/ - -body > .dialog { - top: 0; - width: 100%; - min-height: 417px; - z-index: 2; - background: rgba(0, 0, 0, 0.8); - padding: 0; - text-align: right; -} - -.dialog > fieldset { - box-sizing: border-box; - -webkit-box-sizing: border-box; - width: 100%; - margin: 0; - border: none; - border-top: 1px solid #6d84a2; - padding: 10px 6px; - background: url(toolbar.png) #7388a5 repeat-x; -} - -.dialog > fieldset > h1 { - margin: 0 10px 0 10px; - padding: 0; - font-size: 20px; - font-weight: bold; - color: #FFFFFF; - text-shadow: rgba(0, 0, 0, 0.4) 0px -1px 0; - text-align: center; -} - -.dialog > fieldset > label { - position: absolute; - margin: 16px 0 0 6px; - font-size: 14px; - color: #999999; -} - -input { - box-sizing: border-box; - -webkit-box-sizing: border-box; - width: 100%; - margin: 8px 0 0 0; - padding: 6px 6px 6px 44px; - font-size: 16px; - font-weight: normal; -} - -/************************************************************************************************/ - -body > .panel { - box-sizing: border-box; - -webkit-box-sizing: border-box; - padding: 10px; - background: #c8c8c8 url(pinstripes.png); -} - -.panel > fieldset { - position: relative; - margin: 0 0 20px 0; - padding: 0; - background: #FFFFFF; - -webkit-border-radius: 8px; - border: 1px solid #999999; - text-align: right; - font-size: 16px; -} - -.row { - position: relative; - min-height: 42px; - border-bottom: 1px solid #999999; - -webkit-border-radius: 0; - text-align: right; -} - -fieldset > .row:last-child { - border-bottom: none !important; -} - -.row > input { - box-sizing: border-box; - -webkit-box-sizing: border-box; - margin: 0; - border: none; - padding: 12px 10px 0 110px; - height: 42px; - background: none; -} - -.row > label { - position: absolute; - margin: 0 0 0 14px; - line-height: 42px; - font-weight: bold; -} - -.row > .toggle { - position: absolute; - top: 6px; - right: 6px; - width: 100px; - height: 28px; -} - -.toggle { - border: 1px solid #888888; - -webkit-border-radius: 6px; - background: #FFFFFF url(toggle.png) repeat-x; - font-size: 19px; - font-weight: bold; - line-height: 30px; -} - -.toggle[toggled="true"] { - border: 1px solid #143fae; - background: #194fdb url(toggleOn.png) repeat-x; -} - -.toggleOn { - display: none; - position: absolute; - width: 60px; - text-align: center; - left: 0; - top: 0; - color: #FFFFFF; - text-shadow: rgba(0, 0, 0, 0.4) 0px -1px 0; -} - -.toggleOff { - position: absolute; - width: 60px; - text-align: center; - right: 0; - top: 0; - color: #666666; -} - -.toggle[toggled="true"] > .toggleOn { - display: block; -} - -.toggle[toggled="true"] > .toggleOff { - display: none; -} - -.thumb { - position: absolute; - top: -1px; - left: -1px; - width: 40px; - height: 28px; - border: 1px solid #888888; - -webkit-border-radius: 6px; - background: #ffffff url(thumb.png) repeat-x; -} - -.toggle[toggled="true"] > .thumb { - left: auto; - right: -1px; -} - -.panel > h2 { - margin: 0 0 8px 14px; - font-size: inherit; - font-weight: bold; - color: #4d4d70; - text-shadow: rgba(255, 255, 255, 0.75) 2px 2px 0; -} - -.panel > .content { - background: #FFFFFF; - -webkit-border-radius: 8px; - border: 1px solid #999999; - padding: 10px; -} - -/************************************************************************************************/ - -#preloader { - display: none; - background-image: url(loading.gif), url(selection.png), - url(blueButton.png), url(listArrowSel.png), url(listGroup.png); -} - -body > ul > li.post_item > a > .post > span.title { - font-size:13px; - font-weight:normal; - display:block; -} -body > ul > li.post_item > a > .post > span.description { - font-size:10px; - font-weight:normal; - color:#bbb; - display:block; - margin-top:2px; - letter-spacing:0px; -} - -.next, .previous { - display: block; - text-decoration: none; - font-size: 16px; - padding: 7px 0; - background: url(image/previous_New.png) no-repeat; - color: #fff; - margin: 8px 12px; - width: 110px; - height: 21px; - text-align: center; - margin-bottom: 30px; - font-weight:normal; -} - -.next { - float: right; - background: url(image/next_New.png) no-repeat; -} - -.previous { - float: left; - opacity: 0.7; - margin: 8px 0px; -} - -.pagination { - background: none; - border: none; - text-align: center; -} - -.pagination strong { - font-size: 32px; - color: #ccc; - position: relative; - top: 5px; -} - -.siteinfo .description -{ - display: block; - font-size: 16px; - color: #6699FF; - text-align: right; -} - -.siteinfo .xe -{ - display: block; - text-align: right; - font-size:11px; - color: #999; -} - -ul.navigation { - margin:0; - padding:0; - list-style: none; -} - -ul.navigation > li { - position: relative; - font-size: 14px; - border-bottom: 1px solid #E0E0E0; - text-align: left; -} - -ul.navigation > li > a { - display: block; - background-image: url(listArrow.png); - background-repeat: no-repeat; - background-position: right center; - color: inherit; - text-decoration: none; - padding: 8px 32px 8px 10px; -} - -.comment_item > .author { - color: #3074A5; -} - -.comment_item > .regdate { - float:right; - font-size: 12px; - color: #CCC; -} - -.comment_item > .re { - font-size: 12px; - color: #DCC; -} diff --git a/addons/smartphone/iui/iui.js b/addons/smartphone/iui/iui.js deleted file mode 100644 index e479fefa6..000000000 --- a/addons/smartphone/iui/iui.js +++ /dev/null @@ -1,383 +0,0 @@ -/* - Copyright (c) 2007, iUI Project Members - See LICENSE.txt for licensing terms - */ - - -(function() { - -var slideSpeed = 40; -var slideInterval = 0; - -var currentPage = null; -var currentDialog = null; -var currentWidth = 0; -var currentHash = location.hash; -var hashPrefix = "#_"; -var pageHistory = []; -var newPageCount = 0; -var checkTimer; - -// ************************************************************************************************* - -window.iui = -{ - showPage: function(page, backwards) - { - if (page) - { - if (currentDialog) - { - currentDialog.removeAttribute("selected"); - currentDialog = null; - } - - if (hasClass(page, "dialog")) - showDialog(page); - else - { - var fromPage = currentPage; - currentPage = page; - - if (fromPage) - setTimeout(slidePages, 0, fromPage, page, backwards); - else - updatePage(page, fromPage); - } - } - }, - - showPageById: function(pageId) - { - var page = $(pageId); - if (page) - { - var index = pageHistory.indexOf(pageId); - var backwards = index != -1; - if (backwards) - pageHistory.splice(index, pageHistory.length); - - iui.showPage(page, backwards); - } - }, - - showPageByHref: function(href, args, method, replace, cb) - { - var req = new XMLHttpRequest(); - req.onerror = function() - { - if (cb) - cb(false); - }; - - req.onreadystatechange = function() - { - if (req.readyState == 4) - { - if (replace) - replaceElementWithSource(replace, req.responseText); - else - { - var frag = document.createElement("div"); - frag.innerHTML = req.responseText; - iui.insertPages(frag.childNodes); - } - if (cb) - setTimeout(cb, 1000, true); - } - }; - - if (args) - { - req.open(method || "GET", href, true); - req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); - req.setRequestHeader("Content-Length", args.length); - req.send(args.join("&")); - } - else - { - req.open(method || "GET", href, true); - req.send(null); - } - }, - - insertPages: function(nodes) - { - var targetPage; - for (var i = 0; i < nodes.length; ++i) - { - var child = nodes[i]; - if (child.nodeType == 1) - { - if (!child.id) - child.id = "__" + (++newPageCount) + "__"; - - var clone = $(child.id); - if (clone) - clone.parentNode.replaceChild(child, clone); - else - document.body.appendChild(child); - - if (child.getAttribute("selected") == "true" || !targetPage) - targetPage = child; - - --i; - } - } - - if (targetPage) - iui.showPage(targetPage); - }, - - getSelectedPage: function() - { - for (var child = document.body.firstChild; child; child = child.nextSibling) - { - if (child.nodeType == 1 && child.getAttribute("selected") == "true") - return child; - } - } -}; - -// ************************************************************************************************* - -addEventListener("load", function(event) -{ - var page = iui.getSelectedPage(); - if (page) - iui.showPage(page); - - setTimeout(preloadImages, 0); - setTimeout(checkOrientAndLocation, 0); - checkTimer = setInterval(checkOrientAndLocation, 300); -}, false); - -addEventListener("click", function(event) -{ - var link = findParent(event.target, "a"); - if (link) - { - function unselect() { link.removeAttribute("selected"); } - - if (link.href && link.hash && link.hash != "#") - { - link.setAttribute("selected", "true"); - iui.showPage($(link.hash.substr(1))); - setTimeout(unselect, 500); - } - else if (link == $("backButton")) - history.back(); - else if (link.getAttribute("type") == "submit") - submitForm(findParent(link, "form")); - else if (link.getAttribute("type") == "cancel") - cancelDialog(findParent(link, "form")); - else if (link.target == "_replace") - { - link.setAttribute("selected", "progress"); - iui.showPageByHref(link.href, null, null, link, unselect); - } - else if (!link.target) - { - link.setAttribute("selected", "progress"); - iui.showPageByHref(link.href, null, null, null, unselect); - } - else - return; - - event.preventDefault(); - } -}, true); - -addEventListener("click", function(event) -{ - var div = findParent(event.target, "div"); - if (div && hasClass(div, "toggle")) - { - div.setAttribute("toggled", div.getAttribute("toggled") != "true"); - event.preventDefault(); - } -}, true); - -function checkOrientAndLocation() -{ - if (window.innerWidth != currentWidth) - { - currentWidth = window.innerWidth; - var orient = currentWidth == 320 ? "profile" : "landscape"; - document.body.setAttribute("orient", orient); - setTimeout(scrollTo, 100, 0, 1); - } - - if (location.hash != currentHash) - { - var pageId = location.hash.substr(hashPrefix.length) - iui.showPageById(pageId); - } -} - -function showDialog(page) -{ - currentDialog = page; - page.setAttribute("selected", "true"); - - if (hasClass(page, "dialog") && !page.target) - showForm(page); -} - -function showForm(form) -{ - form.onsubmit = function(event) - { - event.preventDefault(); - submitForm(form); - }; - - form.onclick = function(event) - { - if (event.target == form && hasClass(form, "dialog")) - cancelDialog(form); - }; -} - -function cancelDialog(form) -{ - form.removeAttribute("selected"); -} - -function updatePage(page, fromPage) -{ - if (!page.id) - page.id = "__" + (++newPageCount) + "__"; - - location.href = currentHash = hashPrefix + page.id; - pageHistory.push(page.id); - - var pageTitle = $("pageTitle"); - if (page.title) - pageTitle.innerHTML = page.title; - - if (page.localName.toLowerCase() == "form" && !page.target) - showForm(page); - - var backButton = $("backButton"); - if (backButton) - { - var prevPage = $(pageHistory[pageHistory.length-2]); - if (prevPage && !page.getAttribute("hideBackButton")) - { - backButton.style.display = "inline"; - backButton.innerHTML = prevPage.title ? prevPage.title : "Back"; - } - else - backButton.style.display = "none"; - } -} - -function slidePages(fromPage, toPage, backwards) -{ - var axis = (backwards ? fromPage : toPage).getAttribute("axis"); - if (axis == "y") - (backwards ? fromPage : toPage).style.top = "100%"; - else - toPage.style.left = "100%"; - - toPage.setAttribute("selected", "true"); - scrollTo(0, 1); - clearInterval(checkTimer); - - var percent = 100; - slide(); - var timer = setInterval(slide, slideInterval); - - function slide() - { - percent -= slideSpeed; - if (percent <= 0) - { - percent = 0; - if (!hasClass(toPage, "dialog")) - fromPage.removeAttribute("selected"); - clearInterval(timer); - checkTimer = setInterval(checkOrientAndLocation, 300); - setTimeout(updatePage, 0, toPage, fromPage); - } - - if (axis == "y") - { - backwards - ? fromPage.style.top = (100-percent) + "%" - : toPage.style.top = percent + "%"; - } - else - { - fromPage.style.left = (backwards ? (100-percent) : (percent-100)) + "%"; - toPage.style.left = (backwards ? -percent : percent) + "%"; - } - } -} - -function preloadImages() -{ - var preloader = document.createElement("div"); - preloader.id = "preloader"; - document.body.appendChild(preloader); -} - -function submitForm(form) -{ - iui.showPageByHref(form.action || "POST", encodeForm(form), form.method); -} - -function encodeForm(form) -{ - function encode(inputs) - { - for (var i = 0; i < inputs.length; ++i) - { - if (inputs[i].name) - args.push(inputs[i].name + "=" + escape(inputs[i].value)); - } - } - - var args = []; - encode(form.getElementsByTagName("input")); - encode(form.getElementsByTagName("select")); - return args; -} - -function findParent(node, localName) -{ - while (node && (node.nodeType != 1 || node.localName.toLowerCase() != localName)) - node = node.parentNode; - return node; -} - -function hasClass(self, name) -{ - var re = new RegExp("(^|\\s)"+name+"($|\\s)"); - return re.exec(self.getAttribute("class")) != null; -} - -function replaceElementWithSource(replace, source) -{ - var page = replace.parentNode; - var parent = replace; - while (page.parentNode != document.body) - { - page = page.parentNode; - parent = parent.parentNode; - } - - var frag = document.createElement(parent.localName); - frag.innerHTML = source; - - page.removeChild(parent); - - while (frag.firstChild) - page.appendChild(frag.firstChild); -} - -function $(id) { return document.getElementById(id); } -function ddd() { console.log.apply(console, arguments); } - -})(); diff --git a/addons/smartphone/iui/iuix.css b/addons/smartphone/iui/iuix.css deleted file mode 100644 index 1a1969058..000000000 --- a/addons/smartphone/iui/iuix.css +++ /dev/null @@ -1 +0,0 @@ -body{margin:0;font-family:Helvetica;background:#FFF;color:#000;overflow-x:hidden;-webkit-user-select:none;-webkit-text-size-adjust:none;}body>*:not(.toolbar){display:none;position:absolute;margin:0;padding:0;left:0;top:45px;width:100%;min-height:372px;}body[orient="landscape"]>*:not(.toolbar){min-height:268px;}body>*[selected="true"]{display:block;}a[selected],a:active{background-color:#194fdb!important;background-image:url(listArrowSel.png),url(selection.png)!important;background-repeat:no-repeat,repeat-x;background-position:right center,left top;color:#FFF!important;}a[selected="progress"]{background-image:url(loading.gif),url(selection.png)!important;}body>.toolbar{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;border-bottom:1px solid #2d3642;border-top:1px solid #6d84a2;padding:10px;height:45px;background:url(toolbar.png) #6d84a2 repeat-x;}.toolbar>h1{position:absolute;overflow:hidden;left:50%;margin:1px 0 0 -75px;height:45px;font-size:20px;width:150px;font-weight:bold;text-shadow:rgba(0,0,0,0.4) 0 -1px 0;text-align:center;text-overflow:ellipsis;white-space:nowrap;color:#FFF;}body[orient="landscape"]>.toolbar>h1{margin-left:-125px;width:250px;}.button{position:absolute;overflow:hidden;top:8px;right:6px;margin:0;border-width:0 5px;padding:0 3px;width:auto;height:30px;line-height:30px;font-family:inherit;font-size:12px;font-weight:bold;color:#FFF;text-shadow:rgba(0,0,0,0.6) 0 -1px 0;text-overflow:ellipsis;text-decoration:none;white-space:nowrap;background:none;-webkit-border-image:url(toolButton.png) 0 5 0 5;}.blueButton{-webkit-border-image:url(blueButton.png) 0 5 0 5;border-width:0 5px;}.leftButton{left:6px;right:auto;}#backButton{display:none;left:6px;right:auto;padding:0;max-width:55px;border-width:0 8px 0 14px;-webkit-border-image:url(backButton.png) 0 8 0 14;}.whiteButton,.grayButton{display:block;border-width:0 12px;padding:10px;text-align:center;font-size:20px;font-weight:bold;text-decoration:inherit;color:inherit;}.whiteButton{-webkit-border-image:url(whiteButton.png) 0 12 0 12;text-shadow:rgba(255,255,255,0.7) 0 1px 0;}.grayButton{-webkit-border-image:url(grayButton.png) 0 12 0 12;color:#FFF;}body>ul>li{position:relative;margin:0;border-bottom:1px solid #E0E0E0;padding:8px 0 8px 10px;font-size:20px;font-weight:bold;list-style:none;}body>ul>li.group{position:relative;top:-1px;margin-bottom:-2px;border-top:1px solid #7d7d7d;border-bottom:1px solid #999;padding:1px 10px;background:url(listGroup.png) repeat-x;font-size:17px;font-weight:bold;text-shadow:rgba(0,0,0,0.4) 0 1px 0;color:#FFF;}body>ul>li.group:first-child{top:0;border-top:none;}body>ul>li>a{display:block;margin:-8px 0 -8px -10px;padding:8px 32px 8px 10px;text-decoration:none;color:inherit;background:url(listArrow.png) no-repeat right center;}a[target="_replace"]{box-sizing:border-box;-webkit-box-sizing:border-box;padding-top:25px;padding-bottom:25px;font-size:18px;color:cornflowerblue;background-color:#FFF;background-image:none;}body>.dialog{top:0;width:100%;min-height:417px;z-index:2;background:rgba(0,0,0,0.8);padding:0;text-align:right;}.dialog>fieldset{box-sizing:border-box;-webkit-box-sizing:border-box;width:100%;margin:0;border:none;border-top:1px solid #6d84a2;padding:10px 6px;background:url(toolbar.png) #7388a5 repeat-x;}.dialog>fieldset>h1{margin:0 10px 0 10px;padding:0;font-size:20px;font-weight:bold;color:#FFF;text-shadow:rgba(0,0,0,0.4) 0 -1px 0;text-align:center;}.dialog>fieldset>label{position:absolute;margin:16px 0 0 6px;font-size:14px;color:#999;}input{box-sizing:border-box;-webkit-box-sizing:border-box;width:100%;margin:8px 0 0 0;padding:6px 6px 6px 44px;font-size:16px;font-weight:normal;}body>.panel{box-sizing:border-box;-webkit-box-sizing:border-box;padding:10px;background:#c8c8c8 url(pinstripes.png);}.panel>fieldset{position:relative;margin:0 0 20px 0;padding:0;background:#FFF;-webkit-border-radius:10px;border:1px solid #999;text-align:right;font-size:16px;}.row{position:relative;min-height:42px;border-bottom:1px solid #999;-webkit-border-radius:0;text-align:right;}fieldset>.row:last-child{border-bottom:none!important;}.row>input{box-sizing:border-box;-webkit-box-sizing:border-box;margin:0;border:none;padding:12px 10px 0 110px;height:42px;background:none;}.row>label{position:absolute;margin:0 0 0 14px;line-height:42px;font-weight:bold;}.row>.toggle{position:absolute;top:6px;right:6px;width:100px;height:28px;}.toggle{border:1px solid #888;-webkit-border-radius:6px;background:#FFF url(toggle.png) repeat-x;font-size:19px;font-weight:bold;line-height:30px;}.toggle[toggled="true"]{border:1px solid #143fae;background:#194fdb url(toggleOn.png) repeat-x;}.toggleOn{display:none;position:absolute;width:60px;text-align:center;left:0;top:0;color:#FFF;text-shadow:rgba(0,0,0,0.4) 0 -1px 0;}.toggleOff{position:absolute;width:60px;text-align:center;right:0;top:0;color:#666;}.toggle[toggled="true"]>.toggleOn{display:block;}.toggle[toggled="true"]>.toggleOff{display:none;}.thumb{position:absolute;top:-1px;left:-1px;width:40px;height:28px;border:1px solid #888;-webkit-border-radius:6px;background:#fff url(thumb.png) repeat-x;}.toggle[toggled="true"]>.thumb{left:auto;right:-1px;}.panel>h2{margin:0 0 8px 14px;font-size:inherit;font-weight:bold;color:#4d4d70;text-shadow:rgba(255,255,255,0.75) 2px 2px 0;}#preloader{display:none;background-image:url(loading.gif),url(selection.png),url(blueButton.png),url(listArrowSel.png),url(listGroup.png);} \ No newline at end of file diff --git a/addons/smartphone/iui/iuix.js b/addons/smartphone/iui/iuix.js deleted file mode 100644 index 3b2b37f9d..000000000 --- a/addons/smartphone/iui/iuix.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var _1=20;var _2=0;var _3=null;var _4=null;var _5=0;var _6=location.hash;var _7="#_";var _8=[];var _9=0;var _a;window.iui={showPage:function(_b,_c){if(_b){if(_4){_4.removeAttribute("selected");_4=null;}if(hasClass(_b,"dialog")){showDialog(_b);}else{var _d=_3;_3=_b;if(_d){setTimeout(slidePages,0,_d,_b,_c);}else{updatePage(_b,_d);}}}},showPageById:function(_e){var _f=$(_e);if(_f){var _10=_8.indexOf(_e);var _11=_10!=-1;if(_11){_8.splice(_10,_8.length);}iui.showPage(_f,_11);}},showPageByHref:function(_12,_13,_14,_15,cb){var req=new XMLHttpRequest();req.onerror=function(){if(cb){cb(false);}};req.onreadystatechange=function(){if(req.readyState==4){if(_15){replaceElementWithSource(_15,req.responseText);}else{var _18=document.createElement("div");_18.innerHTML=req.responseText;iui.insertPages(_18.childNodes);}if(cb){setTimeout(cb,1000,true);}}};if(_13){req.open(_14||"GET",_12,true);req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");req.setRequestHeader("Content-Length",_13.length);req.send(_13.join("&"));}else{req.open(_14||"GET",_12,true);req.send(null);}},insertPages:function(_19){var _1a;for(var i=0;i<_19.length;++i){var _1c=_19[i];if(_1c.nodeType==1){if(!_1c.id){_1c.id="__"+(++_9)+"__";}var _1d=$(_1c.id);if(_1d){_1d.parentNode.replaceChild(_1c,_1d);}else{document.body.appendChild(_1c);}if(_1c.getAttribute("selected")=="true"||!_1a){_1a=_1c;}--i;}}if(_1a){iui.showPage(_1a);}},getSelectedPage:function(){for(var _1e=document.body.firstChild;_1e;_1e=_1e.nextSibling){if(_1e.nodeType==1&&_1e.getAttribute("selected")=="true"){return _1e;}}}};addEventListener("load",function(_1f){var _20=iui.getSelectedPage();if(_20){iui.showPage(_20);}setTimeout(preloadImages,0);setTimeout(checkOrientAndLocation,0);_a=setInterval(checkOrientAndLocation,300);},false);addEventListener("click",function(_21){var _22=findParent(_21.target,"a");if(_22){function unselect(){_22.removeAttribute("selected");}if(_22.href&&_22.hash&&_22.hash!="#"){_22.setAttribute("selected","true");iui.showPage($(_22.hash.substr(1)));setTimeout(unselect,500);}else{if(_22==$("backButton")){history.back();}else{if(_22.getAttribute("type")=="submit"){submitForm(findParent(_22,"form"));}else{if(_22.getAttribute("type")=="cancel"){cancelDialog(findParent(_22,"form"));}else{if(_22.target=="_replace"){_22.setAttribute("selected","progress");iui.showPageByHref(_22.href,null,null,_22,unselect);}else{if(!_22.target){_22.setAttribute("selected","progress");iui.showPageByHref(_22.href,null,null,null,unselect);}else{return;}}}}}}_21.preventDefault();}},true);addEventListener("click",function(_23){var div=findParent(_23.target,"div");if(div&&hasClass(div,"toggle")){div.setAttribute("toggled",div.getAttribute("toggled")!="true");_23.preventDefault();}},true);function checkOrientAndLocation(){if(window.innerWidth!=_5){_5=window.innerWidth;var _25=_5==320?"profile":"landscape";document.body.setAttribute("orient",_25);setTimeout(scrollTo,100,0,1);}if(location.hash!=_6){var _26=location.hash.substr(_7.length);iui.showPageById(_26);}}function showDialog(_27){_4=_27;_27.setAttribute("selected","true");if(hasClass(_27,"dialog")&&!_27.target){showForm(_27);}}function showForm(_28){_28.onsubmit=function(_29){_29.preventDefault();submitForm(_28);};_28.onclick=function(_2a){if(_2a.target==_28&&hasClass(_28,"dialog")){cancelDialog(_28);}};}function cancelDialog(_2b){_2b.removeAttribute("selected");}function updatePage(_2c,_2d){if(!_2c.id){_2c.id="__"+(++_9)+"__";}location.href=_6=_7+_2c.id;_8.push(_2c.id);var _2e=$("pageTitle");if(_2c.title){_2e.innerHTML=_2c.title;}if(_2c.localName.toLowerCase()=="form"&&!_2c.target){showForm(_2c);}var _2f=$("backButton");if(_2f){var _30=$(_8[_8.length-2]);if(_30&&!_2c.getAttribute("hideBackButton")){_2f.style.display="inline";_2f.innerHTML=_30.title?_30.title:"Back";}else{_2f.style.display="none";}}}function slidePages(_31,_32,_33){var _34=(_33?_31:_32).getAttribute("axis");if(_34=="y"){(_33?_31:_32).style.top="100%";}else{_32.style.left="100%";}_32.setAttribute("selected","true");scrollTo(0,1);clearInterval(_a);var _35=100;slide();var _36=setInterval(slide,_2);function slide(){_35-=_1;if(_35<=0){_35=0;if(!hasClass(_32,"dialog")){_31.removeAttribute("selected");}clearInterval(_36);_a=setInterval(checkOrientAndLocation,300);setTimeout(updatePage,0,_32,_31);}if(_34=="y"){_33?_31.style.top=(100-_35)+"%":_32.style.top=_35+"%";}else{_31.style.left=(_33?(100-_35):(_35-100))+"%";_32.style.left=(_33?-_35:_35)+"%";}}}function preloadImages(){var _37=document.createElement("div");_37.id="preloader";document.body.appendChild(_37);}function submitForm(_38){iui.showPageByHref(_38.action||"POST",encodeForm(_38),_38.method);}function encodeForm(_39){function encode(_3a){for(var i=0;i<_3a.length;++i){if(_3a[i].name){args.push(_3a[i].name+"="+escape(_3a[i].value));}}}var _3c=[];encode(_39.getElementsByTagName("input"));encode(_39.getElementsByTagName("select"));return _3c;}function findParent(_3d,_3e){while(_3d&&(_3d.nodeType!=1||_3d.localName.toLowerCase()!=_3e)){_3d=_3d.parentNode;}return _3d;}function hasClass(_3f,_40){var re=new RegExp("(^|\\s)"+_40+"($|\\s)");return re.exec(_3f.getAttribute("class"))!=null;}function replaceElementWithSource(_42,_43){var _44=_42.parentNode;var _45=_42;while(_44.parentNode!=document.body){_44=_44.parentNode;_45=_45.parentNode;}var _46=document.createElement(_45.localName);_46.innerHTML=_43;_44.removeChild(_45);while(_46.firstChild){_44.appendChild(_46.firstChild);}}function $(id){return document.getElementById(id);}function ddd(){console.log.apply(console,arguments);}})(); \ No newline at end of file diff --git a/addons/smartphone/iui/listArrowSel.png b/addons/smartphone/iui/listArrowSel.png deleted file mode 100644 index 86832ebc7..000000000 Binary files a/addons/smartphone/iui/listArrowSel.png and /dev/null differ diff --git a/addons/smartphone/iui/loading.gif b/addons/smartphone/iui/loading.gif deleted file mode 100644 index 8522ddf1a..000000000 Binary files a/addons/smartphone/iui/loading.gif and /dev/null differ diff --git a/addons/smartphone/iui/selection.png b/addons/smartphone/iui/selection.png deleted file mode 100644 index 537e3f0b1..000000000 Binary files a/addons/smartphone/iui/selection.png and /dev/null differ diff --git a/addons/smartphone/iui/thumb.png b/addons/smartphone/iui/thumb.png deleted file mode 100644 index cefa8fc5e..000000000 Binary files a/addons/smartphone/iui/thumb.png and /dev/null differ diff --git a/addons/smartphone/iui/toggle.png b/addons/smartphone/iui/toggle.png deleted file mode 100644 index 3b62ebf26..000000000 Binary files a/addons/smartphone/iui/toggle.png and /dev/null differ diff --git a/addons/smartphone/iui/toggleOn.png b/addons/smartphone/iui/toggleOn.png deleted file mode 100644 index b016814de..000000000 Binary files a/addons/smartphone/iui/toggleOn.png and /dev/null differ diff --git a/addons/smartphone/iui/toolButton.png b/addons/smartphone/iui/toolButton.png deleted file mode 100644 index afe4d7a3e..000000000 Binary files a/addons/smartphone/iui/toolButton.png and /dev/null differ diff --git a/addons/smartphone/iui/toolbar.png b/addons/smartphone/iui/toolbar.png deleted file mode 100644 index 3dde94c07..000000000 Binary files a/addons/smartphone/iui/toolbar.png and /dev/null differ diff --git a/addons/smartphone/iui/whiteButton.png b/addons/smartphone/iui/whiteButton.png deleted file mode 100644 index 5514b2700..000000000 Binary files a/addons/smartphone/iui/whiteButton.png and /dev/null differ diff --git a/addons/smartphone/smartphone.addon.php b/addons/smartphone/smartphone.addon.php index 4974d9460..c1512037b 100644 --- a/addons/smartphone/smartphone.addon.php +++ b/addons/smartphone/smartphone.addon.php @@ -1,22 +1,19 @@ module_info, $output); + $oSmartphoneXE->procSmartPhone(); - $oSmartphoneXE = &smartphoneXE::getInstance(); - $oSmartphoneXE->setModuleInfo($this->module_info); - $oSmartphoneXE->setModuleInstance($this); - $oSmartphoneXE->display(); + Context::set('layout', 'none'); + Context::set('smart_content', $oSmartphoneXE->content); + Context::set('parent_url', $oSmartphoneXE->parent_url); + Context::set('prev_url', $oSmartphoneXE->prev_url); + Context::set('next_url', $oSmartphoneXE->next_url); + $this->setTemplatePath('addons/smartphone/tpl'); + $this->setTemplateFile('layout'); ?> diff --git a/addons/smartphone/tpl/images/btnMenu.png b/addons/smartphone/tpl/images/btnMenu.png new file mode 100755 index 000000000..3c43a027c Binary files /dev/null and b/addons/smartphone/tpl/images/btnMenu.png differ diff --git a/addons/smartphone/tpl/images/btnNext.png b/addons/smartphone/tpl/images/btnNext.png new file mode 100755 index 000000000..15b8215ba Binary files /dev/null and b/addons/smartphone/tpl/images/btnNext.png differ diff --git a/addons/smartphone/tpl/images/btnPrev.png b/addons/smartphone/tpl/images/btnPrev.png new file mode 100755 index 000000000..085d42942 Binary files /dev/null and b/addons/smartphone/tpl/images/btnPrev.png differ diff --git a/addons/smartphone/tpl/images/btnTop.png b/addons/smartphone/tpl/images/btnTop.png new file mode 100755 index 000000000..aa106e8cc Binary files /dev/null and b/addons/smartphone/tpl/images/btnTop.png differ diff --git a/addons/smartphone/iui/listArrow.png b/addons/smartphone/tpl/images/listArrow.png similarity index 100% rename from addons/smartphone/iui/listArrow.png rename to addons/smartphone/tpl/images/listArrow.png diff --git a/addons/smartphone/iui/listGroup.png b/addons/smartphone/tpl/images/listGroup.png similarity index 100% rename from addons/smartphone/iui/listGroup.png rename to addons/smartphone/tpl/images/listGroup.png diff --git a/addons/smartphone/iui/pinstripes.png b/addons/smartphone/tpl/images/pinstripes.png similarity index 100% rename from addons/smartphone/iui/pinstripes.png rename to addons/smartphone/tpl/images/pinstripes.png diff --git a/addons/smartphone/tpl/images/titlebar.png b/addons/smartphone/tpl/images/titlebar.png new file mode 100755 index 000000000..ddc3cd9b8 Binary files /dev/null and b/addons/smartphone/tpl/images/titlebar.png differ diff --git a/addons/smartphone/tpl/layout.html b/addons/smartphone/tpl/layout.html index 41193bc91..918b77ede 100644 --- a/addons/smartphone/tpl/layout.html +++ b/addons/smartphone/tpl/layout.html @@ -1,55 +1,19 @@ - - - - - - + + - {Context::getBrowserTitle()} - - +
+

{Context::getBrowserTitle()}

+
- - - - -
-

- - Search -
- - - - - - - +{$smart_content} +
+ + Top + + + Prev + Next + + Menu +
diff --git a/addons/smartphone/tpl/smartphone.css b/addons/smartphone/tpl/smartphone.css new file mode 100644 index 000000000..fac55d404 --- /dev/null +++ b/addons/smartphone/tpl/smartphone.css @@ -0,0 +1,202 @@ +body { + margin: 0; + padding:0; + font-family: Helvetica; + background: #E6E6E6 url(./images/pinstripes.png); + color: #000000; + overflow-x: hidden; + -webkit-user-select: none; + -webkit-text-size-adjust: none; + width:100%; +} + +.smartPhoneTitleBar { + border-bottom: 1px solid #2d3642; + border-top: 1px solid #6d84a2; + height: 43px; + overflow:hidden; + background:#485567 url(./images/titlebar.png) repeat-x left top; + margin-bottom:20px; + + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; +} + +.smartPhoneTitleBar h1 { + white-space:nowrap; + overflow: hidden; + + color: #FFFFFF; + font-size: 20px; + font-weight: bold; + padding:8px 10px; + margin:0; + + text-shadow: rgba(0, 0, 0, 0.4) 0px -1px 0; + text-overflow: ellipsis; +} + +.smartPhoneContent { + position:absolute; + top:55px; + bottom:55px; + left:10px; + right:10px; + z-index:450; + overflow-x:hidden; + overflow-y:auto; + border: 1px solid #999999; + padding: 20px; + background-color:#fff; + box-sizing: border-box; + -webkit-box-sizing: border-box; + -webkit-border-radius: 8px; +} + +.smartPhoneToolBar { + z-index:9999; + width:100%; + border-bottom: 1px solid #2d3642; + border-top: 1px solid #6d84a2; + height: 43px; + overflow:hidden; + background:#485567 url(./images/titlebar.png) repeat-x left top; + position:absolute; + bottom:0; + white-space:nowrap; + text-align:center; + + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; +} + +.smartPhoneBtn { + width:43px; + height:43px; + margin-left:8px; + border:0; +} + +.smartPhoneList { + position:absolute; + overflow-x:hidden; + overflow-y:auto; + background-color:#fff; + z-index:500; + left:0; + right:0; + top:43px; + bottom:43px; + padding:0; + margin:0; +} + +.smartPhoneList ul { + padding:0; + margin:0; + left:0; + right:0; + top:43px; + bottom:43px; +} + +.smartPhoneList li { + list-style:none; + font-size:18px; + font-weight:bold; + padding:10px; + border-bottom:1px solid #ccc; +} + +.smartPhoneList li a { + text-shadow: rgba(0, 0, 0, 0.4) 0px -1px 0; + text-overflow: ellipsis; + color:#000; + text-decoration:none; + display:block; + width:100%; +} + +.smartPhoneList li.title { + position: relative; + top: -1px; + margin-bottom: -2px; + border-top: 1px solid #7d7d7d; + border-bottom: 1px solid #999999; + padding: 1px 10px; + background: url(./images/listGroup.png) repeat-x; + font-size: 17px; + font-weight: bold; + text-shadow: rgba(0, 0, 0, 0.4) 0 1px 0; + color: #FFFFFF; +} + +.smartPhoneList li.selected { + background-color:#ddd; +} + +.smartPhoneList li.selected * { + color:#fff; +} + +.smartPhoneContent div.info { + font-size:13px; + padding-bottom:10px; + border-bottom:1px solid #444; + overflow:hidden; + *zoom:1; +} + +.smartPhoneContent div.info .author { + font-weight:bold; + float:left; +} + +.smartPhoneContent div.info .date { + font-size:11px; + float:right; +} + +.smartPhoneContent div.link { + margin-top:10px; + border-top:1px solid #444; +} + +.smartPhoneContent div.link a { + display:block; + padding:5px 0; + font-size:13px; + text-decoration:none; + color:#000; +} + +.smartPhoneList li a { + background:transparent url(./images/listArrow.png) no-repeat scroll right center; +} + +.smartPhoneList li.noArrow a { + background:none !important; +} + +.smartPhoneList li.item img.thumbnail { + margin:0 10px 0 0; + padding:0; +} + +.smartPhoneList li.item span.title, .smartPhoneList li.item span.title div { + font-size:15px; + font-weight:normal; + display:block; +} + +.smartPhoneList li.item span.info { + font-size:10px; + font-weight:normal; + color:#bbb; + display:block; + margin-top:2px; + letter-spacing:0px; +} + diff --git a/addons/smartphone/tpl/smartphone.js b/addons/smartphone/tpl/smartphone.js new file mode 100644 index 000000000..611c93280 --- /dev/null +++ b/addons/smartphone/tpl/smartphone.js @@ -0,0 +1,93 @@ +var xeSmartMenu = null; +function showXEMenu() { + if(!xeSmartMenu) { + + xeSmartMenu = jQuery('
') + .attr("className","smartPhoneList") + .css('display','none'); + + jQuery(document.body).append(xeSmartMenu); + + xeSmartMenu.slideIn = function(step) { + var w = this.width() + Math.pow(step,2)*30; + + if(w>jQuery(document).width()) { + this.css({left:0,right:0,display:'block'}); + this.width(''); + } else { + this.width(w); + var o = parseInt(jQuery(document).width/w,10)/10; + if(o>1) o = 1; + setTimeout(function() { xeSmartMenu.slideIn(step+1); }, 50); + } + } + + xeSmartMenu.slideOut = function(step) { + var l = parseInt(this.css('left'),10) + Math.pow(step,2)*30; + + if(l>jQuery('.smartPhoneContent').width()) { + this.css({display:'none','left':''}); + } else { + var o = parseInt(jQuery(document).width/l,10)/10; + if(o<0) o = 0; + this.css('left',l+'px'); + setTimeout(function() { xeSmartMenu.slideOut(step+1); }, 50); + } + } + } + + if(xeSmartMenu.css('display')=='none' && typeof(xeMenus)!='undefined') { + var menu = findSmartNode(xeMenus); + if(!menu) menu = xeMenus; + var html = ''; + + jQuery(xeSmartMenu).html(html); + jQuery(xeSmartMenu).css({ + width:'1px', + right:'0', + top:'43px', + bottom:'43px', + display:'block', + padding:0 + }); + xeSmartMenu.slideIn(0); + } else { + xeSmartMenu.slideOut(0); + } +} + +function findSmartNode(nodes) { + if(typeof(current_mid)=='undefined') return; + var mid = current_mid; + if(location.href.indexOf(mid)<0) mid = null; + for(var text in nodes) { + if(!text) continue; + if(nodes[text].url == mid) { + if(nodes[text].childs) return nodes[text].childs; + } + if(nodes[text].childs && nodes[text].childs.length) { + var n = findSmartNode(nodes[text].childs); + if(n) return n; + } + } + return null; +} diff --git a/modules/board/board.smartphone.php b/modules/board/board.smartphone.php index 9ce5b29b4..49c15813f 100644 --- a/modules/board/board.smartphone.php +++ b/modules/board/board.smartphone.php @@ -1,67 +1,44 @@ grant->list || $this->module_info->consultation == 'Y') return $oIPhone->setContent(Context::getLang('msg_not_permitted')); - $act = Context::get('act'); - if(method_exists($this, $act)) - { - $this->{$act}(); - } - else - { - $document_srl = Context::get('document_srl'); - if($document_srl) - return $this->dispContent($document_srl); - else - return $this->dispList(); - } - } - function dispContent($document_srl) - { + function procSmartPhone(&$oSmartPhone) { $oDocumentModel = &getModel('document'); - $oDocument = $oDocumentModel->getDocument($document_srl); + + if(!$this->grant->list || $this->module_info->consultation == 'Y') return $oSmartPhone->setContent(Context::getLang('msg_not_permitted')); + + $oDocument = Context::get('oDocument'); if($oDocument->isExists()) { - // 권한 확인 - if(!$this->grant->view) return Context::getLang('msg_not_permitted'); - - Context::setBrowserTitle($oDocument->getTitleText()); - Context::set('oDocument', $oDocument); - $oTemplate = new TemplateHandler(); - $content = $oTemplate->compile($this->module_path.'tpl/smartphone', "view_document"); - return $content; - } - else - { - return $this->dispList(); + if(Context::get('comment') == 'true' && $oDocument->getCommentCount()) { + Context::set('comment_list', $oDocument->getComments()); + $comment_page_navigation = $oDocument->comment_page_navigation; + if($comment_page_navigation) { + if($comment_page_navigation->cur_page > $comment_page_navigation->first_page) $oSmartPhone->setPrevUrl(getUrl('cpage',$comment_page_navigation->cur_page-1)); + if($comment_page_navigation->cur_page < $comment_page_navigation->last_page) $oSmartPhone->setNextUrl(getUrl('cpage',$comment_page_navigation->cur_page+1)); + } + $oSmartPhone->setParentUrl(getUrl('comment','')); + $tpl_file = 'comment_list'; + } else { + $oSmartPhone->setParentUrl(getUrl('document_srl','')); + $tpl_file = 'view_document'; + } + } else { + $page_navigation = Context::get('page_navigation'); + if($page_navigation) { + if($page_navigation->cur_page > $page_navigation->first_page) $oSmartPhone->setPrevUrl(getUrl('page',$page_navigation->cur_page-1)); + if($page_navigation->cur_page < $page_navigation->last_page) $oSmartPhone->setNextUrl(getUrl('page',$page_navigation->cur_page+1)); + } + $tpl_file = 'list'; } - } - - function dispList() - { - if(!$this->grant->list || $this->module_info->consultation == 'Y') return Context::getLang('msg_not_permitted'); - $oDocumentModel = &getModel('document'); - $args->module_srl = $this->module_srl; - $args->page = Context::get('page');; - $args->list_count = 8; - $args->sort_index = $this->module_info->order_target?$this->module_info->order_target:'list_order'; - $args->order_type = $this->module_info->order_type?$this->module_info->order_type:'asc'; - $output = $oDocumentModel->getDocumentList($args, $this->except_notice); - $document_list = $output->data; - Context::set('document_list', $document_list); - $page_navigation = $output->page_navigation; - Context::set('page_navigation',$page_navigation); $oTemplate = new TemplateHandler(); - $content = $oTemplate->compile($this->module_path.'tpl/smartphone', "list"); - return $content; + $content = $oTemplate->compile($this->module_path.'tpl/smartphone', $tpl_file); + $oSmartPhone->setContent($content); } } ?> diff --git a/modules/board/tpl/smartphone/comment_list.html b/modules/board/tpl/smartphone/comment_list.html new file mode 100644 index 000000000..a3a692a5e --- /dev/null +++ b/modules/board/tpl/smartphone/comment_list.html @@ -0,0 +1,14 @@ + diff --git a/modules/board/tpl/smartphone/list.html b/modules/board/tpl/smartphone/list.html index fe5e357fb..f96e197ac 100644 --- a/modules/board/tpl/smartphone/list.html +++ b/modules/board/tpl/smartphone/list.html @@ -1,24 +1,17 @@ -
diff --git a/modules/homepage/homepage.smartphone.php b/modules/homepage/homepage.smartphone.php new file mode 100644 index 000000000..045bdd983 --- /dev/null +++ b/modules/homepage/homepage.smartphone.php @@ -0,0 +1,16 @@ +compile($this->module_path.'tpl', 'smartphone'); + $oSmartPhone->setContent($content); + } + } +?> diff --git a/modules/homepage/tpl/smartphone.html b/modules/homepage/tpl/smartphone.html new file mode 100644 index 000000000..ac6154f8a --- /dev/null +++ b/modules/homepage/tpl/smartphone.html @@ -0,0 +1,18 @@ + diff --git a/modules/page/page.smartphone.php b/modules/page/page.smartphone.php new file mode 100644 index 000000000..c41c798e0 --- /dev/null +++ b/modules/page/page.smartphone.php @@ -0,0 +1,28 @@ +grant->access) return $oSmartPhone->setContent(Context::getLang('msg_not_permitted')); + + // 위젯을 1렬로 정렬 + preg_match_all('!(]*)(widget=)([^\>]*?)(\>)!is', $this->module_info->content, $matches); + $content = ''; + for($i=0,$c=count($matches[0]);$i<$c;$i++) { + $content .= preg_replace('/ style\=\"([^\"]+)\" /i',' style="overflow:hidden;clear:both;margin:0 0 20px 0; _margin-right:10px;" ',$matches[0][$i])."\n\n"; + } + Context::set('content', $content); + + $oTemplate = new TemplateHandler(); + $content = $oTemplate->compile($this->module_path.'tpl','smartphone'); + + $oSmartPhone->setContent($content); + } + } +?> diff --git a/modules/page/tpl/smartphone.html b/modules/page/tpl/smartphone.html new file mode 100644 index 000000000..d228f8dd5 --- /dev/null +++ b/modules/page/tpl/smartphone.html @@ -0,0 +1,4 @@ +
+ {$content} +
+ diff --git a/modules/planet/planet.smartphone.php b/modules/planet/planet.smartphone.php new file mode 100644 index 000000000..a995b16b2 --- /dev/null +++ b/modules/planet/planet.smartphone.php @@ -0,0 +1,21 @@ +setPrevUrl(getUrl('date',$prev_date, 'document_srl','')); + $next_date = Context::get('next_date'); + if($next_date) $oSmartPhone->setNextUrl(getUrl('date',$next_date, 'document_srl','')); + + $oTemplate = new TemplateHandler(); + $content = $oTemplate->compile($this->module_path.'tpl', 'smartphone'); + $oSmartPhone->setContent($content); + } + } +?> diff --git a/modules/planet/tpl/smartphone.html b/modules/planet/tpl/smartphone.html new file mode 100644 index 000000000..0745453a6 --- /dev/null +++ b/modules/planet/tpl/smartphone.html @@ -0,0 +1,30 @@ +