rabin 7 years ago
commit
5211dc29a2
100 changed files with 443 additions and 0 deletions
  1. 1 0
      .gitignore
  2. 193 0
      core.go
  3. 5 0
      start.sh
  4. 47 0
      static/css/jquery.json-viewer.css
  5. 1 0
      static/js/jquery-1.11.0.min.js
  6. 148 0
      static/js/jquery.json-viewer.js
  7. 1 0
      static/lib/layui/css/layui.css
  8. 1 0
      static/lib/layui/css/layui.mobile.css
  9. 2 0
      static/lib/layui/css/modules/code.css
  10. 1 0
      static/lib/layui/css/modules/laydate/default/laydate.css
  11. BIN
      static/lib/layui/css/modules/layer/default/icon-ext.png
  12. BIN
      static/lib/layui/css/modules/layer/default/icon.png
  13. 1 0
      static/lib/layui/css/modules/layer/default/layer.css
  14. BIN
      static/lib/layui/css/modules/layer/default/loading-0.gif
  15. BIN
      static/lib/layui/css/modules/layer/default/loading-1.gif
  16. BIN
      static/lib/layui/css/modules/layer/default/loading-2.gif
  17. BIN
      static/lib/layui/font/iconfont.eot
  18. 32 0
      static/lib/layui/font/iconfont.svg
  19. BIN
      static/lib/layui/font/iconfont.ttf
  20. BIN
      static/lib/layui/font/iconfont.woff
  21. BIN
      static/lib/layui/images/face/0.gif
  22. BIN
      static/lib/layui/images/face/1.gif
  23. BIN
      static/lib/layui/images/face/10.gif
  24. BIN
      static/lib/layui/images/face/11.gif
  25. BIN
      static/lib/layui/images/face/12.gif
  26. BIN
      static/lib/layui/images/face/13.gif
  27. BIN
      static/lib/layui/images/face/14.gif
  28. BIN
      static/lib/layui/images/face/15.gif
  29. BIN
      static/lib/layui/images/face/16.gif
  30. BIN
      static/lib/layui/images/face/17.gif
  31. BIN
      static/lib/layui/images/face/18.gif
  32. BIN
      static/lib/layui/images/face/19.gif
  33. BIN
      static/lib/layui/images/face/2.gif
  34. BIN
      static/lib/layui/images/face/20.gif
  35. BIN
      static/lib/layui/images/face/21.gif
  36. BIN
      static/lib/layui/images/face/22.gif
  37. BIN
      static/lib/layui/images/face/23.gif
  38. BIN
      static/lib/layui/images/face/24.gif
  39. BIN
      static/lib/layui/images/face/25.gif
  40. BIN
      static/lib/layui/images/face/26.gif
  41. BIN
      static/lib/layui/images/face/27.gif
  42. BIN
      static/lib/layui/images/face/28.gif
  43. BIN
      static/lib/layui/images/face/29.gif
  44. BIN
      static/lib/layui/images/face/3.gif
  45. BIN
      static/lib/layui/images/face/30.gif
  46. BIN
      static/lib/layui/images/face/31.gif
  47. BIN
      static/lib/layui/images/face/32.gif
  48. BIN
      static/lib/layui/images/face/33.gif
  49. BIN
      static/lib/layui/images/face/34.gif
  50. BIN
      static/lib/layui/images/face/35.gif
  51. BIN
      static/lib/layui/images/face/36.gif
  52. BIN
      static/lib/layui/images/face/37.gif
  53. BIN
      static/lib/layui/images/face/38.gif
  54. BIN
      static/lib/layui/images/face/39.gif
  55. BIN
      static/lib/layui/images/face/4.gif
  56. BIN
      static/lib/layui/images/face/40.gif
  57. BIN
      static/lib/layui/images/face/41.gif
  58. BIN
      static/lib/layui/images/face/42.gif
  59. BIN
      static/lib/layui/images/face/43.gif
  60. BIN
      static/lib/layui/images/face/44.gif
  61. BIN
      static/lib/layui/images/face/45.gif
  62. BIN
      static/lib/layui/images/face/46.gif
  63. BIN
      static/lib/layui/images/face/47.gif
  64. BIN
      static/lib/layui/images/face/48.gif
  65. BIN
      static/lib/layui/images/face/49.gif
  66. BIN
      static/lib/layui/images/face/5.gif
  67. BIN
      static/lib/layui/images/face/50.gif
  68. BIN
      static/lib/layui/images/face/51.gif
  69. BIN
      static/lib/layui/images/face/52.gif
  70. BIN
      static/lib/layui/images/face/53.gif
  71. BIN
      static/lib/layui/images/face/54.gif
  72. BIN
      static/lib/layui/images/face/55.gif
  73. BIN
      static/lib/layui/images/face/56.gif
  74. BIN
      static/lib/layui/images/face/57.gif
  75. BIN
      static/lib/layui/images/face/58.gif
  76. BIN
      static/lib/layui/images/face/59.gif
  77. BIN
      static/lib/layui/images/face/6.gif
  78. BIN
      static/lib/layui/images/face/60.gif
  79. BIN
      static/lib/layui/images/face/61.gif
  80. BIN
      static/lib/layui/images/face/62.gif
  81. BIN
      static/lib/layui/images/face/63.gif
  82. BIN
      static/lib/layui/images/face/64.gif
  83. BIN
      static/lib/layui/images/face/65.gif
  84. BIN
      static/lib/layui/images/face/66.gif
  85. BIN
      static/lib/layui/images/face/67.gif
  86. BIN
      static/lib/layui/images/face/68.gif
  87. BIN
      static/lib/layui/images/face/69.gif
  88. BIN
      static/lib/layui/images/face/7.gif
  89. BIN
      static/lib/layui/images/face/70.gif
  90. BIN
      static/lib/layui/images/face/71.gif
  91. BIN
      static/lib/layui/images/face/8.gif
  92. BIN
      static/lib/layui/images/face/9.gif
  93. 1 0
      static/lib/layui/lay/modules/carousel.js
  94. 2 0
      static/lib/layui/lay/modules/code.js
  95. 1 0
      static/lib/layui/lay/modules/element.js
  96. 2 0
      static/lib/layui/lay/modules/flow.js
  97. 1 0
      static/lib/layui/lay/modules/form.js
  98. 1 0
      static/lib/layui/lay/modules/jquery.js
  99. 1 0
      static/lib/layui/lay/modules/laydate.js
  100. 1 0
      static/lib/layui/lay/modules/layedit.js

