<?php
!defined('IN_ONEZ') && exit('Access Denied');
$item=$G['this']->data()->open('task')->one("userid='$G[userid]' and token='desktopnw' and key1<>'zip' and key1<>'setuping' and key1<>'setup'");
$id=(int)$item['id'];

$action=onez()->gp('action');
if($action=='buy'){
  list($total)=$G['this']->totalprice($item);
  $G['user']['amt']<=$total && onez()->error('账户余额不足');
  
}
$ac=onez()->gp('ac');
if($ac=='extra'){
  #初始化表单
  !$item['xieyi'] && $item['xieyi']='欢迎安装'.$item['softname'].'！';
  $form=onez('admin')->widget('form')
    ->set('title',$G['title'])
    ->set('values',$item)
  ;
  $form->add(array('type'=>'hidden','key'=>'action','value'=>'save'));
  $btnname='下一步';
  $index=0;
  if($item['is_setup']){
    $index++;
    $form->add(array('label'=>'安装协议','type'=>'textarea','key'=>'xieyi','hint'=>'','notempty'=>'安装协议不能为空','group'=>''));
  }
  if($index){
    #处理提交
    if($onez=$form->submit()){
      ob_clean();
      $onez['key1']='pay';
      $G['this']->data()->open('task')->update($onez,"id='$id'");
      onez()->ok(1,onez()->href('/index.php?menu=build.desktopnw&ac=pay'));
    }
    $btnname='';
    $btns='';
    $btns.='<a class="btn btn-default" href="'.onez()->href('/index.php?menu=build.desktopnw').'">上一步</a> ';
    $btns.='<button class="btn btn-success" type="submit">下一步</button> ';
      
  }else{
    $G['this']->data()->open('task')->update(array('key1'=>'pay'),"id='$id'");
    onez()->location(onez()->href('/index.php?menu=build.desktopnw&ac=pay'));
  }
}elseif($ac=='pay'){
  #$G['this']->build($item);
  if($item['key1']!='pay'){
    onez()->location(onez()->href('/index.php?menu=log'));
  }
  $paytype=onez()->gp('paytype');
  $action=onez()->gp('action');
  #初始化表单
  $form=onez('admin')->widget('form')
    ->set('title',$G['title'])
    ->set('values',$item)
  ;
  $form->add(array('type'=>'hidden','key'=>'action','value'=>'save'));
  $btnname='立即生成';
  $info=array();
  $info[]='客户端图标: '."\t".'<img src="'.$item['icon'].'" style="width:48px;height:48px;position: relative;top: -10px;" />';
  $info[]='客户端名称: '."\t".'<span class="value">'.$item['softname'].'</span>';
  $info[]='客户端网址: '."\t".'<span class="value">'.$item['softurl'].'</span>';
  $info[]='exe文件名: '."\t".'<span class="value">'.$item['exename'].'</span>';
  $info[]='版本名: '."\t".'<span class="value">'.$item['version'].'</span>';
  
  !$item['width'] && $item['width']=960;
  !$item['height'] && $item['height']=650;
  $info[]='窗口宽度尺寸: '."\t".'<span class="value">'.$item['width'].' * '.$item['height'].'</span>';
  if($item['url_print_api']){
    $info[]='高级打印接口: '."\t".'<span class="value">'.$item['url_print_api'].'</span>';
  }
  $info[]='';
  
  if($item['is_tray']){
    $info[]='<span class="value">右下角托盘显示</span>';
  }
  if($item['is_close2min']){
    $info[]='<span class="value">点击关闭按钮后转为最小化，窗口不会关闭，可点击托盘右键退出</span>';
  }
  if($item['is_setup']){
    $info[]='<span class="value">生成一个setup安装包</span> <a href="javascript:;" data-toggle="modal" data-target="#win_xieyi">点击查看安装协议</a>';
    $G['footer'].=<<<ONEZ
<!-- Modal -->
<div class="modal fade" id="win_xieyi" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="myModalLabel">安装包协议</h4>
      </div>
      <div class="modal-body">
        <pre style="max-height:400px;overflow:hidden;overflow-y:auto;">$item[xieyi]</pre>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-primary" data-dismiss="modal">确定</button>
      </div>
    </div>
  </div>
</div>
ONEZ;
  }
  if($item['is_max']){
    $info[]='<span class="value">打开默认最大化</span>';
  }
  $info=implode("\n",$info);
  $form->add(array('label'=>'客户端信息','type'=>'html','html'=>'<pre>'.$info.'</pre>'));
  list($total,$html,$btns)=$G['this']->totalprice($item);
  if($paytype=='alipay'){
    ob_clean();
    onez('alipay')->pay($total,'客户端生成费用“'.$item['softname'].'”',array(
      'plugintoken'=>$G['this']->token,
      'paytype'=>'alipay',
      'payname'=>'支付宝支付',
      'itemid'=>$item['id'],
      'userid'=>$G['userid'],
      'type'=>'buy',
      'price'=>$total,
      'goto'=>'http://build.onez.cn/?mod=%2Findex.php&menu=log',
    ));
  }
  if($action=='save'){
    if($total==0){
      $use=$G['this']->once($G['userid']);
      if($use){
        $G['this']->build($item,'使用套餐次数');
        onez()->ok(1,onez()->href('/index.php?menu=log'));
      }else{
        onez()->error('套餐次数已用完');
      }
    }else{
      onez()->error('账户余额不足');
    }
  }
  $form->add(array('label'=>'费用清单','type'=>'html','html'=>'<pre>'.$html.'</pre>'));
  if($btns){
    $btnname='';
  }else{
    $btnname='';
    $btns.='<button class="btn btn-success" type="submit">立即生成</button> ';
    $btns.='<a class="btn btn-default" href="'.onez()->href('/index.php?menu=build.desktopnw').'">修改资料</a> ';
  }
}else{
  $btnname='下一步';
  $copyid=(int)onez()->gp('copyid');
  if($copyid){
    $item=$G['this']->data()->open('task')->one("id='$copyid'");
    unset($id);
  }
  !$item && $item=array(
    'softname'=>'客户端',
    'softurl'=>'http://build.onez.cn/',
    'token'=>'main',
    'version'=>'1.0',
    'company'=>'佳蓝',
    'homepage'=>'http://build.onez.cn/',
    'icon'=>'http://xl.onez.cn/cache/plugins/form.file/2016/11/15/582a77a0dbb0c.jpg',
    'is_tray'=>'1',
  );
  #初始化表单
  $form=onez('admin')->widget('form')
    ->set('title',$G['title'])
    ->set('values',$item)
  ;
  #创建表单项
  $form->add(array('type'=>'hidden','key'=>'action','value'=>'save'));
  $form->add(array('label'=>'客户端名称','type'=>'text','key'=>'softname','hint'=>'','notempty'=>'客户端名称不能为空','group'=>''));
  $form->add(array('label'=>'客户端网址','type'=>'text','key'=>'softurl','hint'=>'','notempty'=>'客户端网址不能为空','group'=>''));
  $form->add(array('label'=>'唯一标识','type'=>'text','key'=>'exename','hint'=>'用于生成文件名，只允许英文字母或数字','notempty'=>'唯一标识不能为空','group'=>''));
  $form->add(array('label'=>'版本号','type'=>'text','key'=>'version','hint'=>'','notempty'=>'','group'=>''));
  #$form->add(array('label'=>'公司名称','type'=>'text','key'=>'company','hint'=>'','notempty'=>'','group'=>''));
  #$form->add(array('label'=>'官网地址','type'=>'text','key'=>'homepage','hint'=>'','notempty'=>'','group'=>''));
  $form->add(array('label'=>'窗口宽度','type'=>'text','key'=>'width','hint'=>'默认960像素','notempty'=>'','group'=>''));
  $form->add(array('label'=>'窗口高度','type'=>'text','key'=>'height','hint'=>'默认650像素','notempty'=>'','group'=>''));
  #$form->add(array('label'=>'打印接口(高级接口，如没有请勿填写)','type'=>'text','key'=>'url_print_api','hint'=>'','notempty'=>'','group'=>''));
  #$form->add(array('label'=>'','type'=>'space',));
  #$form->add(array('label'=>'默认最大化','type'=>'checkbox','key'=>'is_max','hint'=>'','notempty'=>'','group'=>''));
  #$form->add(array('label'=>'右下角托盘显示','type'=>'checkbox','key'=>'is_tray','hint'=>'','notempty'=>'','group'=>''));
  #$form->add(array('label'=>'点关闭最小化(可使用托盘右键退出)','type'=>'checkbox','key'=>'is_close2min','hint'=>'','notempty'=>'','group'=>''));
  #$form->add(array('label'=>'只显示关闭按钮','type'=>'checkbox','key'=>'is_close_only','hint'=>'','notempty'=>'','group'=>''));
  #$form->add(array('label'=>'禁止调整大小','type'=>'checkbox','key'=>'is_nosize','hint'=>'','notempty'=>'','group'=>''));
  $form->add(array('label'=>'自定义package.json','type'=>'textarea','key'=>'package_json','hint'=>'','notempty'=>'','group'=>''));
  $form->add(array('label'=>'生成setup安装包','type'=>'checkbox','key'=>'is_setup','hint'=>'','notempty'=>'','group'=>''));
  $form->add(array('label'=>'桌面图标','type'=>'form.file','key'=>'icon','hint'=>'','notempty'=>'桌面图标不能为空','group'=>'','cloudname'=>'云图标','cloud'=>'http://icon.onezphp.com/?key=icon&kw='.urlencode($item['softname'])));

  #处理提交
  if($onez=$form->submit()){
    if(!$onez['exename'] || preg_match('/[^a-zA-Z0-9]+/i',$onez['exename'],$mat)){
      onez()->error('唯一标识只允许英文字母或数字');
    }
    ob_clean();
    if($id){
      $G['this']->data()->open('task')->update($onez,"id='$id'");
    }else{
      $onez['userid']=$G['userid'];
      $onez['token']='desktopnw';
      $onez['key1']='new';
      $id=$G['this']->data()->open('task')->insert($onez);
    }
    onez()->ok(1,onez()->href('/index.php?menu=build.desktopnw&ac=extra'));
  }
}
?>
<div class="panel panel-primary">
	<div class="panel-heading">在线生成客户端</div>
	<form id="form-common" method="post" role="form" style="width:600px;margin:60px auto;display: block;">
        <?=$form->code()?>
        <input type="hidden" id="paytype" name="paytype" value="">
		<p class="text-center">
      <?if($btnname){
        
      echo '<button class="btn btn-success" type="submit">'.$btnname.'</button> ';
        
        ?>
      <?}?>
      <?if($btns){echo $btns;}?>
    </p>
	</form>
