<?php if (!isset($_RESQUEST['id'])) { if (!($match = Uri::match('^post\\-(\\d+)\\-.*?\\.html'))) { Redirect::to('404page'); } $_RESQUEST['id'] = $match[1]; $id = $match[1]; } else { $id = $_RESQUEST['id']; } // print_r($_RESQUEST['id']);die(); $pageName = 'post'; $pageData = array(); $pageData['content_top'] = Render::content_top($pageName); $pageData['content_left'] = Render::content_left($pageName); $pageData['content_right'] = Render::content_right($pageName); $pageData['content_bottom'] = Render::content_bottom($pageName); Theme::model('post'); $headData = GlobalCMS::$setting; $pageData['commentAlert'] = sendComment(); // $pageData['categories']=categories(); $pageData = postProcess($pageData); $pageData['listComments'] = listComments($id); $headData['title'] = $pageData['title']; Theme::view('head', $headData); Theme::view($pageName, $pageData); Theme::view('footer');
function mockups_to_soui_xml($jsonfile, $bMainWnd = true) { if (!is_file($jsonfile)) { return ''; } //从文件中读取json字符串 $json = file_get_contents($jsonfile); // var_dump(decode_json($json, true)); //解析成json数组对象 $mockup = decode_json($json, true)['mockup']; //创建一个XML文档并设置XML版本和编码 $doc = new DomDocument(); //$doc->preserveWhiteSpace = false; //$doc->formatOutput = true; //xml输出的时候要加上编码,否则输出的中文变成一堆奇怪的符号 $doc->encoding = 'UTF-8'; //界面的宽度和高度 $wnd_width = intval($mockup['mockupW']); $wnd_height = intval($mockup['mockupH']); //图形的宽度和高度(包含多出的空白部分) $fig_width = intval($mockup['measuredW']); $fig_height = intval($mockup['measuredH']); //left和top的偏移量 $dx = $fig_width - $wnd_width; $dy = $fig_height - $wnd_height; $root_attribs = null; if ($bMainWnd) { $root_attribs = array('width' => $wnd_width, 'height' => $wnd_height); } //创建根节点 $root = create_root($doc, $root_attribs); //所有子控件 $controls = $mockup['controls']['control']; foreach ($controls as $control) { //定义属性数组 $attribs = array(); //控件的坐标位置 $left = intval($control['x']) - $dx; $top = intval($control['y']) - $dy; $attribs['pos'] = $left . "," . $top; //控件的宽度和高度属性 $attribs['width'] = intval($control['measuredW']); $attribs['height'] = intval($control['measuredH']); if (isset($control['w'])) { $attribs['width'] = intval($control['w']); } if (isset($control['h'])) { $attribs['height'] = intval($control['h']); } //微调(margin-x和margin-y设为1后导致label显示不全,稍微增大宽度和高度用于抵消被margin吃掉的空间) $attribs['width'] = $attribs['width'] + 2; // $attribs['height'] = $attribs['height'] + 2; //控件类型(mockups类型映射到soui控件类型) $type = mockups_type_to_soui_type($control['typeID']); if ($type == 'unknown') { if ($control['typeID'] == 'StickyNote') { //从Comment中提取skin(字符串用换行分隔) $skin_text = $control['properties']['text']; $skins = explode("\\n", $skin_text); foreach ($skins as $skin_name) { addToSkin($doc, $skin_name, "img"); // addToSkin($doc, $skin_name, "ico"); } } else { echo '<h1>暂不支持' . $control['typeID'] . '控件!!!</h1><br>'; } //销毁内存 unset($attribs); //跳过该次循环 continue; } else { echo '<h1>' . $control['typeID'] . '-->' . $type . '</h1><br>'; } if (isset($control['properties']['state'])) { if ($control['properties']['state'] == 'disabled') { // $attribs['enable'] = 0; } } //控件的字体属性 $font_attrib = ''; if (isset($control['properties']['underline'])) { $font_attrib = $font_attrib . ',underline:' . intval($control['properties']['underline'] == 'true'); } if (isset($control['properties']['italic'])) { $font_attrib = $font_attrib . ',italic:' . intval($control['properties']['italic'] == 'true'); } if (isset($control['properties']['bold'])) { $font_attrib = $font_attrib . ',bold:' . intval($control['properties']['bold'] == 'true'); } if ($font_attrib != '') { $attribs['font'] = $font_attrib; } //所有控件增加边框,便于观察 //后期可以用样式class进行替代或删除该属性 // $attribs['ncSkin'] = '_skin.sys.border'; if ($type == 'edit' || $type == 'richedit') { if (isset($control['properties']['state'])) { if ($control['properties']['state'] == 'disabled') { unset($attribs['enable']); // $attribs['readOnly'] = 1; } } } if ($type == 'check' || $type == 'radio') { $attribs['width'] = $attribs['width'] + 30; if (isset($control['properties']['state'])) { if ($control['properties']['state'] == 'selected') { $attribs['checked'] = 1; } } } //listbox要特殊处理 if ($type == 'listbox') { $attribs['itemHeight'] = '21'; //高亮显示鼠标所在位置的item $attribs['hotTrack'] = 1; //$attribs['selectedIndex'] = '1'; if (isset($control['properties']['rowHeight'])) { $attribs['itemHeight'] = $control['properties']['rowHeight']; } } //link要特殊处理 if ($type == 'link') { $attribs['href'] = 'http://about:blank'; // 默认打开空白页面 if (isset($control['properties']['href'])) { $attribs['href'] = $control['properties']['href']['URL']; $attribs['class'] = 'cls_btn_weblink'; //$attribs['cursor'] = "hand"; } } //slider要特殊处理 if ($type == 'sliderbar') { $attribs['value'] = '0'; $attribs['min'] = '0'; $attribs['max'] = '100'; if (isset($control['properties']['value'])) { $attribs['value'] = $control['properties']['value']; } if ($control['typeID'] == 'VSlider') { $attribs['vertical'] = 1; //调整slider的宽度或高度,否则会出现一个多余的拖动按钮(原因未知!!) $attribs['width'] = $attribs['width'] + 8; } else { if ($control['typeID'] == 'HSlider') { //调整slider的宽度或高度,否则会出现一个多余的拖动按钮(原因未知!!) $attribs['height'] = $attribs['height'] + 8; } } } //进度条progress特殊处理 if ($type == 'progress') { $attribs['scrollBarValue'] = '0'; $attribs['min'] = '0'; $attribs['max'] = '100'; if (isset($control['properties']['scrollBarValue'])) { $attribs['value'] = $control['properties']['scrollBarValue']; } $attribs['showPercent'] = 1; } //设置水平或垂直线的线型 if ($type == 'hr') { $attribs['lineStyle'] = 'solid'; if (isset($control['properties']['stroke'])) { $lineStyle = $control['properties']['stroke']; if ($lineStyle == 'dashed') { $lineStyle = 'dash'; } else { if ($lineStyle == 'dotted') { $lineStyle = 'dot'; } } $attribs['lineStyle'] = $lineStyle; } //水平线或垂直线 if ($control['typeID'] == 'HRule') { $attribs['mode'] = 'horizontal'; $attribs['height'] = 1; // 强制修改水平线的宽度为1,如若按照原本的height显示效果比较难看! } else { if ($control['typeID'] == 'VRule') { $attribs['mode'] = 'vertical'; $attribs['width'] = 1; // 强制修改垂直线的宽度为1,如若按照原本的width显示效果比较难看! } } } //列表控件 if ($type == 'listctrl') { $attribs['hotTrack'] = 1; $attribs['itemHeight'] = '20'; $attribs['headerHeight'] = '30'; if (isset($control['properties']['rowHeight'])) { $attribs['itemHeight'] = $control['properties']['rowHeight']; $attribs['headerHeight'] = $control['properties']['rowHeight']; } $attribs['align'] = 'left'; if (isset($control['properties']['align'])) { $attribs['align'] = $control['properties']['align']; } } //treectrl控件 if ($type == 'treectrl') { $attribs['itemHeight'] = "30"; $attribs['checkBox'] = "1"; } //combobox控件 if ($type == 'combobox') { //下拉列表(edit不可编辑) $attribs['dropDown'] = 1; $attribs['curSel'] = 0; } //tab控件 if ($type == 'tabctrl') { // $attribs['clipClient'] = 1; $attribs['tabAlign'] = 'top'; //$attribs['tabWidth'] = "70"; //$attribs['tabHeight'] = "38"; //$attribs['tabInterSize'] = "0"; //$attribs['tabPos'] = "10"; //$attribs['dotted'] = "0"; //$attribs['animateSteps'] = "10"; if ($control['typeID'] == 'VerticalTabBar') { $attribs['tabAlign'] = 'left'; } else { if ($control['typeID'] == 'TabBar') { $attribs['tabAlign'] = 'top'; } } } //group控件 if ($type == 'group') { $attribs['align'] = 'left'; // $attribs['clipClient'] = 1; } //window控件 if ($type == 'window') { // $attribs['align'] = 'left'; // $attribs['clipClient'] = 1; } //控件的其它属性 //mockups提供了一种自定义属性功能(一个customID对应一个customData) //这2个字段可以是任意类型的数据 //本程序规定customData以json格式传入自定义数据,从而补充mockups没有的一些属性和数据 //比如name, min, max等等 $zOrder = mockups_type_to_soui_type($control['zOrder']); // 图形的绘图顺序编号(也决定了图形的层位/遮挡关系) $name = mockups_type_to_soui_type($control['typeID']); $attribs['name'] = $name . $control['ID']; if (isset($control['properties']['customData'])) { $json_datas = trim($control['properties']['customData']); //json数据中的引号等符号被用url方式进行编码转义了,比如空格变成了%22,需要进行解码 $json_datas = urldecode($json_datas); //将%u替换成\u $json_datas = str_replace('%u', '\\u', $json_datas); if (!empty($json_datas)) { //合并附加的json属性数据 $more_attribs = decode_json($json_datas, true); if (!is_null($more_attribs)) { foreach ($more_attribs as $key => $value) { if (is_array($value)) { $value = json_encode($value); } else { $value = escapeUnicodeString($value); } $more_attribs[$key] = $value; } //合并2个属性关联数组 $attribs = array_merge($attribs, $more_attribs); //销毁内存 unset($more_attribs); } } } //控件上的文本内容 $text = ''; if (isset($control['properties']['text'])) { $text = $control['properties']['text']; } //创建子控件节点 $control = create_node($doc, $type, $text, $attribs); $root->appendChild($control); //某些控件需要增加子节点,比如listbox postProcess($doc, $control, $type); //增加局部皮肤 postProcessSkin($doc, $control, $type, "img"); //销毁内存 unset($attribs); } //调整节点顺序(主要是caption节点) adjust_node_seq($doc); return $doc->saveXML(); //$doc->save($xmlfile); }