+ 1 - 0
.gitignore

@@ -0,0 +1 @@
+.DS_Store

+ 193 - 0
core.go

@@ -0,0 +1,193 @@
+package main
+import (
+	"github.com/gin-contrib/sessions"
+	"github.com/gin-gonic/gin"
+	"os"
+	"fmt"
+	"bytes"
+	"encoding/json"
+	"io/ioutil"
+	//"strings"
+	"net/http"
+	"net/url"
+	//"reflect"
+)
+var port = "8081"
+var host = "http://passport.vogue.com.cn"
+var appkey = ""
+var appsecret = ""
+const scope = "all"
+const authorizeURL = "https://api.weibo.com/oauth2/authorize"
+const tokenURL = "https://api.weibo.com/oauth2/access_token"
+const grantType = "authorization_code"
+const userURL = "https://api.weibo.com/2/users/show.json"
+
+type Token struct {
+	Access_token string `json:"access_token"`
+	Expires_in int `json:"expires_in"`
+	Remind_in string `json:"remind_in"`
+	Uid string `json:"uid"`
+	//Data map[string]interface{} `json:data`
+}
+
+func main() {
+	gin.SetMode(gin.ReleaseMode)//gin.ReleaseMode gin.DebugMode
+	router := gin.Default()
+	router.LoadHTMLGlob("templates/*")
+	store := sessions.NewCookieStore([]byte("secret"))
+	router.Use(sessions.Sessions("oauth2", store))
+	//router.Use(Core)
+	router.GET("/", Index_get)
+	router.GET("/api", Api_get)
+	router.GET("/token", Token_get)
+	router.GET("/authorize", Authorize_get)
+	router.GET("/callback", Callback_get)
+	//router.POST("/simple/server/post", PostHandler)
+	//router.PUT("/simple/server/put", PutHandler)
+	//router.DELETE("/simple/server/delete", DeleteHandler)
+	router.StaticFS("/static", http.Dir("static"))
+	envport := os.Getenv("OAUTHPORT")
+	envurl := os.Getenv("OAUTHHOST")
+	if envurl != "" {
+		host = "http://" + envurl
+	}
+	if envport != "" {
+		port = envport
+	}
+
+	appkey = os.Getenv("APPKEY")
+	appsecret = os.Getenv("APPSECRET")
+
+	router.Run(":" + port)
+}
+
+func Core(c *gin.Context) {
+	return
+}
+
+func test(c *gin.Context) {
+	fmt.Println("test")
+}
+
+func Index_get(c *gin.Context) {
+	session := sessions.Default(c)
+	access_token := session.Get("access_token")
+	uid := session.Get("uid")
+	if access_token == nil || uid == nil {
+		c.Redirect(http.StatusMovedPermanently, "authorize?refer=index")
+		return
+	}
+	c.HTML(http.StatusOK, "index.html", gin.H{
+		"access_token": access_token,
+		"uid": uid,
+	})
+}
+
+func Token_get(c *gin.Context) {
+	session := sessions.Default(c)
+	access_token := session.Get("access_token")
+	uid := session.Get("uid")
+	if access_token == nil || uid == nil {
+		c.Redirect(http.StatusMovedPermanently, "authorize?refer=token")
+		return
+	}
+	c.JSON(http.StatusOK, gin.H{"token": access_token, "uid" : uid})
+}
+
+func Api_get(c *gin.Context) {
+	apiUrl := c.Query("url")
+	session := sessions.Default(c)
+	access_token := session.Get("access_token").(string)
+	uid := session.Get("uid").(string)
+	buffer := bytes.Buffer{}
+	buffer.WriteString(apiUrl)
+	buffer.WriteString("?access_token=")
+	buffer.WriteString(access_token)
+	buffer.WriteString("&uid=")
+	buffer.WriteString(uid)
+	body, err := get(buffer.String())
+	if err == "no" {
+		c.String(http.StatusOK, "error")
+		return
+	}
+	//var data map[string]interface{}
+	//json.Unmarshal(body, &data)
+	c.HTML(http.StatusOK, "api.html", gin.H{
+		"json": string(body),
+	})
+}
+
+func Authorize_get(c *gin.Context) {
+	referUrl := c.Query("refer")
+	redirectURL := host + ":" + port + "/callback?refer=" + referUrl
+	redirect := bytes.Buffer{}
+	redirect.WriteString(authorizeURL)
+	redirect.WriteString("?client_id=")
+	redirect.WriteString(appkey)
+	redirect.WriteString("&redirect_uri=")
+	redirect.WriteString(redirectURL)
+	redirect.WriteString("&response_type=code")
+	//c.String(http.StatusOK, "正在为您跳转到微博进行授权登录...")
+	c.Redirect(http.StatusMovedPermanently, redirect.String())
+}
+
+func Callback_get(c *gin.Context) {
+	redirectURL := host + ":" + port + "/callback"
+	code := c.Query("code")
+	referUrl := c.Query("refer")
+	body, err := post(tokenURL, url.Values{"client_id": {appkey}, "client_secret": {appsecret}, "grant_type": {grantType}, "code": {code}, "redirect_uri": {redirectURL}})
+	if err == "no" {
+		c.String(http.StatusOK, "error")
+		return
+	}
+	//fmt.Println(string(body))
+	token := Token{}
+	json.Unmarshal(body, &token)
+	session := sessions.Default(c)
+	session.Set("access_token", token.Access_token)
+	session.Set("uid", token.Uid)
+	session.Set("expires_in", token.Expires_in)
+	session.Set("remind_in", token.Remind_in)
+	session.Save()
+	indexUrl := host + ":" + port + "/"
+	if referUrl == "token" {
+		indexUrl = indexUrl + "token"
+	}
+	
+	c.Redirect(http.StatusMovedPermanently, indexUrl)
+}
+
+//param map[string][]string
+func post(url string, param url.Values) ([]byte, string) {
+	error := []byte{}
+	resp, err := http.PostForm(url, param)
+	if err != nil || resp.StatusCode != http.StatusOK {
+		return error, "no"
+	}
+	defer resp.Body.Close()
+
+	body, err := ioutil.ReadAll(resp.Body)
+	if err != nil {
+		return error, "no"
+	}
+	//fmt.Println("type:", reflect.TypeOf(body))
+	return body, "yes"
+
+	//data =  map[string]interface{}
+	//return json.Unmarshal(body, &data)
+}
+
+func get(url string) ([]byte, string) {
+	error := []byte{}
+	resp, err := http.Get(url)
+	if err != nil || resp.StatusCode != http.StatusOK {
+		return error, "no"
+	}
+	defer resp.Body.Close()
+
+	body, err := ioutil.ReadAll(resp.Body)
+	if err != nil {
+		return error, "no"
+	}
+	return body, "yes"
+}