</div>
<div class="panel panel-info">
	<div class="panel-heading">
    生成前请阅读以下注意事项，如不满足需求，请立即停止生成。
  </div>
  <div class="panel-body">
    <p></p>
  </div>
</div>
<?if($item['package_json']){
$default='{
	/**指定程序的起始页面。*/
	"main": "index.html",
	/**字符串必须是小写字母或者数字，可以包含.或者_或者-不允许带空格。name必须全局唯一。*/
	"name": "demo",
	/**程序描述*/
	"description": "demo app of node-webkit",
	/**程序版本号*/
	"version": "0.1.0",
	/**关键字*/
	"keywords": ["demo","node-webkit"],
	/**bool值，如果设置为false，将禁用webkit的node支持。*/
	"nodejs": true,
	/**
	* 指定一个node.js文件，当程序启动时，该文件会被运行，启动时间要早于node-webkit加载html的时间。
	* 它在node上下文中运行，可以用它来实现类似后台线程的功能。
	* （不需要可注释不用）
	*/
	//"node-main": "js/node.js",
	/**
	* bool值。默认情况下，如果将node-webkit程序打包发布，那么只能启动一个该应用的实例。
	* 如果你希望允许同时启动多个实例，将该值设置为false。
	*/
	"single-instance": true,
	/**窗口属性设置 */
	"window": {
		/**字符串，设置默认title。*/
		"title": "demo",
		/**窗口的icon。*/
		"icon": "link.png",
		/**bool值。是否显示导航栏。*/
		"toolbar": false,
		/**bool值。是否允许调整窗口大小。*/
		"resizable": true,
		/**是否全屏*/
		"fullscreen": false,
    
		/**bool值。如果设置为false，程序将无边框显示。*/
		"frame": true,
		/**字符串。窗口打开时的位置，可以设置为“null”、“center”或者“mouse”。*/
		"position": "center",
		/**主窗口的的宽度。*/
		"width": 800,
		/**主窗口的的高度。*/
		"height": 670,
		/**窗口的最小宽度。*/
		"min_width": 400,
		/**窗口的最小高度。*/
		"min_height": 335,
		/**窗口显示的最大宽度，可不设。*/
		"max_width": 800,
		/**窗口显示的最大高度，可不设。*/
		"max_height": 670,
		/**bool值，如果设置为false，启动时窗口不可见。*/
		"show": true,
		/**是否在任务栏显示图标。*/
		"show_in_taskbar":true,
		/**
		 * bool值。是否使用kiosk模式。如果使用kiosk模式，
		 * 应用程序将全屏显示，并且阻止用户离开应用。
		 * */
		"kiosk": false
	},
	/**webkit设置*/
	"webkit": {
		/**bool值，是否加载插件，如flash，默认值为false。*/
		"plugin": true,
		/**bool值，是否加载Java applets，默认为false。*/
		"java": false,
		/**bool值，是否启用页面缓存，默认为false。*/
		"page-cache": false
	}
}';
$default=preg_replace('/\/\*((.|\n)+?)\*\//is','',$default);
$default=preg_replace('/\n[\s\t]+\/\/[^\n]+/is','',$default);
$default=json_decode($default,1);
if(!function_exists('_json_format')){
  function _json_format($default,&$json){
    foreach($json as $k=>&$v){
      if(is_array($v)){
        _json_format($default[$k],$json[$k]);
      }else{
        $type=gettype($default[$k]);
        if($type=='boolean'){
          $json[$k]=($v=='1'||$v=='true');
        }elseif($type=='integer'){
          $json[$k]=(int)$v;
        }elseif($type=='array'){
          $v=preg_replace('/[\r\n\t\s]+/is',',',trim($v));
          $json[$k]=explode(',',$v);
        }
      }
    }
  }
}
$exename=$config['exename']?$config['exename']:'main';
  $config=$item;
