百度地图 ijintui以及七牛、百度编辑器、kindeditor

密码是明文存储的

sig错误是因为params没拼接上md5后的秘钥,测试时候可以在 ApiControllerCommonController\_initialize 方法里注释掉效验的代码

代码使用的是thinkphp,将ThinkPHPConfconvention.php

'URL_MODEL'             =>  2,   

API接口:

提交方式为GET

http://api.map.baidu.com/direction/v1?mode=driving&origin=上地五街&destination=北京大学&origin_region=北京&destination_region=北京&output=json&ak=UlYjliwEjM637Wsr1GgZRsUSvPDvD20N

http://api.map.baidu.com/direction/v2/transit?origin=40.056878,116.30815&destination=31.222965,121.505821&ak=UlYjliwEjM637Wsr1GgZRsUSvPDvD20N

可去该网站http://coolaf.com/测试

Hpa7sMY1Wk8GpcBjnVsxW9DVsQeCaGGd ios ak key

1、分类数据库增加图片字段,分类功能增加编辑功能;对应第2个需求;2017年3月3日已完成
2、动态广告添加百度地图code; 对应第4个需求; 2017年3月2日已完成
3、添加地铁城市,包括地铁城市和图片;2017年3月3日已完成
4、增加城市地铁,各个线路;2017年3月3日已完成

查询线路:
http://api.map.baidu.com/direction/v1?mode=transit&origin=上地五街&destination=北京大学&origin_region=北京&destination_region=北京&output=json&ak=UlYjliwEjM637Wsr1GgZRsUSvPDvD20N
method为get
参数:
origin 起点名称或经纬度
destination 终点名称或经纬度
mode 包括:driving(驾车)、walking(步行)、transit(公交)、riding(骑行)}}
region 必填 北京 公交、步行导航时该参数必填。
origin_region 必填 北京 起始点所在城市,驾车导航时必填。
destination_region 必填 北京 终点所在城市,驾车导航时必填。
output 选填,默认为xml json 表示输出类型,可设置为xml或json,默认为xml。


http://api.map.baidu.com/line?region=北京&name=13地铁线&output=html&src=北京题加教育科技有限公司
region 城市名或县名 必选
name 线路名称 必选
output 表示输出类型,web上必须指定为html才能展现地图产品结果。 必选 手机客户端忽略此参数
zoom 展现地图的级别,默认为视觉最优级别。 可选
src appName。 必选 此参数不传值,不保证服务。

高德支持查询所有线路:
http://lbs.amap.com/api/subway-api/reference/

上传七牛,参考:

http://www.thinkphp.cn/code/1533.html

http://www.thinkphp.cn/topic/46397.html

添加模块之后需要添加权限,添加如下的SQL语句:

INSERT INTO think_node (name, title, status, sort, pid, level) VALUES ("Student", "学生控制器", 1, 100, 1, 2);
插入的id为38
INSERT INTO think_node (name, title, status, sort, pid, level) VALUES ("index", "学生列表", 1, 100, 38, 3);
INSERT INTO think_node (name, title, status, sort, pid, level) VALUES ("add", "学生列表添加", 1, 100, 38, 3);
INSERT INTO think_node (name, title, status, sort, pid, level) VALUES ("do_add", "学生列表请求添加", 1, 100, 38, 3);
INSERT INTO think_node (name, title, status, sort, pid, level) VALUES ("edit", "学生列表编辑", 1, 100, 38, 3);
INSERT INTO think_node (name, title, status, sort, pid, level) VALUES ("do_edit", "学生列表编辑请求", 1, 100, 38, 3);
INSERT INTO think_node (name, title, status, sort, pid, level) VALUES ("dodelete", "学生列表编辑请求", 1, 100, 38, 3);
INSERT INTO think_access (role_id, node_id, level) VALUES (3, 38, 2);
INSERT INTO think_access (role_id, node_id, level) VALUES (3, 39, 3);
INSERT INTO think_access (role_id, node_id, level) VALUES (3, 40, 3);
INSERT INTO think_access (role_id, node_id, level) VALUES (3, 41, 3);
INSERT INTO think_access (role_id, node_id, level) VALUES (3, 42, 3);
INSERT INTO think_access (role_id, node_id, level) VALUES (3, 43, 3);
INSERT INTO think_access (role_id, node_id, level) VALUES (3, 44, 3);