+ 5 - 0
start.sh

@@ -0,0 +1,5 @@
+#!/usr/bin/env sh
+set -e
+
+cd /root/oauth2
+/root/oauth2/core

+ 47 - 0
static/css/jquery.json-viewer.css

@@ -0,0 +1,47 @@
+/* Syntax highlighting for JSON objects */
+ul.json-dict, ol.json-array {
+  list-style-type: none;
+  margin: 0 0 0 1px;
+  border-left: 1px dotted #ccc;
+  padding-left: 2em;
+}
+.json-string {
+  color: #0B7500;
+}
+.json-literal {
+  color: #1A01CC;
+  font-weight: bold;
+}
+
+/* Toggle button */
+a.json-toggle {
+  position: relative;
+  color: inherit;
+  text-decoration: none;
+}
+a.json-toggle:focus {
+  outline: none;
+}
+a.json-toggle:before {
+  color: #aaa;
+  content: "\25BC"; /* down arrow */
+  position: absolute;
+  display: inline-block;
+  width: 1em;
+  left: -1em;
+}
+a.json-toggle.collapsed:before {
+  transform: rotate(-90deg); /* Use rotated down arrow, prevents right arrow appearing smaller than down arrow in some browsers */
+  -ms-transform: rotate(-90deg);
+  -webkit-transform: rotate(-90deg);
+}
+
+/* Collapsable placeholder links */
+a.json-placeholder {
+  color: #aaa;
+  padding: 0 1em;
+  text-decoration: none;
+}
+a.json-placeholder:hover {
+  text-decoration: underline;
+}