$package_json=array();
$package_json['nodejs']=false;

foreach($config as $k=>$v){
  if(strpos($k,'package__')!==false){
    $k=substr($k,9);
    @eval("\$package_json['".implode("']['",explode('__',$k))."']=\$v;");
  }
}
if($config['package_json']){
  $my_package_json=trim($config['package_json']);
  $my_package_json=urlencode($my_package_json);
  $my_package_json=str_replace('%C2%A0','',$my_package_json);
  $my_package_json=urldecode($my_package_json);
  $my_package_json=htmlspecialchars_decode($my_package_json);
  $my_package_json=preg_replace('/\/\*((.|\n)+?)\*\//is','',$my_package_json);
  $my_package_json=preg_replace('/\n[\s\t]+\/\/[^\n]+/is','',$my_package_json);
  $my_package_json=preg_replace('/\/\/[^\r\n\}\'"]+/is','',$my_package_json);
  $my_package_json=preg_replace('/[\r\n]+/is','',$my_package_json);
  $my_package_json=json_decode($my_package_json,1);
  if($my_package_json){
    $package_json=array_replace_recursive($package_json,$my_package_json);
  }
}
$package_json['name']=$config['softname'];
$package_json['main']=$config['softurl'];
$package_json['window']['icon']='icon.png';
$package_json['window']['width']=($config['width']?$config['width']:960);
$package_json['window']['height']=($config['height']?$config['height']:650);
$package_json=array_replace_recursive($default,$package_json);
_json_format($default,$package_json);
  ?>
