diff --git a/.env.example b/.env.example index 381028d3..1621167c 100644 --- a/.env.example +++ b/.env.example @@ -1,19 +1,32 @@ APP_ENV=local +APP_KEY= APP_DEBUG=true -APP_KEY=SomeRandomString +APP_LOG_LEVEL=debug +APP_URL=http://localhost -DB_HOST=localhost +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret -CACHE_DRIVER=redis +BROADCAST_DRIVER=log +CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=sync +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + MAIL_DRIVER=smtp MAIL_HOST=mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null -MAIL_ENCRYPTION=null \ No newline at end of file +MAIL_ENCRYPTION=null + +PUSHER_APP_ID= +PUSHER_APP_KEY= +PUSHER_APP_SECRET= \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..a8763f8e --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +* text=auto +*.css linguist-vendored +*.scss linguist-vendored diff --git a/.gitignore b/.gitignore index 39b7ff50..a9633892 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ /bootstrap/compiled.php .env -.idea \ No newline at end of file +.idea +vendor +composer.lock diff --git a/app/Components/EndaAuth.php b/app/Components/EndaAuth.php deleted file mode 100644 index 1ba71d48..00000000 --- a/app/Components/EndaAuth.php +++ /dev/null @@ -1,104 +0,0 @@ - - * Time: 2015.07.18 下午9:14 - */ -namespace App\Components; - -use Illuminate\Http\Request; -use Illuminate\Contracts\Auth\Guard; - -trait EndaAuth { - - /** - * The Guard implementation. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $auth; - - - /** - * Show the application login form. - * - * @return \Illuminate\Http\Response - */ - public function getLogin() - { - return view('auth.login'); - } - - /** - * Handle a login request to the application. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function postLogin(Request $request) - { - $this->validate($request, [ - 'email' => 'required|email', 'password' => 'required', - ]); - - $credentials = $request->only('email', 'password'); - - if ($this->auth->attempt($credentials, $request->has('remember'))) - { - return redirect()->intended($this->redirectPath()); - } - - return redirect($this->loginPath()) - ->withInput($request->only('email', 'remember')) - ->withErrors([ - 'email' => $this->getFailedLoginMessage(), - ]); - } - - /** - * Get the failed login message. - * - * @return string - */ - protected function getFailedLoginMessage() - { - return 'These credentials do not match our records.'; - } - - /** - * Log the user out of the application. - * - * @return \Illuminate\Http\Response - */ - public function getLogout() - { - $this->auth->logout(); - - return redirect(property_exists($this, 'redirectAfterLogout') ? $this->redirectAfterLogout : '/'); - } - - /** - * Get the post register / login redirect path. - * - * @return string - */ - public function redirectPath() - { - if (property_exists($this, 'redirectPath')) - { - return $this->redirectPath; - } - - return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home'; - } - - /** - * Get the path to the login route. - * - * @return string - */ - public function loginPath() - { - return property_exists($this, 'loginPath') ? $this->loginPath : '/auth/login'; - } - -} \ No newline at end of file diff --git a/app/Components/EndaPage.php b/app/Components/EndaPage.php deleted file mode 100644 index 537780a1..00000000 --- a/app/Components/EndaPage.php +++ /dev/null @@ -1,135 +0,0 @@ - - * Time: 2015.11.12 下午6:16 - */ -namespace App\Components; - -use Illuminate\Contracts\Pagination\Presenter; -use Illuminate\Contracts\Pagination\Paginator as PaginatorContract; -use Illuminate\Pagination\BootstrapThreePresenter; -class EndaPage extends BootstrapThreePresenter implements Presenter -{ - public $paginator; - - public function __construct(PaginatorContract $paginator) - { - $this->paginator = $paginator; - } - - /** - * Determine if the underlying paginator being presented has pages to show. - * - * @return bool - */ - public function hasPages() - { - return $this->paginator->hasPages() && count($this->paginator->items()) > 0; - } - - /** - * Convert the URL window into Bootstrap HTML. - * - * @return string - */ - public function render() - { - if ($this->hasPages()) { - return sprintf( - '
=0&&n 文章内容较多时,可以用标题分段: 粗体 / 斜体 如果你只想高亮语句中的某个函数名或关键字,可以使用 通常我们会根据您的代码片段适配合适的高亮方法,但你也可以用 支持的语言: 您也可以使用 4 空格缩进,再贴上代码,实现相同的的效果 常用链接方法 高级链接技巧 跟链接的方法区别在于前面加了个感叹号 当然,你也可以像网址那样对图片网址使用变量 如果另起一行,只需在当前行结尾加 2 个空格 如果是要起一个新段落,只需要空出一行即可。 如果你有写分割线的习惯,可以新起一行输入三个减号 普通列表 带数字的列表 引用","
"],col:[2,"
"],tr:[2,"","
"],td:[3,"
"],_default:[0,"",""]};Yt.optgroup=Yt.option,Yt.tbody=Yt.tfoot=Yt.colgroup=Yt.caption=Yt.thead,Yt.th=Yt.td;
+var Qt=/<|?\w+;/;!function(){var t=ot.createDocumentFragment(),e=t.appendChild(ot.createElement("div")),n=ot.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),gt.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",gt.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var te=ot.documentElement,ee=/^key/,ne=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,re=/^([^.]*)(?:\.(.+)|)/;yt.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,c,l,f,p,d,h,v,g=qt.get(t);if(g)for(n.handler&&(o=n,n=o.handler,i=o.selector),i&&yt.find.matchesSelector(te,i),n.guid||(n.guid=yt.guid++),(u=g.events)||(u=g.events={}),(a=g.handle)||(a=g.handle=function(e){return"undefined"!=typeof yt&&yt.event.triggered!==e.type?yt.event.dispatch.apply(t,arguments):void 0}),e=(e||"").match(It)||[""],c=e.length;c--;)s=re.exec(e[c])||[],d=v=s[1],h=(s[2]||"").split(".").sort(),d&&(f=yt.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=yt.event.special[d]||{},l=yt.extend({type:d,origType:v,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&yt.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||(p=u[d]=[],p.delegateCount=0,f.setup&&f.setup.call(t,r,h,a)!==!1||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,l),l.handler.guid||(l.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,l):p.push(l),yt.event.global[d]=!0)},remove:function(t,e,n,r,i){var o,a,s,u,c,l,f,p,d,h,v,g=qt.hasData(t)&&qt.get(t);if(g&&(u=g.events)){for(e=(e||"").match(It)||[""],c=e.length;c--;)if(s=re.exec(e[c])||[],d=v=s[1],h=(s[2]||"").split(".").sort(),d){for(f=yt.event.special[d]||{},d=(r?f.delegateType:f.bindType)||d,p=u[d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;o--;)l=p[o],!i&&v!==l.origType||n&&n.guid!==l.guid||s&&!s.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(p.splice(o,1),l.selector&&p.delegateCount--,f.remove&&f.remove.call(t,l));a&&!p.length&&(f.teardown&&f.teardown.call(t,h,g.handle)!==!1||yt.removeEvent(t,d,g.handle),delete u[d])}else for(d in u)yt.event.remove(t,d+e[c],n,r,!0);yt.isEmptyObject(u)&&qt.remove(t,"handle events")}},dispatch:function(t){var e,n,r,i,o,a,s=yt.event.fix(t),u=new Array(arguments.length),c=(qt.get(this,"events")||{})[s.type]||[],l=yt.event.special[s.type]||{};for(u[0]=s,e=1;e"," {{name}} @{{slug}}
## 大标题 ##\n\
-### 小标题 ###\
-
\
-\
-*斜体文本* _斜体文本_\n\
-**粗体文本** __粗体文本__\n\
-***粗斜体文本*** ___粗斜体文本___\
-
\
-`function_name()`
实现```
包裹一段代码,并指定一种语言```javascript\n\
-$(document).ready(function () {\n\
- alert(\'hello world\');\n\
-});\n\
-```\
-
\
-actionscript, apache, bash, clojure, cmake, coffeescript, cpp, cs, css, d, delphi, django, erlang, go, haskell, html, http, ini, java, javascript, json, lisp, lua, markdown, matlab, nginx, objectivec, perl, php, python, r, ruby, scala, smalltalk, sql, tex, vbscript, xml
def g(x):\n\
- yield from range(x, 0, -1)\n\
- yield from range(x)\
-
\
-文字链接 [链接名称](http://链接网址)\n\
-网址链接 <http://链接网址>\
-
\
-这个链接用 1 作为网址变量 [Google][1].\n\
-这个链接用 yahoo 作为网址变量 [Yahoo!][yahoo].\n\
-然后在文档的结尾为变量赋值(网址)\n\
-\n\
- [1]: http://www.google.com/\n\
- [yahoo]: http://www.yahoo.com/\
-
\
-\
-!
,这样是不是觉得好记多了呢?\
-
\
-这个链接用 1 作为网址变量 [Google][1].\n\
-然后在文档的结尾位变量赋值(网址)\n\
-\n\
- [1]: http://www.google.com/logo.png\
-
\
-\
-在当前行的结尾加 2 个空格 \n\
-这行就会新起一行\
-
\
--
:---\n\
-
\
-\
-- 列表文本前使用 [减号+空格]\n\
-+ 列表文本前使用 [加号+空格]\n\
-* 列表文本前使用 [星号+空格]\
-
\
-1. 列表前使用 [数字+空格]\n\
-2. 我们会自动帮你添加数字\n\
-7. 不用担心数字不对,显示的时候我们会自动把这行的 7 纠正为 3\
-
\
-> 引用文本前使用 [大于号+空格]\n\
-> 折行可以不加,新起一行都要加上哦\
-
\
-\
- Cmd+Q",
- code: '代码
Cmd+K',
- image: '图片
Cmd+G',
- 'ordered-list': '数字列表
Cmd+O',
- 'unordered-list': '普通列表
Cmd+U',
- 'hr': '分割线
Cmd+R',
- 'title': '标题 /
Cmd+H',
- 'redo': '重做 Cmd+Shift+Z',
- 'undo': '撤销 Cmd+Z',
- };
-
- /**
- * Fix shortcut. Mac use Command, others use Ctrl.
- */
- function fixShortcut(name) {
- if (isMac) {
- name = name.replace('Ctrl', 'Cmd');
- } else {
- name = name.replace('Cmd', 'Ctrl');
- }
- return name;
- }
-
-
- /**
- * Create icon element for toolbar.
- */
- function createIcon(name, options) {
- options = options || {};
- var el = document.createElement('a');
- var shortcut = options.shortcut || tooltips[name];
- if (shortcut) {
- shortcut = fixShortcut(shortcut);
- el.title = shortcut;
- el.title = el.title.replace('Cmd', '⌘');
- if (isMac) {
- el.title = el.title.replace('Alt', '⌥');
- }
- }
-
- el.className = options.className || 'icon-' + name;
- // $(el).tooltip();
- var li = document.createElement('li');
- li.appendChild(el);
- return li;
- }
-
- function createSep() {
- var el = document.createElement('li');
- el.className = 'editor__menu--divider';
- el.innerHTML = ' | ';
- return el;
- }
-
-
- /**
- * The state of CodeMirror at the given position.
- */
- function getState(cm, pos) {
- pos = pos || cm.getCursor('start');
- var stat = cm.getTokenAt(pos);
- if (!stat.type) { //没有markdown关键字
- return {};
- } else {
- var types = stat.type.split(' ');
-
- var ret = {},
- data, text;
- for (var i = 0; i < types.length; i++) {
- data = types[i];
- if (data === 'strong') {
- ret.bold = true;
- } else if (data === 'variable-2') {
- text = cm.getLine(pos.line);
- if (/^\s*\d+\.\s/.test(text)) {
- ret['ordered-list'] = true;
- } else {
- ret['unordered-list'] = true;
- }
- } else if (data === 'quote') {
- ret.quote = true;
- } else if (data === 'em') {
- ret.italic = true;
- }
- }
- return ret;
- }
- }
-
-
- /**
- * Toggle full screen of the editor.
- */
- function toggleFullScreen(editor) {
- var cm = editor.codemirror;
- var el = $('.editor')[0];
- // https://developer.mozilla.org/en-US/docs/DOM/Using_fullscreen_mode
- var doc = document;
- var _sw = screen.width;
- var _sh = screen.height;
- var isFull = doc.isfullScreen || doc.mozFullScreen || doc.webkitIsFullScreen;
- var goBig = function() {
- $('.editor__menu--zen').addClass('editor__menu--two')
- .removeClass('editor__menu--zen');
- $('.editor').css({
- position: 'fixed',
- width: '100%',
- top: 0,
- left: 0,
- 'z-index': 999,
- 'margin-top': 0
- });
- $('.CodeMirror').css('height', $('html').height());
- $('.CodeMirror-gutters').css('height', '100%');
- $('.editor__resize').hide();
- };
- var request = function() {
- $('.editor').css('overflow', 'auto');
- $('.editor__resize').hide();
- $('.editor__menu--two').addClass('editor__menu--unzen')
- .removeClass('editor__menu--two');
- $('.editor__menu li.pull-right').hide();
- if (el.requestFullScreen) {
- el.requestFullScreen();
- } else if (el.mozRequestFullScreen) {
- el.mozRequestFullScreen();
- } else if (el.webkitRequestFullScreen) {
- el.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
- }
- $('.CodeMirror').after('')
-
- $('.editor').css('margin', 0);
- if(_sh > _sw) { // 针对竖屏做了优化
- $('.CodeMirror').css('height', '45%');
- $('#editorLive').css('height', '50%');
- } else {
- $('.editor__menu, .editor-help').css('width', '49%');
- $('.CodeMirror').css({height: _sh - 80, width: '49%', float: 'left'});
- $('#editorLive').css({height: _sh - 10, width: '49%', float: 'right', 'margin-top': '-70px'});
- }
- cm.focus();
- var text = cm.getValue();
- $('#editorLive').html(marker(text));
- highLight($('#editorLive'));
-
- $(document).on('webkitfullscreenchange mozfullscreenchange fullscreenchange', function() {
- var _isFull = document.isfullScreen || document.mozFullScreen || document.webkitIsFullScreen;
- if(!_isFull) {
- cancel();
- }
- });
-
- };
- var cancel = function() {
- $('.editor__resize').show();
- $('.editor__menu--unzen').addClass('editor__menu--zen')
- .removeClass('editor__menu--unzen');
- $('.editor__menu li.pull-right').show();
- $('#editorLive').remove();
- $('.CodeMirror, .editor__menu, .editor-help').css('width', '100%');
- $('.CodeMirror').css('float', 'none');
- $('.editor').css({
- position: 'static',
- width: '100%',
- 'margin-top': '20px'
- });
- if (doc.cancelFullScreen) {
- doc.cancelFullScreen();
- } else if (doc.mozCancelFullScreen) {
- doc.mozCancelFullScreen();
- } else if (doc.webkitCancelFullScreen) {
- doc.webkitCancelFullScreen();
- }
- };
- if (!isFull && $('.editor__menu--zen').length) {
- goBig();
- } else if($('.editor__menu--two').length) {
- request();
- } else {
- cancel();
- }
- }
-
-
- /**
- * Toggle big of the editor.
- */
- function toggleBig(editor) {
- var cm = editor.codemirror;
- var el = $('.editor')[0];
- var doc = document;
- var _sw = screen.width;
- var _sh = screen.height;
- var cmHeight = editor.originHeight;
- var goBig = function() {
- editor.originHeight = $('.CodeMirror').height();
- $('.editor__menu, .editor-help').css({
- position: 'static',
- width: 'auto'
- });
- $('.editor__menu--zen').addClass('editor__menu--unzen')
- .removeClass('editor__menu--zen');
- $('.editor').css({
- position: 'fixed',
- width: '100%',
- top: 0,
- left: 0,
- 'z-index': 999,
- 'margin-top': 0
- });
- $('.CodeMirror').css('height', $(document).height() - 70);
- cmHeight = Math.max($('.CodeMirror').height(), $('.CodeMirror-sizer').height());
- $('.CodeMirror-gutters').css('height', cmHeight);
- $('.editor__resize').hide();
- editor.isBig = true;
- };
- var cancel = function() {
- $('.editor__resize').show();
- $('.editor__menu--unzen').addClass('editor__menu--zen')
- .removeClass('editor__menu--unzen');
- $('.editor__menu li.pull-right').show();
- $('#editorLive').remove();
- $('.CodeMirror, .editor__menu, .editor-help').css('width', '100%');
- $('.CodeMirror').css({
- float: 'none',
- height: editor.originHeight
- });
- $('.editor').css({
- position: 'static',
- width: '100%',
- 'margin-top': '20px'
- });
- var cmHeight = Math.max($('.CodeMirror').height(), $('.CodeMirror-sizer').height());
- $('.CodeMirror-gutters').css('height', cmHeight);
- editor.isBig = false;
- };
- if($('.editor__menu--zen').length) {
- goBig();
- } else if (cancel) {
- cancel();
- }
- }
-
- /**
- * Action for toggling bold.
- */
- function toggleBold(editor) {
- var cm = editor.codemirror;
- var stat = getState(cm);
-
- var text = '加粗文字';
- var start = '**';
- var end = '**';
- var startPoint, endPoint,curPoint;
- if(cm.getSelection()) { // 有选中
- startPoint = cm.getCursor('from');
- endPoint = cm.getCursor('to');
- } else { //没有选中
- curPoint = cm.getCursor();
- }
- if (stat.bold) {
- if(curPoint || cm.getRange({line: startPoint.line, ch: startPoint.ch - 2} ,startPoint) !== '**' || cm.getRange(endPoint, {line: endPoint.line, ch: endPoint.ch + 2}) !== '**') { // 没有选中或选中的不全
- return;
- } else {
- text = cm.getSelection();
- startPoint.ch -= 2;
- endPoint.ch += 2;
- cm.replaceRange(text,
- startPoint,
- endPoint
- );
- endPoint.ch -= 4;
- }
- } else {
- var _text = cm.getSelection() || text;
- cm.replaceSelection(start + _text + end);
- if(curPoint) {
- startPoint = {line: curPoint.line, ch: curPoint.ch + 2};
- endPoint = {line: curPoint.line, ch: curPoint.ch + 6};
- } else {
- startPoint.ch += 2;
- endPoint.ch += 2;
- }
- }
- cm.setSelection(startPoint, endPoint);
- cm.focus();
- }
-
-
- /**
- * Action for toggling italic.
- */
- function toggleItalic(editor) {
- var cm = editor.codemirror;
- var stat = getState(cm);
-
- var text = '斜体文字';
- var start = '*';
- var end = '*';
-
- var startPoint, endPoint,curPoint;
- if(cm.getSelection()) { // 有选中
- startPoint = cm.getCursor('from');
- endPoint = cm.getCursor('to');
- } else { //没有选中
- curPoint = cm.getCursor();
- }
- if (stat.italic) {
- if(curPoint || cm.getRange({line: startPoint.line, ch: startPoint.ch - 1} ,startPoint) !== '*' || cm.getRange(endPoint, {line: endPoint.line, ch: endPoint.ch + 1}) !== '*') { // 没有选中或选中的不全
- return;
- } else {
- text = cm.getSelection();
- startPoint.ch -= 1;
- endPoint.ch += 1;
- cm.replaceRange(text,
- startPoint,
- endPoint
- );
- endPoint.ch -= 2;
- }
- } else {
- var _text = cm.getSelection() || text;
- cm.replaceSelection(start + _text + end);
- if(curPoint) {
- startPoint = {line: curPoint.line, ch: curPoint.ch + 1};
- endPoint = {line: curPoint.line, ch: curPoint.ch + 5};
- } else {
- startPoint.ch += 1;
- endPoint.ch += 1;
- }
- }
- cm.setSelection(startPoint, endPoint);
- cm.focus();
- }
-
- /**
- * Action for toggling blockquote.
- */
- function toggleBlockquote(editor) {
- var cm = editor.codemirror;
- _toggleLine(cm, 'quote');
- }
-
-
- /**
- * Action for toggling blockcode.
- */
- function toggleBlockcode(editor) {
- var cm = editor.codemirror;
- if(cm.somethingSelected()) { //如果有选择就加``` ```
- var code = cm.getSelection();
- var ncode = '\n```\n' + code + '\n```\n';
- cm.replaceSelection(ncode);
- } else { //没选择就加`请输入代码`
- var cursorCurrent = cm.getCursor();
- cm.replaceRange('`请输入代码`', cursorCurrent);
- cm.setSelection(
- { line: cursorCurrent.line, ch: cursorCurrent.ch + 1},
- { line: cursorCurrent.line, ch: cursorCurrent.ch + 6}
- );
- }
- cm.focus();
- }
-
-
- /**
- * Action for toggling ul.
- */
- function toggleUnOrderedList(editor) {
- var cm = editor.codemirror;
- _toggleLine(cm, 'unordered-list');
- }
-
-
- /**
- * Action for toggling ol.
- */
- function toggleOrderedList(editor) {
- var cm = editor.codemirror;
- _toggleLine(cm, 'ordered-list');
- }
-
- /**
- * Action for toggling title.
- */
- function toggleTitle(editor) {
- var cm = editor.codemirror;
- var stat = getState(cm);
- var text = '标题文字';
- var start = '##';
- var end = '##';
-
- var startPoint, endPoint,curPoint;
- if(cm.getSelection()) { // 有选中
- startPoint = cm.getCursor('from');
- endPoint = cm.getCursor('to');
- } else { //没有选中
- curPoint = cm.getCursor();
- }
- if (!curPoint && cm.getRange({line: startPoint.line, ch: startPoint.ch - 2} ,startPoint) === '##' && cm.getRange(endPoint, {line: endPoint.line, ch: endPoint.ch + 2}) === '##') {
- if(curPoint) { // 没有选中或选中的不全
- return;
- } else {
- text = cm.getSelection();
- startPoint.ch -= 2;
- endPoint.ch += 2;
- cm.replaceRange(text,
- startPoint,
- endPoint
- );
- endPoint.ch -= 4;
- }
- } else {
- var _text = cm.getSelection() || text;
- cm.replaceSelection(start + _text + end);
- if(curPoint) {
- startPoint = {line: curPoint.line, ch: curPoint.ch + 2};
- endPoint = {line: curPoint.line, ch: curPoint.ch + 6};
- } else {
- startPoint.ch += 2;
- endPoint.ch += 2;
- }
- }
- cm.setSelection(startPoint, endPoint);
- cm.focus();
- }
-
-
- // var startPoint = cm.getCursor('from');
- // var endPoint = cm.getCursor('to');
- // if (stat.bold) {
- // text = cm.getLine(startPoint.line);
- // start = text.slice(0, startPoint.ch);
- // end = text.slice(startPoint.ch);
- //
- // start = start.replace(/^(.*)?(#|\_){2}(\S+.*)?$/, '$1$3');
- // end = end.replace(/^(.*\S+)?(#|\_){2}(\s+.*)?$/, '$1$3');
- // startPoint.ch -= 2;
- // endPoint.ch -= 2;
- // //cm.setLine(startPoint.line, start + end); 新版CM去掉了setLine方法
- // cm.replaceRange(start + end,
- // {line: startPoint.line, ch: 0},
- // {line: startPoint.line + 1, ch: 0}
- // );
- // } else {
- // if(cm.somethingSelected()) {
- // text = cm.getSelection();
- // cm.replaceSelection(start + text + end);
- // startPoint.ch += 2;
- // endPoint.ch += 2;
- // } else {
- // cm.replaceSelection(start + '标题文字' + end);
- // var cursor = cm.getCursor();
- // startPoint = {line: cursor.line, ch: cursor.ch - 6};
- // endPoint = {line: cursor.line, ch: cursor.ch - 2};
- // }
- // }
- // cm.setSelection(startPoint, endPoint);
- // cm.focus();
- // }
-
-
- /**
- * Action for toggling ol.
- */
- function drawHr(editor) {
- var cm = editor.codemirror;
- var cursor = cm.getCursor();
- cm.replaceRange('\n----------\n', cursor);
- cm.setCursor({line: cursor.line + 2, ch: 0});
- cm.focus();
- }
-
-
- /**
- * Action for drawing a link.
- */
- function drawLink(editor) {
- var cm = editor.codemirror;
- var _isFull = document.isfullScreen || document.mozFullScreen || document.webkitIsFullScreen;
- sfModal({
- title: '插入链接',
- content: '',
- closeText: '取消',
- wrapper: _isFull ? '.editor' : null,
- doneText: '插入',
- doneFn: function() {
- var startCursor = cm.getCursor('from'); //光标位置
- var endCursor = cm.getCursor('to'); //选择结束位置
- var selectText = cm.getSelection(); //当前选中的文本
- var link = $('#editorLinkText').val(); //插入的链接地址
- var lastLine = cm.getLine(cm.lineCount() - 1); //最后一行的内容
- var reg = /^\s*\[(\d+)\]:/; //获取最后一行计数值的正则
- var regResult = reg.exec(lastLine); //缓存正则结果
- var i = 1; //计数默认为1
- var replaceText = '[' + selectText + ']' + '[' + i + ']';
- var tailText = '\n\n [' + i + ']: ' + link; //最后追加
- if (regResult) { //有插入过链接或图片
- i = parseInt(regResult[1]) + 1;
- tailText = '\n [' + i + ']: ' + link; //默认追加
- replaceText = '[' + selectText + ']' + '[' + i + ']';
- }
- // 插入text
- cm.replaceSelection(replaceText);
- var content = cm.getValue();
- cm.setValue(content + tailText);
- sfModal('hide');
- cm.focus();
- if(!selectText) {
- cm.setCursor({
- line: startCursor.line,
- ch: startCursor.ch + 1
- });
- } else {
- cm.setSelection({
- line: startCursor.line,
- ch: startCursor.ch +1
- },{
- line: endCursor.line,
- ch: endCursor.ch +1
- });
- }
- }
- });
- }
-
-
- /**
- * Action for drawing an img.
- */
- function drawImage(editor) {
- var cm = editor.codemirror;
- var imgLink = ''; //最后获取到的图片地址
- var _fileName = ''; //图片的文件名
- var _isFull = document.isfullScreen || document.mozFullScreen || document.webkitIsFullScreen;
- function insertPic() {
- var startCursor = cm.getCursor('from'); //光标位置
- var endCursor = cm.getCursor('to'); //选择结束位置
- var selectText = cm.getSelection() || _fileName; //当前选中的文本
- var lastLine = cm.getLine(cm.lineCount() - 1); //最后一行的内容
- var reg = /^\s*\[(\d+)\]:/; //获取最后一行计数值的正则
- var regResult = reg.exec(lastLine); //缓存正则结果
- //var i = 1; //计数默认为1
- var i = Math.random(); //计数默认为1
- var replaceText = '![' + selectText + ']' + '[' + i + ']';
- var tailText = '\n\n [' + i + ']: ' + imgLink; //最后追加
- if (regResult) { //有插入过链接或图片
- i = parseInt(regResult[1]) + 1;
- tailText = '\n [' + i + ']: ' + imgLink; //默认追加
- replaceText = '![' + selectText + ']' + '[' + i + ']';
- }
- // 插入text
- cm.replaceSelection(replaceText);
- var content = cm.getValue();
- cm.setValue(content + tailText);
- sfModal('hide');
- cm.focus();
- if(!selectText) {
- cm.setCursor({
- line: startCursor.line,
- ch: startCursor.ch + 2
- });
- } else {
- cm.setSelection({
- line: startCursor.line,
- ch: startCursor.ch + 2
- },{
- line: endCursor.line,
- ch: endCursor.ch + 2
- });
- }
- }
- sfModal({
- title: '插入图片',
- content: '
\
-
\
- \
- , paste the pixels into