File diff suppressed because it is too large
+ 1 - 0
static/js/jquery-1.11.0.min.js


+ 148 - 0
static/js/jquery.json-viewer.js

@@ -0,0 +1,148 @@
+/**
+ * jQuery json-viewer
+ * @author: Alexandre Bodelot <alexandre.bodelot@gmail.com>
+ */
+(function($){
+
+  /**
+   * Check if arg is either an array with at least 1 element, or a dict with at least 1 key
+   * @return boolean
+   */
+  function isCollapsable(arg) {
+    return arg instanceof Object && Object.keys(arg).length > 0;
+  }
+
+  /**
+   * Check if a string represents a valid url
+   * @return boolean
+   */
+  function isUrl(string) {
+     var regexp = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
+     return regexp.test(string);
+  }
+
+  /**
+   * Transform a json object into html representation
+   * @return string
+   */
+  function json2html(json, options) {
+    var html = '';
+    if (typeof json === 'string') {
+      /* Escape tags */
+      json = json.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+      if (isUrl(json))
+        html += '<a href="' + json + '" class="json-string">' + json + '</a>';
+      else
+        html += '<span class="json-string">"' + json + '"</span>';
+    }
+    else if (typeof json === 'number') {
+      html += '<span class="json-literal">' + json + '</span>';
+    }
+    else if (typeof json === 'boolean') {
+      html += '<span class="json-literal">' + json + '</span>';
+    }
+    else if (json === null) {
+      html += '<span class="json-literal">null</span>';
+    }
+    else if (json instanceof Array) {
+      if (json.length > 0) {
+        html += '[<ol class="json-array">';
+        for (var i = 0; i < json.length; ++i) {
+          html += '<li>';
+          /* Add toggle button if item is collapsable */
+          if (isCollapsable(json[i])) {
+            html += '<a href class="json-toggle"></a>';
+          }
+          html += json2html(json[i], options);
+          /* Add comma if item is not last */
+          if (i < json.length - 1) {
+            html += ',';
+          }
+          html += '</li>';
+        }
+        html += '</ol>]';
+      }
+      else {
+        html += '[]';
+      }
+    }
+    else if (typeof json === 'object') {
+      var key_count = Object.keys(json).length;
+      if (key_count > 0) {
+        html += '{<ul class="json-dict">';
+        for (var key in json) {
+          if (json.hasOwnProperty(key)) {
+            html += '<li>';
+            var keyRepr = options.withQuotes ?
+              '<span class="json-string">"' + key + '"</span>' : key;
+            /* Add toggle button if item is collapsable */
+            if (isCollapsable(json[key])) {
+              html += '<a href class="json-toggle">' + keyRepr + '</a>';
+            }
+            else {
+              html += keyRepr;
+            }
+            html += ': ' + json2html(json[key], options);
+            /* Add comma if item is not last */
+            if (--key_count > 0)
+              html += ',';
+            html += '</li>';
+          }
+        }
+        html += '</ul>}';
+      }
+      else {
+        html += '{}';
+      }
+    }
+    return html;
+  }
+
+  /**
+   * jQuery plugin method
+   * @param json: a javascript object
+   * @param options: an optional options hash
+   */
+  $.fn.jsonViewer = function(json, options) {
+    options = options || {};
+
+    /* jQuery chaining */
+    return this.each(function() {
+
+      /* Transform to HTML */
+      var html = json2html(json, options);
+      if (isCollapsable(json))
+        html = '<a href class="json-toggle"></a>' + html;
+
+      /* Insert HTML in target DOM element */
+      $(this).html(html);
+
+      /* Bind click on toggle buttons */
+      $(this).off('click');
+      $(this).on('click', 'a.json-toggle', function() {
+        var target = $(this).toggleClass('collapsed').siblings('ul.json-dict, ol.json-array');
+        target.toggle();
+        if (target.is(':visible')) {
+          target.siblings('.json-placeholder').remove();
+        }
+        else {
+          var count = target.children('li').length;
+          var placeholder = count + (count > 1 ? ' items' : ' item');
+          target.after('<a href class="json-placeholder">' + placeholder + '</a>');
+        }
+        return false;
+      });
+
+      /* Simulate click on toggle button when placeholder is clicked */
+      $(this).on('click', 'a.json-placeholder', function() {
+        $(this).siblings('a.json-toggle').click();
+        return false;
+      });
+
+      if (options.collapsed == true) {
+        /* Trigger click to collapse all nodes */
+        $(this).find('a.json-toggle').click();
+      }
+    });
+  };
+})(jQuery);