thinkphp导出excel:

http://www.thinkphp.cn/code/403.html

百度编辑器添加,参考这篇文章

http://www.thinkphp.cn/topic/32633.html

1、把百度编辑器放到项目的Public目录下 命名为:UEditor
2、在ThinkPHP/Library/Think/Template/Taglib 目录下编辑 Html.class.php 加上下面的代码:

  1.         switch(strtoupper($type)) {
  2.             case 'FCKEDITOR':
  3.                 //.......
  4.                 break;
  5.             case 'FCKMINI':
  6.                 //.......
  7.                 break;
  8.             case 'EWEBEDITOR':
  9.                 //.......
  10.                 break;
  11.             case 'NETEASE':
  12.                 //.......
  13.                 break;
  14.             case 'UBB':
  15.                 //.......
  16.                 break;
  17.             case 'KINDEDITOR':
  18.                //.......
  19.                 break;
  20.             case 'UEDITOR':
  21.                 $parseStr   =  " ".'<script type="text/javascript" charset="utf-8" src="__ROOT__/Public/UEditor/ueditor.config.js"></script>'." ".'<script type="text/javascript" charset="utf-8" src="__ROOT__/Public/UEditor/ueditor.all.js"></script>'." ".'<script type="text/plain" id="'.$id.'" name="'.$name.'" style="'.$style.'">'.$content.'</script>'." ".'<script type="text/javascript">var ue_'.$id.' = UE.getEditor("'.$id.'");</script>'." ";
  22.                 break;
  23.                 //.......
复制代码

3、在需要用到编辑器的模板head内加上:

  1. <taglib name="html" />
复制代码

在用到编辑器的地方加上:

  1. <html:editor id="info" name="info" type="UEDITOR" >{$info.info}</html:editor>
复制代码

4、在百度编辑器目录的ueditor.config.js文件内修改:

  1.         // 服务器统一请求接口路径
  2.         , serverUrl: URL + "../../index.php/Home/Index/ueditup"
复制代码

5、就是你需要的用TP自带上传类处理上传了,在Home模块的Index控制器里加上下面的方法:

  1.     public function ueditup(){
  2.         header("Content-Type: text/html; charset=utf-8");
  3.         $editconfig = json_decode(preg_replace("//*[sS]+?*//", "", file_get_contents(COMMON_PATH."Conf/ueditconfig.json")), true);
  4.             //dump($editconfig);
  5.         $action = I('get.action');
  6.         //echo $action;
  7.         switch ($action) {
  8.             case 'config':
  9.                 $result =  json_encode($editconfig);
  10.                 break;

  11.             /* 上传图片 */
  12.             case 'uploadimage':
  13.                 $result = $this->editup('img');
  14.                 break;
  15.             /* 上传涂鸦 */
  16.             case 'uploadscrawl':
  17.                 $result = $this->editup('img');
  18.                 break;
  19.             case 'uploadvideo':
  20.                 $result = $this->editup('video');
  21.                 break;
  22.             case 'uploadfile':
  23.                 $result = $this->editup('file');
  24.                 //$result = include("action_upload.php");
  25.                 break;

  26.             /* 列出图片 */
  27.             case 'listimage':
  28.                 $result = $this->editlist('listimg');
  29.                 break;
  30.             /* 列出文件 */
  31.             case 'listfile':
  32.                 $result = $this->editlist('listfile');
  33.                 break;

  34.             /* 抓取远程文件 */
  35.             case 'catchimage':
  36.                 //$result = include("action_crawler.php");
  37.                 break;

  38.             default:
  39.                 $result = json_encode(array(
  40.                     'state'=> '请求地址出错'
  41.                 ));
  42.                 break;
  43.         }

  44.         /* 输出结果 */
  45.         if (isset($_GET["callback"])) {
  46.             if (preg_match("/^[w_]+$/", $_GET["callback"])) {
  47.                 echo htmlspecialchars($_GET["callback"]) . '(' . $result . ')';
  48.             } else {
  49.                 echo json_encode(array(
  50.                     'state'=> 'callback参数不合法'
  51.                 ));
  52.             }
  53.         } else {
  54.             echo $result;
  55.         }
  56.         
  57.     }


  58.     public function editup($uptype){
  59.         if($this->islogin==false){
  60.             $_re_data['state'] = '请登陆';
  61.             return json_encode($_re_data);
  62.         }
  63.         $editconfig = json_decode(preg_replace("//*[sS]+?*//", "", file_get_contents(COMMON_PATH."Conf/ueditconfig.json")), true);
  64.         switch ($uptype) {
  65.             case 'img':
  66.                 $upload = new ThinkUpload();// 实例化上传类
  67.                 $upload->rootPath  =     '.';
  68.                 $upload->maxSize   =     $editconfig['imageMaxSize'];
  69.                 $upload->exts      =     explode('.', trim(join('',$editconfig['imageAllowFiles']),'.'));
  70.                 $upload->savePath  =     $editconfig['imagePathFormat'];
  71.                 $upload->saveName  =     time().rand(100000,999999);
  72.                 $info   =   $upload->uploadOne($_FILES[$editconfig['imageFieldName']]);
  73.                 break;
  74.             case 'file':
  75.                 $upload = new ThinkUpload();// 实例化上传类
  76.                 $upload->rootPath  =     '.';
  77.                 $upload->maxSize   =     $editconfig['fileMaxSize'];
  78.                 $upload->exts      =     explode('.', trim(join('',$editconfig['fileAllowFiles']),'.'));
  79.                 $upload->savePath  =     $editconfig['filePathFormat'];
  80.                 $upload->saveName  =     time().rand(100000,999999);
  81.                 $info   =   $upload->uploadOne($_FILES[$editconfig['fileFieldName']]);
  82.                 break;
  83.             case 'video':
  84.                 $upload = new ThinkUpload();// 实例化上传类
  85.                 $upload->rootPath  =     '.';
  86.                 $upload->maxSize   =     $editconfig['videoMaxSize'];
  87.                 $upload->exts      =     explode('.', trim(join('',$editconfig['videoAllowFiles']),'.'));
  88.                 $upload->savePath  =     $editconfig['videoPathFormat'];
  89.                 $upload->saveName  =     time().rand(100000,999999);
  90.                 $info   =   $upload->uploadOne($_FILES[$editconfig['videoFieldName']]);
  91.                 break;
  92.             default:
  93.                 return false;
  94.                 break;
  95.         }

  96.         if(!$info) {// 上传错误提示错误信息
  97.             $_re_data['state'] = $upload->getError();
  98.             $_re_data['url'] = '';
  99.             $_re_data['title'] = '';
  100.             $_re_data['original'] = '';
  101.             $_re_data['type'] = '';
  102.             $_re_data['size'] = '';
  103.         }else{// 上传成功 获取上传文件信息
  104.             $_re_data['state'] = 'SUCCESS';
  105.             $_re_data['url'] = $info['savepath'].$info['savename'];
  106.             $_re_data['title'] = $info['savename'];
  107.             $_re_data['original'] = $info['name'];
  108.             $_re_data['type'] = '.'.$info['ext'];
  109.             $_re_data['size'] = $info['size'];
  110.         }

  111.         return json_encode($_re_data);

  112.     }

  113.     public function editlist($listtype){
  114.         $editconfig = json_decode(preg_replace("//*[sS]+?*//", "", file_get_contents(COMMON_PATH."Conf/ueditconfig.json")), true);
  115.         switch ($listtype) {
  116.             case 'listimg':
  117.                 $allowFiles = $editconfig['imageManagerAllowFiles'];
  118.                 $listSize = $editconfig['imageManagerListSize'];
  119.                 $path = $editconfig['imageManagerListPath'];
  120.                 break;
  121.             
  122.             case 'listfile':
  123.                 $allowFiles = $editconfig['fileManagerAllowFiles'];
  124.                 $listSize = $editconfig['fileManagerListSize'];
  125.                 $path = $editconfig['fileManagerListPath'];
  126.                 break;
  127.             
  128.             default:
  129.                 return false;
  130.                 break;
  131.         }
  132.         /* 获取参数 */
  133.         $size = isset($_GET['size']) ? htmlspecialchars($_GET['size']) : $listSize;
  134.         $start = isset($_GET['start']) ? htmlspecialchars($_GET['start']) : 0;
  135.         $end = $start + $size;

  136.         /* 获取文件列表 */
  137.         $path = $_SERVER['DOCUMENT_ROOT'] . (substr($path, 0, 1) == "/" ? "":"/") . $path;

  138.         $files = $this->getfiles($path, $allowFiles);

  139.         if (!count($files)) {
  140.             return json_encode(array(
  141.                 "state" => "no match file",
  142.                 "list" => array(),
  143.                 "start" => $start,
  144.                 "total" => count($files)
  145.             ));
  146.         }

  147.         /* 获取指定范围的列表 */
  148.         $len = count($files);
  149.         for ($i = min($end, $len) - 1, $list = array(); $i < $len && $i >= 0 && $i >= $start; $i--){
  150.             $list[] = $files[$i];
  151.         }
  152.         //倒序
  153.         //for ($i = $end, $list = array(); $i < $len && $i < $end; $i++){
  154.         //    $list[] = $files[$i];
  155.         //}

  156.         /* 返回数据 */
  157.         $result = json_encode(array(
  158.             "state" => "SUCCESS",
  159.             "list" => $list,
  160.             "start" => $start,
  161.             "total" => count($files)
  162.         ));

  163.         return $result;

  164.     }
  165.     /**
  166.      * 遍历获取目录下的指定类型的文件
  167.      * @param $path
  168.      * @param array $files
  169.      * @return array
  170.      */
  171.     public function getfiles($path, $allowFiles, &$files = array())
  172.     {
  173.         if (!is_dir($path)) return null;

  174.         if(substr($path, strlen($path) - 1) != '/') $path .= '/';
  175.         $handle = opendir($path);

  176.         while (false !== ($file = readdir($handle))) {
  177.             if ($file != '.' && $file != '..') {
  178.                 $path2 = $path . $file;
  179.                 if (is_dir($path2)) {
  180.                     $this->getfiles($path2, $allowFiles, $files);
  181.                 } else {
  182.                     if(in_array('.'.pathinfo($file, PATHINFO_EXTENSION), $allowFiles)){

  183.                         $files[] = array(
  184.                             'url'=> substr($path2, strlen($_SERVER['DOCUMENT_ROOT'])),
  185.                             'mtime'=> filemtime($path2)
  186.                         );
  187.                     }
  188.                 }
  189.             }
  190.         }
  191.         return $files;
  192.     }
复制代码

记得把 ueditconfig.json这个文件放到配置文件目录下也就是Home/Conf/这个目录下
这个文件的内容如下:

  1. /* 前后端通信相关的配置,注释只允许使用多行方式 */
  2. {
  3.     /* 上传图片配置项 */
  4.     "imageActionName": "uploadimage", /* 执行上传图片的action名称 */
  5.     "imageFieldName": "upfile", /* 提交的图片表单名称 */
  6.     "imageMaxSize": 2048000, /* 上传大小限制,单位B */
  7.     "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */
  8.     "imageCompressEnable": true, /* 是否压缩图片,默认是true */
  9.     "imageCompressBorder": 1600, /* 图片压缩最长边限制 */
  10.     "imageInsertAlign": "none", /* 插入的图片浮动方式 */
  11.     "imageUrlPrefix": "", /* 图片访问路径前缀 */
  12.     /* "imagePathFormat": "/Uploads/editor/image/{time}{rand:6}", */
  13.     "imagePathFormat": "/Uploads/editor/image/", /* 上传保存路径,可以自定义保存路径和文件名格式 */

  14.     /* 涂鸦图片上传配置项 */
  15.     "scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */
  16.     "scrawlFieldName": "upfile", /* 提交的图片表单名称 */
  17.     "scrawlPathFormat": "/Uploads/editor/image/", /* 上传保存路径,可以自定义保存路径和文件名格式 */
  18.     "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */
  19.     "scrawlUrlPrefix": "", /* 图片访问路径前缀 */
  20.     "scrawlInsertAlign": "none",

  21.     /* 截图工具上传 */
  22.     "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */
  23.     "snapscreenPathFormat": "/Uploads/editor/image/", /* 上传保存路径,可以自定义保存路径和文件名格式 */
  24.     "snapscreenUrlPrefix": "", /* 图片访问路径前缀 */
  25.     "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */

  26.     /* 抓取远程图片配置 */
  27.     "catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"],
  28.     "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */
  29.     "catcherFieldName": "source", /* 提交的图片列表表单名称 */
  30.     "catcherPathFormat": "/Uploads/editor/image/", /* 上传保存路径,可以自定义保存路径和文件名格式 */
  31.     "catcherUrlPrefix": "", /* 图片访问路径前缀 */
  32.     "catcherMaxSize": 2048000, /* 上传大小限制,单位B */
  33.     "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */

  34.     /* 上传视频配置 */
  35.     "videoActionName": "uploadvideo", /* 执行上传视频的action名称 */
  36.     "videoFieldName": "upfile", /* 提交的视频表单名称 */
  37.     "videoPathFormat": "/Uploads/editor/video/", /* 上传保存路径,可以自定义保存路径和文件名格式 */
  38.     "videoUrlPrefix": "", /* 视频访问路径前缀 */
  39.     "videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */
  40.     "videoAllowFiles": [
  41.         ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
  42.         ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* 上传视频格式显示 */

  43.     /* 上传文件配置 */
  44.     "fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */
  45.     "fileFieldName": "upfile", /* 提交的文件表单名称 */
  46.     "filePathFormat": "/Uploads/editor/file/", /* 上传保存路径,可以自定义保存路径和文件名格式 */
  47.     "fileUrlPrefix": "", /* 文件访问路径前缀 */
  48.     "fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */
  49.     "fileAllowFiles": [
  50.         ".png", ".jpg", ".jpeg", ".gif", ".bmp",
  51.         ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
  52.         ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
  53.         ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
  54.         ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
  55.     ], /* 上传文件格式显示 */

  56.     /* 列出指定目录下的图片 */
  57.     "imageManagerActionName": "listimage", /* 执行图片管理的action名称 */
  58.     "imageManagerListPath": "/Uploads/editor/image/", /* 指定要列出图片的目录 */
  59.     "imageManagerListSize": 1000, /* 每次列出文件数量 */
  60.     "imageManagerUrlPrefix": "", /* 图片访问路径前缀 */
  61.     "imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */
  62.     "imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件类型 */

  63.     /* 列出指定目录下的文件 */
  64.     "fileManagerActionName": "listfile", /* 执行文件管理的action名称 */
  65.     "fileManagerListPath": "/Uploads/editor/file/", /* 指定要列出文件的目录 */
  66.     "fileManagerUrlPrefix": "", /* 文件访问路径前缀 */
  67.     "fileManagerListSize": 1000, /* 每次列出文件数量 */
  68.     "fileManagerAllowFiles": [
  69.         ".png", ".jpg", ".jpeg", ".gif", ".bmp",
  70.         ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
  71.         ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
  72.         ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
  73.         ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
  74.     ] /* 列出的文件类型 */

  75. }
复制代码

差不多就这样了,这点点东西花了我大半天来集成

如果出现错误 后端配置项没有正常加载,上传插件不能正常使用! 请配置如下:

"imageUrlPrefix": "http://localhost:8080/xxxx", /* 图片访问路径前缀 */

kindeditor编辑器

http://www.thinkphp.cn/topic/34153.html

已经完成的功能 2017年3月10日:

已经完成功能:
1、分类数据库增加图片字段,分类功能增加编辑功能;
2、动态广告添加百度地图code;
3、添加城市管理模型,可以添加、修改、删除城市,并上传城市图片.图片上传直接上传到七牛,;
4、添加地铁模型,在此模型中可以选择对应的城市并增删改地铁名称、图片、描述.图片上传直接上传到七牛,;
5、增加了订阅分类模型,管理员自定义需要订阅的分类;
6、增加了订阅文章模型,分类对应订阅分类,在此模型中增加了kindeditor编辑器,配置了图片上传功能,使得图片上传直接上传到七牛,减少服务器的存储,直接图片的加载速度.

 配置文件:vim /etc/apache2/sites-available/default

原文地址:https://www.cnblogs.com/zl0372/p/baidu_map2.html