<div class="panel panel-info">
	<div class="panel-heading">
    当前package.json配置
  </div>
  <div class="panel-body">
    <pre><?=var_export($package_json,1)?></pre>
  </div>
</div>
<?}?>
<div class="panel panel-info">
	<div class="panel-heading">
    package.json参数说明
  </div>
  <div class="panel-body">
    <pre>{
	/**指定程序的起始页面。*/
	<s>"main": "index.html",</s>
	/**字符串必须是小写字母或者数字，可以包含.或者_或者-不允许带空格。name必须全局唯一。*/
	<s>"name": "demo",</s>
	/**程序描述*/
	"description": "demo app of node-webkit",
	/**程序版本号*/
	<s>"version": "0.1.0",</s>
	/**关键字*/
	"keywords": ["demo","node-webkit"],
	/**bool值，如果设置为false，将禁用webkit的node支持。*/
	"nodejs": true,
	/**
	* 指定一个node.js文件，当程序启动时，该文件会被运行，启动时间要早于node-webkit加载html的时间。
	* 它在node上下文中运行，可以用它来实现类似后台线程的功能。
	* （不需要可注释不用）
	*/
	//"node-main": "js/node.js",
	/**
	* bool值。默认情况下，如果将node-webkit程序打包发布，那么只能启动一个该应用的实例。
	* 如果你希望允许同时启动多个实例，将该值设置为false。
	*/
	"single-instance": true,
	/**窗口属性设置 */
	"window": {
		/**字符串，设置默认title。*/
		"title": "demo",
		/**窗口的icon。*/
		<s>"icon": "link.png",</s>
		/**bool值。是否显示导航栏。*/
		"toolbar": false,
		/**bool值。是否允许调整窗口大小。*/
		"resizable": true,
		/**是否全屏*/
		"fullscreen": false,
    
		/**bool值。如果设置为false，程序将无边框显示。*/
		"frame": true,
		/**字符串。窗口打开时的位置，可以设置为“null”、“center”或者“mouse”。*/
		"position": "center",
		/**主窗口的的宽度。*/
		"width": 800,
		/**主窗口的的高度。*/
		"height": 670,
		/**窗口的最小宽度。*/
		"min_width": 400,
		/**窗口的最小高度。*/
		"min_height": 335,
		/**窗口显示的最大宽度，可不设。*/
		"max_width": 800,
		/**窗口显示的最大高度，可不设。*/
		"max_height": 670,
		/**bool值，如果设置为false，启动时窗口不可见。*/
		"show": true,
		/**是否在任务栏显示图标。*/
		"show_in_taskbar":true,
		/**
		 * bool值。是否使用kiosk模式。如果使用kiosk模式，
		 * 应用程序将全屏显示，并且阻止用户离开应用。
		 * */
		"kiosk": false
	},
	/**webkit设置*/
	"webkit": {
		/**bool值，是否加载插件，如flash，默认值为false。*/
		"plugin": true,
		/**bool值，是否加载Java applets，默认为false。*/
		"java": false,
		/**bool值，是否启用页面缓存，默认为false。*/
		"page-cache": false
	}
}</pre>
  </div>
</div>
<script type="text/javascript">
$(function(){
  $('#input-softname').bind('input keyup',function(){
    $('label[for="input-icon"] a').attr('data-href','http://icon.onezphp.com/?key=icon&input=icon&kw='+encodeURIComponent($(this).val()));
  });
});
function _pay_alipay(){
  location.href='<?=onez()->href('/index.php?menu=build.desktopnw&ac=pay&paytype=alipay')?>';
}
function _pay_account(){
  onez.confirm('您确定要使用余额支付<code class="totalprice"><?=$total?></code>元生成客户端吗？',function(){
    $.post(window.location.href,{action:'buy',ajax:1},function(data){
      onez.doit(data);
    },'json');
  });
}
</script>
<?echo $form->js();?>