File diff suppressed because it is too large
+ 1 - 0
static/lib/layui/css/layui.css


File diff suppressed because it is too large
+ 1 - 0
static/lib/layui/css/layui.mobile.css


+ 2 - 0
static/lib/layui/css/modules/code.css

@@ -0,0 +1,2 @@
+/** layui-v2.1.4 MIT License By http://www.layui.com */
+ html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}

File diff suppressed because it is too large
+ 1 - 0
static/lib/layui/css/modules/laydate/default/laydate.css


BIN
static/lib/layui/css/modules/layer/default/icon-ext.png


BIN
static/lib/layui/css/modules/layer/default/icon.png


File diff suppressed because it is too large
+ 1 - 0
static/lib/layui/css/modules/layer/default/layer.css


BIN
static/lib/layui/css/modules/layer/default/loading-0.gif


BIN
static/lib/layui/css/modules/layer/default/loading-1.gif


BIN
static/lib/layui/css/modules/layer/default/loading-2.gif


BIN
static/lib/layui/font/iconfont.eot


File diff suppressed because it is too large
+ 32 - 0
static/lib/layui/font/iconfont.svg


BIN
static/lib/layui/font/iconfont.ttf


BIN
static/lib/layui/font/iconfont.woff


BIN
static/lib/layui/images/face/0.gif


BIN
static/lib/layui/images/face/1.gif


BIN
static/lib/layui/images/face/10.gif


BIN
static/lib/layui/images/face/11.gif


BIN
static/lib/layui/images/face/12.gif


BIN
static/lib/layui/images/face/13.gif


BIN
static/lib/layui/images/face/14.gif


BIN
static/lib/layui/images/face/15.gif


BIN
static/lib/layui/images/face/16.gif


BIN
static/lib/layui/images/face/17.gif


BIN
static/lib/layui/images/face/18.gif


BIN
static/lib/layui/images/face/19.gif


BIN
static/lib/layui/images/face/2.gif


BIN
static/lib/layui/images/face/20.gif


BIN
static/lib/layui/images/face/21.gif


BIN
static/lib/layui/images/face/22.gif


BIN
static/lib/layui/images/face/23.gif


BIN
static/lib/layui/images/face/24.gif


BIN
static/lib/layui/images/face/25.gif


BIN
static/lib/layui/images/face/26.gif


BIN
static/lib/layui/images/face/27.gif


BIN
static/lib/layui/images/face/28.gif


BIN
static/lib/layui/images/face/29.gif


BIN
static/lib/layui/images/face/3.gif


BIN
static/lib/layui/images/face/30.gif


BIN
static/lib/layui/images/face/31.gif


BIN
static/lib/layui/images/face/32.gif


BIN
static/lib/layui/images/face/33.gif


BIN
static/lib/layui/images/face/34.gif


BIN
static/lib/layui/images/face/35.gif


BIN
static/lib/layui/images/face/36.gif


BIN
static/lib/layui/images/face/37.gif


BIN
static/lib/layui/images/face/38.gif


BIN
static/lib/layui/images/face/39.gif


BIN
static/lib/layui/images/face/4.gif


BIN
static/lib/layui/images/face/40.gif


BIN
static/lib/layui/images/face/41.gif


BIN
static/lib/layui/images/face/42.gif


BIN
static/lib/layui/images/face/43.gif


BIN
static/lib/layui/images/face/44.gif


BIN
static/lib/layui/images/face/45.gif


BIN
static/lib/layui/images/face/46.gif


BIN
static/lib/layui/images/face/47.gif


BIN
static/lib/layui/images/face/48.gif


BIN
static/lib/layui/images/face/49.gif


BIN
static/lib/layui/images/face/5.gif


BIN
static/lib/layui/images/face/50.gif


BIN
static/lib/layui/images/face/51.gif


BIN
static/lib/layui/images/face/52.gif


BIN
static/lib/layui/images/face/53.gif


BIN
static/lib/layui/images/face/54.gif


BIN
static/lib/layui/images/face/55.gif


BIN
static/lib/layui/images/face/56.gif


BIN
static/lib/layui/images/face/57.gif


BIN
static/lib/layui/images/face/58.gif


BIN
static/lib/layui/images/face/59.gif


BIN
static/lib/layui/images/face/6.gif


BIN
static/lib/layui/images/face/60.gif


BIN
static/lib/layui/images/face/61.gif


BIN
static/lib/layui/images/face/62.gif


BIN
static/lib/layui/images/face/63.gif


BIN
static/lib/layui/images/face/64.gif


BIN
static/lib/layui/images/face/65.gif


BIN
static/lib/layui/images/face/66.gif


BIN
static/lib/layui/images/face/67.gif


BIN
static/lib/layui/images/face/68.gif


BIN
static/lib/layui/images/face/69.gif


BIN
static/lib/layui/images/face/7.gif


BIN
static/lib/layui/images/face/70.gif


BIN
static/lib/layui/images/face/71.gif


BIN
static/lib/layui/images/face/8.gif


BIN
static/lib/layui/images/face/9.gif


File diff suppressed because it is too large
+ 1 - 0
static/lib/layui/lay/modules/carousel.js


+ 2 - 0
static/lib/layui/lay/modules/code.js

@@ -0,0 +1,2 @@
+/** layui-v2.1.4 MIT License By http://www.layui.com */
+ ;layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#39;").replace(/"/g,"&quot;")),c.html('<ol class="layui-code-ol"><li>'+o.replace(/[\r\t\n]+/g,"</li><li>")+"</li></ol>"),c.find(">.layui-code-h3")[0]||c.prepend('<h3 class="layui-code-h3">'+(c.attr("lay-title")||e.title||"code")+(e.about?'<a href="'+l+'" target="_blank">layui.code</a>':"")+"</h3>");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss");

File diff suppressed because it is too large
+ 1 - 0
static/lib/layui/lay/modules/element.js


+ 2 - 0
static/lib/layui/lay/modules/flow.js

@@ -0,0 +1,2 @@
+/** layui-v2.1.4 MIT License By http://www.layui.com */
+ ;layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='<i class="layui-anim layui-anim-rotate layui-anim-loop layui-icon ">&#xe63e;</i>';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="<cite>加载更多</cite>",h=l('<div class="layui-flow-more"><a href="javascript:;">'+d+"</a></div>");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),i||(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;s<t.lazyimg.elem.length;s++){var v=t.lazyimg.elem.eq(s),y=a?function(){return v.offset().top-n.offset().top+m}():v.offset().top;if(c(v,f),i=s,y>u)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)});

File diff suppressed because it is too large
+ 1 - 0
static/lib/layui/lay/modules/form.js


File diff suppressed because it is too large
+ 1 - 0
static/lib/layui/lay/modules/jquery.js


File diff suppressed because it is too large
+ 1 - 0
static/lib/layui/lay/modules/laydate.js


File diff suppressed because it is too large
+ 1 - 0
static/lib/layui/lay/modules/layedit.js


Some files were not shown because too many files changed in this diff