修改密码最短要求为6,最长要求为32

This commit is contained in:
Gitea 2023-10-25 10:09:01 +08:00
parent c2b1a141c2
commit b05a7d3b76
245 changed files with 8780 additions and 8322 deletions

View File

@ -54,7 +54,7 @@ class Api::V1::UsersController < Api::V1::BaseController
def check_password
password = params[:password]
return tip_exception(-5, "8~16位密码支持字母数字和符号") unless password =~ CustomRegexp::PASSWORD
return tip_exception(-5, "6~32位密码,支持字母数字和符号") unless password =~ CustomRegexp::PASSWORD
return tip_exception(-5, "密码错误") unless @observe_user.check_password?(password)
render_ok
end

View File

@ -44,14 +44,14 @@ class BaseForm
def check_password(password)
password = strip(password)
raise PasswordFormatError, "密码8~16位密码支持字母数字和符号" unless password =~ CustomRegexp::PASSWORD
raise PasswordFormatError, "密码6~32位密码,支持字母数字和符号" unless password =~ CustomRegexp::PASSWORD
end
def check_password_confirmation(password, password_confirmation)
password = strip(password)
password_confirmation = strip(password_confirmation)
raise PasswordFormatError, "确认密码为8~16位密码支持字母数字和符号" unless password_confirmation =~ CustomRegexp::PASSWORD
raise PasswordFormatError, "确认密码为6~32位密码,支持字母数字和符号" unless password_confirmation =~ CustomRegexp::PASSWORD
raise PasswordConfirmationError, "两次输入的密码不一致" unless password == password_confirmation
end

View File

@ -4,5 +4,5 @@ class Users::LoginForm
attr_accessor :password, :login
validates :login, presence: true
validates :password, presence: true, length: { minimum: 6, maximum: 16 }, format: { with: CustomRegexp::LOGIN_PASSWORD, message: "6~16位,支持字母数字和符号" }
validates :password, presence: true, length: { minimum: 6, maximum: 32 }, format: { with: CustomRegexp::LOGIN_PASSWORD, message: "6~32位,支持字母数字和符号" }
end

View File

@ -3,5 +3,5 @@ class Users::UpdatePasswordForm
attr_accessor :password, :old_password
validates :password, presence: true, length: { minimum: 8, maximum: 16 }, format: { with: CustomRegexp::PASSWORD, message: "8~16位密码支持字母数字和符号" }
validates :password, presence: true, length: { minimum: 6, maximum: 32 }, format: { with: CustomRegexp::PASSWORD, message: "6~32位密码,支持字母数字和符号" }
end

View File

@ -8,8 +8,8 @@
# firstname :string(30) default(""), not null
# lastname :string(255) default(""), not null
# mail :string(60)
# admin :boolean default("0"), not null
# status :integer default("1"), not null
# admin :boolean default(FALSE), not null
# status :integer default(1), not null
# last_login_on :datetime
# language :string(5) default("")
# auth_source_id :integer
@ -20,36 +20,33 @@
# mail_notification :string(255) default(""), not null
# salt :string(64)
# gid :integer
# visits :integer default("0")
# excellent_teacher :integer default("0")
# excellent_student :integer default("0")
# visits :integer default(0)
# excellent_teacher :integer default(0)
# excellent_student :integer default(0)
# phone :string(255)
# authentication :boolean default("0")
# grade :integer default("0")
# experience :integer default("0")
# authentication :boolean default(FALSE)
# grade :integer default(0)
# experience :integer default(0)
# nickname :string(255)
# show_realname :boolean default("1")
# professional_certification :boolean default("0")
# show_realname :boolean default(TRUE)
# professional_certification :boolean default(FALSE)
# ID_number :string(255)
# certification :integer default("0")
# homepage_teacher :boolean default("0")
# homepage_engineer :boolean default("0")
# is_test :integer default("0")
# ecoder_user_id :integer default("0")
# business :boolean default("0")
# profile_completed :boolean default("0")
# certification :integer default(0)
# homepage_teacher :boolean default(FALSE)
# homepage_engineer :boolean default(FALSE)
# is_test :integer default(0)
# ecoder_user_id :integer default(0)
# business :boolean default(FALSE)
# profile_completed :boolean default(FALSE)
# laboratory_id :integer
# platform :string(255) default("0")
# platform :string(255) default(NULL)
# gitea_token :string(255)
# gitea_uid :integer
# is_shixun_marker :boolean default("0")
# is_sync_pwd :boolean default("1")
# watchers_count :integer default("0")
# devops_step :integer default("0")
# sign_cla :boolean default("0")
# enabling_cla :boolean default("0")
# id_card_verify :boolean default("0")
# website_permission :boolean default("0")
# is_shixun_marker :boolean default(FALSE)
# is_sync_pwd :boolean default(TRUE)
# watchers_count :integer default(0)
# devops_step :integer default(0)
# sign_cla :boolean default(FALSE)
#
# Indexes
#
@ -57,7 +54,7 @@
# index_users_on_homepage_engineer (homepage_engineer)
# index_users_on_homepage_teacher (homepage_teacher)
# index_users_on_laboratory_id (laboratory_id)
# index_users_on_login (login) UNIQUE
# index_users_on_login (login)
# index_users_on_mail (mail)
# index_users_on_type (type)
#
@ -105,7 +102,7 @@ class User < Owner
MAIL_LENGTH_LMIT = 60
# 最短密码长度修改为6
# MIX_PASSWORD_LIMIT = 8
MIX_PASSWORD_LIMIT = 6
MIX_PASSWORD_LIMIT = 6
LOGIN_CHARS = %W(2 3 4 5 6 7 8 9 a b c f e f g h i j k l m n o p q r s t u v w x y z).freeze
@ -123,20 +120,19 @@ class User < Owner
has_many :open_users, dependent: :destroy
has_one :wechat_open_user, class_name: 'OpenUsers::Wechat'
has_one :qq_open_user, class_name: 'OpenUsers::Qq'
has_one :identity_verification
accepts_nested_attributes_for :user_extension, update_only: true
has_many :fork_users, dependent: :destroy
has_many :versions
has_many :issue_times, :dependent => :destroy
# has_one :onclick_time, :dependent => :destroy
has_one :onclick_time, :dependent => :destroy
# 新版私信
# has_many :private_messages, dependent: :destroy
has_many :private_messages, dependent: :destroy
has_many :recent_contacts, through: :private_messages, source: :target
has_many :tidings, :dependent => :destroy
# has_many :journals_for_messages, :as => :jour, :dependent => :destroy
has_many :journals_for_messages, :as => :jour, :dependent => :destroy
has_many :attachments,foreign_key: :author_id, :dependent => :destroy
@ -146,7 +142,7 @@ class User < Owner
has_many :apply_user_authentication
has_one :process_real_name_apply, -> { processing.real_name_auth.order(created_at: :desc) }, class_name: 'ApplyUserAuthentication'
has_one :process_professional_apply, -> { processing.professional_auth.order(created_at: :desc) }, class_name: 'ApplyUserAuthentication'
# has_many :apply_actions, dependent: :destroy
has_many :apply_actions, dependent: :destroy
has_many :trail_auth_apply_actions, -> { where(container_type: 'TrialAuthorization') }, class_name: 'ApplyAction'
# has_many :attendances
@ -186,18 +182,12 @@ class User < Owner
has_many :issue_participants, foreign_key: :participant_id
has_many :participant_issues, through: :issue_participants, source: :issue
has_many :project_topics
#cla
has_many :user_clas, :dependent => :destroy
has_many :clas, through: :user_clas
has_many :pages, :dependent => :destroy
# Groups and active users
scope :active, lambda { where(status: [STATUS_ACTIVE, STATUS_EDIT_INFO]) }
scope :like, lambda { |keywords|
# 表情处理
keywords = keywords.to_s.each_char.select { |c| c.bytes.first < 240 }.join('')
sql = "CONCAT(lastname, firstname) LIKE :search OR nickname LIKE :search OR login LIKE :search OR mail LIKE :search OR phone LIKE :search"
sql = "CONCAT(lastname, firstname) LIKE :search OR nickname LIKE :search OR login LIKE :search OR mail LIKE :search OR nickname LIKE :search"
where(sql, :search => "%#{keywords.strip}%") unless keywords.blank?
}
@ -472,23 +462,6 @@ class User < Owner
end
end
def register_gitea
psd = "12345678"
interactor = Gitea::RegisterInteractor.call({username: self.login, email: self.mail, password: psd})
if interactor.success?
gitea_user = interactor.result
result = Gitea::User::GenerateTokenService.call(self.login, psd)
self.gitea_token = result['sha1']
self.gitea_uid = gitea_user[:body]['id']
self.password = psd
self.password_confirmation = psd
if self.save!
UserExtension.create!(user_id: self.id)
end
end
end
def activate!
update_attribute(:status, STATUS_ACTIVE)
prohibit_gitea_user_login!(false)
@ -764,7 +737,6 @@ class User < Owner
if password
salt_password(password)
end
check_website_permission
end
def salt_password(clear_password)
@ -772,13 +744,6 @@ class User < Owner
self.hashed_password = User.hash_password("#{salt}#{User.hash_password clear_password}")
end
def check_website_permission
if website_permission_changed? && website_permission == false
self.pages.update_all(state: false, state_description:"因违规使用现关闭Page服务")
PageService.close_site(self.id)
end
end
def self.generate_salt
Gitlink::Utils.random_hex(16)
end
@ -872,8 +837,7 @@ class User < Owner
end
def profile_is_completed?
#self.nickname.present? && self.mail.present?
self.mail.present?
self.nickname.present? && self.mail.present?
end
def trace_token
@ -896,7 +860,7 @@ class User < Owner
# 重写gitea_token,当用户为bot类型时替换成管理员token
def gitea_token
if self.respond_to?('platform') && self.platform == "bot"
if self.platform == "bot"
GiteaService.gitea_config[:admin_token]
else
self['gitea_token']
@ -944,8 +908,8 @@ class User < Owner
raise("密码长度不能低于#{MIX_PASSWORD_LIMIT}")
end
if password.present? && password.size > 16
raise('密码长度不能超过16位')
if password.present? && password.size > 32
raise('密码长度不能超过32位')
end
end

View File

@ -17,10 +17,10 @@
"./static/js/13.9c975527.chunk.js": "/react/build/./static/js/13.9c975527.chunk.js",
"./static/js/14.78152190.chunk.js": "/react/build/./static/js/14.78152190.chunk.js",
"static/css/15.d00c3b40.chunk.css": "/react/build/static/css/15.d00c3b40.chunk.css",
"./static/js/15.246e93c1.chunk.js": "/react/build/./static/js/15.246e93c1.chunk.js",
"./static/js/15.d81994fa.chunk.js": "/react/build/./static/js/15.d81994fa.chunk.js",
"./static/js/16.0c72eaeb.chunk.js": "/react/build/./static/js/16.0c72eaeb.chunk.js",
"static/css/17.8e1bcc30.chunk.css": "/react/build/static/css/17.8e1bcc30.chunk.css",
"./static/js/17.00fdc29a.chunk.js": "/react/build/./static/js/17.00fdc29a.chunk.js",
"static/css/17.03effa28.chunk.css": "/react/build/static/css/17.03effa28.chunk.css",
"./static/js/17.04df9df0.chunk.js": "/react/build/./static/js/17.04df9df0.chunk.js",
"./static/js/18.91c26d27.chunk.js": "/react/build/./static/js/18.91c26d27.chunk.js",
"static/css/19.b429c53f.chunk.css": "/react/build/static/css/19.b429c53f.chunk.css",
"./static/js/19.cee3b8b4.chunk.js": "/react/build/./static/js/19.cee3b8b4.chunk.js",
@ -28,63 +28,63 @@
"./static/js/20.01852e1f.chunk.js": "/react/build/./static/js/20.01852e1f.chunk.js",
"./static/js/21.4da09c32.chunk.js": "/react/build/./static/js/21.4da09c32.chunk.js",
"static/css/22.b974e0fe.chunk.css": "/react/build/static/css/22.b974e0fe.chunk.css",
"./static/js/22.09882469.chunk.js": "/react/build/./static/js/22.09882469.chunk.js",
"./static/js/22.0bd456df.chunk.js": "/react/build/./static/js/22.0bd456df.chunk.js",
"./static/js/23.f41e5327.chunk.js": "/react/build/./static/js/23.f41e5327.chunk.js",
"./static/js/24.6d2aa382.chunk.js": "/react/build/./static/js/24.6d2aa382.chunk.js",
"./static/js/25.53f0b2ce.chunk.js": "/react/build/./static/js/25.53f0b2ce.chunk.js",
"./static/js/26.f8a6c74a.chunk.js": "/react/build/./static/js/26.f8a6c74a.chunk.js",
"./static/js/27.30f2975e.chunk.js": "/react/build/./static/js/27.30f2975e.chunk.js",
"static/css/28.bc037916.chunk.css": "/react/build/static/css/28.bc037916.chunk.css",
"./static/js/28.d0415758.chunk.js": "/react/build/./static/js/28.d0415758.chunk.js",
"static/css/29.18f41680.chunk.css": "/react/build/static/css/29.18f41680.chunk.css",
"./static/js/29.96e6bce7.chunk.js": "/react/build/./static/js/29.96e6bce7.chunk.js",
"./static/js/28.0e9dd083.chunk.js": "/react/build/./static/js/28.0e9dd083.chunk.js",
"static/css/29.c3cf1a83.chunk.css": "/react/build/static/css/29.c3cf1a83.chunk.css",
"./static/js/29.256b5855.chunk.js": "/react/build/./static/js/29.256b5855.chunk.js",
"./static/js/30.36072913.chunk.js": "/react/build/./static/js/30.36072913.chunk.js",
"static/css/31.f8d5bf59.chunk.css": "/react/build/static/css/31.f8d5bf59.chunk.css",
"./static/js/31.8bfbe104.chunk.js": "/react/build/./static/js/31.8bfbe104.chunk.js",
"static/css/32.fd7e32c8.chunk.css": "/react/build/static/css/32.fd7e32c8.chunk.css",
"./static/js/32.bed0d809.chunk.js": "/react/build/./static/js/32.bed0d809.chunk.js",
"./static/js/33.9409b5e1.chunk.js": "/react/build/./static/js/33.9409b5e1.chunk.js",
"./static/js/31.445da6d3.chunk.js": "/react/build/./static/js/31.445da6d3.chunk.js",
"static/css/32.3c668656.chunk.css": "/react/build/static/css/32.3c668656.chunk.css",
"./static/js/32.b18b78bc.chunk.js": "/react/build/./static/js/32.b18b78bc.chunk.js",
"./static/js/33.baf2e04d.chunk.js": "/react/build/./static/js/33.baf2e04d.chunk.js",
"static/css/34.b4ad1b94.chunk.css": "/react/build/static/css/34.b4ad1b94.chunk.css",
"./static/js/34.6f730ca0.chunk.js": "/react/build/./static/js/34.6f730ca0.chunk.js",
"static/css/35.63e62a9a.chunk.css": "/react/build/static/css/35.63e62a9a.chunk.css",
"./static/js/35.c6a1000c.chunk.js": "/react/build/./static/js/35.c6a1000c.chunk.js",
"static/css/36.7945f7f5.chunk.css": "/react/build/static/css/36.7945f7f5.chunk.css",
"./static/js/36.e598a09d.chunk.js": "/react/build/./static/js/36.e598a09d.chunk.js",
"static/css/35.c7141444.chunk.css": "/react/build/static/css/35.c7141444.chunk.css",
"./static/js/35.7591762b.chunk.js": "/react/build/./static/js/35.7591762b.chunk.js",
"static/css/36.5bcfc22c.chunk.css": "/react/build/static/css/36.5bcfc22c.chunk.css",
"./static/js/36.7a232184.chunk.js": "/react/build/./static/js/36.7a232184.chunk.js",
"static/css/37.3976e793.chunk.css": "/react/build/static/css/37.3976e793.chunk.css",
"./static/js/37.9f96f7c8.chunk.js": "/react/build/./static/js/37.9f96f7c8.chunk.js",
"static/css/38.98146c40.chunk.css": "/react/build/static/css/38.98146c40.chunk.css",
"static/css/38.25d8f6a3.chunk.css": "/react/build/static/css/38.25d8f6a3.chunk.css",
"./static/js/38.e25694de.chunk.js": "/react/build/./static/js/38.e25694de.chunk.js",
"./static/js/39.f12827a6.chunk.js": "/react/build/./static/js/39.f12827a6.chunk.js",
"static/css/40.a9150410.chunk.css": "/react/build/static/css/40.a9150410.chunk.css",
"./static/js/40.29c9e18e.chunk.js": "/react/build/./static/js/40.29c9e18e.chunk.js",
"static/css/41.22361b96.chunk.css": "/react/build/static/css/41.22361b96.chunk.css",
"./static/js/41.3373add4.chunk.js": "/react/build/./static/js/41.3373add4.chunk.js",
"static/css/42.b6615865.chunk.css": "/react/build/static/css/42.b6615865.chunk.css",
"./static/js/42.e886ac62.chunk.js": "/react/build/./static/js/42.e886ac62.chunk.js",
"static/css/40.488436fd.chunk.css": "/react/build/static/css/40.488436fd.chunk.css",
"./static/js/40.ea8a3949.chunk.js": "/react/build/./static/js/40.ea8a3949.chunk.js",
"static/css/41.c63c77c0.chunk.css": "/react/build/static/css/41.c63c77c0.chunk.css",
"./static/js/41.5df91ec1.chunk.js": "/react/build/./static/js/41.5df91ec1.chunk.js",
"static/css/42.97b6e33e.chunk.css": "/react/build/static/css/42.97b6e33e.chunk.css",
"./static/js/42.38965cff.chunk.js": "/react/build/./static/js/42.38965cff.chunk.js",
"static/css/43.78a1ba5d.chunk.css": "/react/build/static/css/43.78a1ba5d.chunk.css",
"./static/js/43.14235942.chunk.js": "/react/build/./static/js/43.14235942.chunk.js",
"static/css/44.b96984b7.chunk.css": "/react/build/static/css/44.b96984b7.chunk.css",
"./static/js/44.4a4c83a3.chunk.js": "/react/build/./static/js/44.4a4c83a3.chunk.js",
"static/css/45.e65d5b3d.chunk.css": "/react/build/static/css/45.e65d5b3d.chunk.css",
"./static/js/45.dea01e2d.chunk.js": "/react/build/./static/js/45.dea01e2d.chunk.js",
"static/css/46.ad6c58f5.chunk.css": "/react/build/static/css/46.ad6c58f5.chunk.css",
"./static/js/46.ca162d52.chunk.js": "/react/build/./static/js/46.ca162d52.chunk.js",
"static/css/47.bd89b3a5.chunk.css": "/react/build/static/css/47.bd89b3a5.chunk.css",
"./static/js/47.5c371ec1.chunk.js": "/react/build/./static/js/47.5c371ec1.chunk.js",
"./static/js/44.fffc657b.chunk.js": "/react/build/./static/js/44.fffc657b.chunk.js",
"static/css/45.215ce323.chunk.css": "/react/build/static/css/45.215ce323.chunk.css",
"./static/js/45.34447de8.chunk.js": "/react/build/./static/js/45.34447de8.chunk.js",
"static/css/46.dca80471.chunk.css": "/react/build/static/css/46.dca80471.chunk.css",
"./static/js/46.290d3f85.chunk.js": "/react/build/./static/js/46.290d3f85.chunk.js",
"static/css/47.27c04975.chunk.css": "/react/build/static/css/47.27c04975.chunk.css",
"./static/js/47.ed69baff.chunk.js": "/react/build/./static/js/47.ed69baff.chunk.js",
"static/css/48.77c696ba.chunk.css": "/react/build/static/css/48.77c696ba.chunk.css",
"./static/js/48.41ec0ead.chunk.js": "/react/build/./static/js/48.41ec0ead.chunk.js",
"static/css/49.8e1bcc30.chunk.css": "/react/build/static/css/49.8e1bcc30.chunk.css",
"./static/js/49.8e10e4ba.chunk.js": "/react/build/./static/js/49.8e10e4ba.chunk.js",
"static/css/50.edd35995.chunk.css": "/react/build/static/css/50.edd35995.chunk.css",
"./static/js/50.04ed8edb.chunk.js": "/react/build/./static/js/50.04ed8edb.chunk.js",
"static/css/51.c96d41ad.chunk.css": "/react/build/static/css/51.c96d41ad.chunk.css",
"./static/js/51.7fb43235.chunk.js": "/react/build/./static/js/51.7fb43235.chunk.js",
"static/css/52.8e1bcc30.chunk.css": "/react/build/static/css/52.8e1bcc30.chunk.css",
"./static/js/52.0a3ee4be.chunk.js": "/react/build/./static/js/52.0a3ee4be.chunk.js",
"static/css/53.8e1bcc30.chunk.css": "/react/build/static/css/53.8e1bcc30.chunk.css",
"./static/js/53.3242df93.chunk.js": "/react/build/./static/js/53.3242df93.chunk.js",
"static/css/54.8e1bcc30.chunk.css": "/react/build/static/css/54.8e1bcc30.chunk.css",
"./static/js/54.0311a627.chunk.js": "/react/build/./static/js/54.0311a627.chunk.js",
"static/css/49.03effa28.chunk.css": "/react/build/static/css/49.03effa28.chunk.css",
"./static/js/49.8f6e442c.chunk.js": "/react/build/./static/js/49.8f6e442c.chunk.js",
"static/css/50.3a07726a.chunk.css": "/react/build/static/css/50.3a07726a.chunk.css",
"./static/js/50.62a79609.chunk.js": "/react/build/./static/js/50.62a79609.chunk.js",
"static/css/51.36fac896.chunk.css": "/react/build/static/css/51.36fac896.chunk.css",
"./static/js/51.fcdc1e8b.chunk.js": "/react/build/./static/js/51.fcdc1e8b.chunk.js",
"static/css/52.03effa28.chunk.css": "/react/build/static/css/52.03effa28.chunk.css",
"./static/js/52.9fb88799.chunk.js": "/react/build/./static/js/52.9fb88799.chunk.js",
"static/css/53.03effa28.chunk.css": "/react/build/static/css/53.03effa28.chunk.css",
"./static/js/53.10999bbf.chunk.js": "/react/build/./static/js/53.10999bbf.chunk.js",
"static/css/54.03effa28.chunk.css": "/react/build/static/css/54.03effa28.chunk.css",
"./static/js/54.70e341ae.chunk.js": "/react/build/./static/js/54.70e341ae.chunk.js",
"static/css/55.df077b70.chunk.css": "/react/build/static/css/55.df077b70.chunk.css",
"./static/js/55.16b12e46.chunk.js": "/react/build/./static/js/55.16b12e46.chunk.js",
"static/css/56.fd3fa2e9.chunk.css": "/react/build/static/css/56.fd3fa2e9.chunk.css",
@ -94,7 +94,7 @@
"./static/js/58.ef153db6.chunk.js": "/react/build/./static/js/58.ef153db6.chunk.js",
"static/css/59.deeb1b7c.chunk.css": "/react/build/static/css/59.deeb1b7c.chunk.css",
"./static/js/59.4c606d11.chunk.js": "/react/build/./static/js/59.4c606d11.chunk.js",
"static/css/60.94519a29.chunk.css": "/react/build/static/css/60.94519a29.chunk.css",
"static/css/60.72b1c501.chunk.css": "/react/build/static/css/60.72b1c501.chunk.css",
"./static/js/60.dd23ce5f.chunk.js": "/react/build/./static/js/60.dd23ce5f.chunk.js",
"static/css/61.6b9ba3cb.chunk.css": "/react/build/static/css/61.6b9ba3cb.chunk.css",
"./static/js/61.ace82e27.chunk.js": "/react/build/./static/js/61.ace82e27.chunk.js",
@ -102,29 +102,29 @@
"./static/js/62.3d9da556.chunk.js": "/react/build/./static/js/62.3d9da556.chunk.js",
"./static/js/63.aaa5d2b8.chunk.js": "/react/build/./static/js/63.aaa5d2b8.chunk.js",
"static/css/64.4237b849.chunk.css": "/react/build/static/css/64.4237b849.chunk.css",
"./static/js/64.72dc282b.chunk.js": "/react/build/./static/js/64.72dc282b.chunk.js",
"static/css/65.98146c40.chunk.css": "/react/build/static/css/65.98146c40.chunk.css",
"./static/js/65.05715401.chunk.js": "/react/build/./static/js/65.05715401.chunk.js",
"./static/js/64.c20cb6da.chunk.js": "/react/build/./static/js/64.c20cb6da.chunk.js",
"static/css/65.25d8f6a3.chunk.css": "/react/build/static/css/65.25d8f6a3.chunk.css",
"./static/js/65.ba6b25b7.chunk.js": "/react/build/./static/js/65.ba6b25b7.chunk.js",
"./static/js/66.ecd395af.chunk.js": "/react/build/./static/js/66.ecd395af.chunk.js",
"static/css/67.98146c40.chunk.css": "/react/build/static/css/67.98146c40.chunk.css",
"static/css/67.25d8f6a3.chunk.css": "/react/build/static/css/67.25d8f6a3.chunk.css",
"./static/js/67.cdbbd0d6.chunk.js": "/react/build/./static/js/67.cdbbd0d6.chunk.js",
"./static/js/68.ef50625e.chunk.js": "/react/build/./static/js/68.ef50625e.chunk.js",
"static/css/69.211cfcc2.chunk.css": "/react/build/static/css/69.211cfcc2.chunk.css",
"./static/js/69.9385fb67.chunk.js": "/react/build/./static/js/69.9385fb67.chunk.js",
"static/css/69.1a4f91fe.chunk.css": "/react/build/static/css/69.1a4f91fe.chunk.css",
"./static/js/69.ca15418c.chunk.js": "/react/build/./static/js/69.ca15418c.chunk.js",
"static/css/70.d788cda5.chunk.css": "/react/build/static/css/70.d788cda5.chunk.css",
"./static/js/70.9e684999.chunk.js": "/react/build/./static/js/70.9e684999.chunk.js",
"static/css/71.6ab1836b.chunk.css": "/react/build/static/css/71.6ab1836b.chunk.css",
"./static/js/71.88c6a2c8.chunk.js": "/react/build/./static/js/71.88c6a2c8.chunk.js",
"static/css/72.0bcaa310.chunk.css": "/react/build/static/css/72.0bcaa310.chunk.css",
"./static/js/72.4e6f0cff.chunk.js": "/react/build/./static/js/72.4e6f0cff.chunk.js",
"static/css/73.6978aa87.chunk.css": "/react/build/static/css/73.6978aa87.chunk.css",
"static/css/73.c43a353f.chunk.css": "/react/build/static/css/73.c43a353f.chunk.css",
"./static/js/73.bb2a6774.chunk.js": "/react/build/./static/js/73.bb2a6774.chunk.js",
"static/css/74.d4544d53.chunk.css": "/react/build/static/css/74.d4544d53.chunk.css",
"static/css/74.cb568edc.chunk.css": "/react/build/static/css/74.cb568edc.chunk.css",
"./static/js/74.d1207782.chunk.js": "/react/build/./static/js/74.d1207782.chunk.js",
"static/css/75.59c9cad5.chunk.css": "/react/build/static/css/75.59c9cad5.chunk.css",
"./static/js/75.d123738d.chunk.js": "/react/build/./static/js/75.d123738d.chunk.js",
"static/css/76.f61a22e7.chunk.css": "/react/build/static/css/76.f61a22e7.chunk.css",
"./static/js/76.89501b28.chunk.js": "/react/build/./static/js/76.89501b28.chunk.js",
"./static/js/76.ca0f9bf8.chunk.js": "/react/build/./static/js/76.ca0f9bf8.chunk.js",
"static/css/77.cca0fae4.chunk.css": "/react/build/static/css/77.cca0fae4.chunk.css",
"./static/js/77.f9f62bd5.chunk.js": "/react/build/./static/js/77.f9f62bd5.chunk.js",
"./static/js/78.ca0dc5cb.chunk.js": "/react/build/./static/js/78.ca0dc5cb.chunk.js",
@ -139,20 +139,20 @@
"./static/js/83.7bd5c3cc.chunk.js": "/react/build/./static/js/83.7bd5c3cc.chunk.js",
"static/css/84.541803c4.chunk.css": "/react/build/static/css/84.541803c4.chunk.css",
"./static/js/84.1f0df9f0.chunk.js": "/react/build/./static/js/84.1f0df9f0.chunk.js",
"static/css/85.9d206204.chunk.css": "/react/build/static/css/85.9d206204.chunk.css",
"static/css/85.41b8aabd.chunk.css": "/react/build/static/css/85.41b8aabd.chunk.css",
"./static/js/85.e71e824f.chunk.js": "/react/build/./static/js/85.e71e824f.chunk.js",
"./static/js/86.e7cdd871.chunk.js": "/react/build/./static/js/86.e7cdd871.chunk.js",
"./static/js/87.e072d477.chunk.js": "/react/build/./static/js/87.e072d477.chunk.js",
"./static/js/88.f339c4eb.chunk.js": "/react/build/./static/js/88.f339c4eb.chunk.js",
"static/css/89.33abeff1.chunk.css": "/react/build/static/css/89.33abeff1.chunk.css",
"./static/js/88.f1814e4a.chunk.js": "/react/build/./static/js/88.f1814e4a.chunk.js",
"static/css/89.d126f3fc.chunk.css": "/react/build/static/css/89.d126f3fc.chunk.css",
"./static/js/89.7bfff321.chunk.js": "/react/build/./static/js/89.7bfff321.chunk.js",
"static/css/90.874f597c.chunk.css": "/react/build/static/css/90.874f597c.chunk.css",
"./static/js/90.c2ba8168.chunk.js": "/react/build/./static/js/90.c2ba8168.chunk.js",
"./static/js/90.907279d0.chunk.js": "/react/build/./static/js/90.907279d0.chunk.js",
"./static/js/91.3aca48d0.chunk.js": "/react/build/./static/js/91.3aca48d0.chunk.js",
"static/css/92.b5cef47f.chunk.css": "/react/build/static/css/92.b5cef47f.chunk.css",
"./static/js/92.4acfd5dc.chunk.js": "/react/build/./static/js/92.4acfd5dc.chunk.js",
"static/css/93.7aa996e6.chunk.css": "/react/build/static/css/93.7aa996e6.chunk.css",
"./static/js/93.3f13afe5.chunk.js": "/react/build/./static/js/93.3f13afe5.chunk.js",
"./static/js/93.ef620c4b.chunk.js": "/react/build/./static/js/93.ef620c4b.chunk.js",
"static/css/94.632d7855.chunk.css": "/react/build/static/css/94.632d7855.chunk.css",
"./static/js/94.c792f7b3.chunk.js": "/react/build/./static/js/94.c792f7b3.chunk.js",
"static/css/95.ea97577b.chunk.css": "/react/build/static/css/95.ea97577b.chunk.css",
@ -163,14 +163,14 @@
"./static/js/98.7f7f7055.chunk.js": "/react/build/./static/js/98.7f7f7055.chunk.js",
"static/css/99.56158b92.chunk.css": "/react/build/static/css/99.56158b92.chunk.css",
"./static/js/99.1ab93e2f.chunk.js": "/react/build/./static/js/99.1ab93e2f.chunk.js",
"static/css/100.53c7d49b.chunk.css": "/react/build/static/css/100.53c7d49b.chunk.css",
"static/css/100.eb89c16f.chunk.css": "/react/build/static/css/100.eb89c16f.chunk.css",
"./static/js/100.7704a7a9.chunk.js": "/react/build/./static/js/100.7704a7a9.chunk.js",
"static/css/101.59500253.chunk.css": "/react/build/static/css/101.59500253.chunk.css",
"./static/js/101.75ef8903.chunk.js": "/react/build/./static/js/101.75ef8903.chunk.js",
"./static/js/102.0cd64c19.chunk.js": "/react/build/./static/js/102.0cd64c19.chunk.js",
"./static/js/103.678d2f97.chunk.js": "/react/build/./static/js/103.678d2f97.chunk.js",
"static/css/104.8a2a0d50.chunk.css": "/react/build/static/css/104.8a2a0d50.chunk.css",
"./static/js/104.b0921c62.chunk.js": "/react/build/./static/js/104.b0921c62.chunk.js",
"./static/js/104.6f4138ff.chunk.js": "/react/build/./static/js/104.6f4138ff.chunk.js",
"static/css/105.78d24cb4.chunk.css": "/react/build/static/css/105.78d24cb4.chunk.css",
"./static/js/105.925c448f.chunk.js": "/react/build/./static/js/105.925c448f.chunk.js",
"./static/js/106.762db912.chunk.js": "/react/build/./static/js/106.762db912.chunk.js",
@ -198,7 +198,7 @@
"./static/js/119.56d65b61.chunk.js": "/react/build/./static/js/119.56d65b61.chunk.js",
"static/css/120.fd3fa2e9.chunk.css": "/react/build/static/css/120.fd3fa2e9.chunk.css",
"./static/js/120.aaeb2759.chunk.js": "/react/build/./static/js/120.aaeb2759.chunk.js",
"static/css/121.9d206204.chunk.css": "/react/build/static/css/121.9d206204.chunk.css",
"static/css/121.41b8aabd.chunk.css": "/react/build/static/css/121.41b8aabd.chunk.css",
"./static/js/121.fa118c89.chunk.js": "/react/build/./static/js/121.fa118c89.chunk.js",
"static/css/122.82ba8135.chunk.css": "/react/build/static/css/122.82ba8135.chunk.css",
"./static/js/122.77706ff8.chunk.js": "/react/build/./static/js/122.77706ff8.chunk.js",
@ -219,11 +219,11 @@
"./static/js/132.af2d6212.chunk.js": "/react/build/./static/js/132.af2d6212.chunk.js",
"static/css/133.45b01965.chunk.css": "/react/build/static/css/133.45b01965.chunk.css",
"./static/js/133.398a14b0.chunk.js": "/react/build/./static/js/133.398a14b0.chunk.js",
"./static/js/134.716dfc85.chunk.js": "/react/build/./static/js/134.716dfc85.chunk.js",
"./static/js/134.130280a5.chunk.js": "/react/build/./static/js/134.130280a5.chunk.js",
"./static/js/135.224d833c.chunk.js": "/react/build/./static/js/135.224d833c.chunk.js",
"static/css/136.9d206204.chunk.css": "/react/build/static/css/136.9d206204.chunk.css",
"static/css/136.41b8aabd.chunk.css": "/react/build/static/css/136.41b8aabd.chunk.css",
"./static/js/136.4bf47682.chunk.js": "/react/build/./static/js/136.4bf47682.chunk.js",
"static/css/137.9d206204.chunk.css": "/react/build/static/css/137.9d206204.chunk.css",
"static/css/137.41b8aabd.chunk.css": "/react/build/static/css/137.41b8aabd.chunk.css",
"./static/js/137.d38ab836.chunk.js": "/react/build/./static/js/137.d38ab836.chunk.js",
"static/css/138.cdd78914.chunk.css": "/react/build/static/css/138.cdd78914.chunk.css",
"./static/js/138.f988609b.chunk.js": "/react/build/./static/js/138.f988609b.chunk.js",
@ -239,14 +239,14 @@
"./static/js/146.f7f4065a.chunk.js": "/react/build/./static/js/146.f7f4065a.chunk.js",
"static/css/147.15253a67.chunk.css": "/react/build/static/css/147.15253a67.chunk.css",
"./static/js/147.d787fdc5.chunk.js": "/react/build/./static/js/147.d787fdc5.chunk.js",
"./static/js/148.8ec62071.chunk.js": "/react/build/./static/js/148.8ec62071.chunk.js",
"./static/js/149.16cf933d.chunk.js": "/react/build/./static/js/149.16cf933d.chunk.js",
"./static/js/148.39a19315.chunk.js": "/react/build/./static/js/148.39a19315.chunk.js",
"./static/js/149.595cf3a2.chunk.js": "/react/build/./static/js/149.595cf3a2.chunk.js",
"static/css/150.3edde0c7.chunk.css": "/react/build/static/css/150.3edde0c7.chunk.css",
"./static/js/150.73c055e9.chunk.js": "/react/build/./static/js/150.73c055e9.chunk.js",
"static/css/151.adba6539.chunk.css": "/react/build/static/css/151.adba6539.chunk.css",
"./static/js/151.6190651e.chunk.js": "/react/build/./static/js/151.6190651e.chunk.js",
"./static/js/152.9e740993.chunk.js": "/react/build/./static/js/152.9e740993.chunk.js",
"./static/js/153.e65828dc.chunk.js": "/react/build/./static/js/153.e65828dc.chunk.js",
"./static/js/153.a3cffbb6.chunk.js": "/react/build/./static/js/153.a3cffbb6.chunk.js",
"static/css/154.fd5c069f.chunk.css": "/react/build/static/css/154.fd5c069f.chunk.css",
"./static/js/154.86a55ec3.chunk.js": "/react/build/./static/js/154.86a55ec3.chunk.js",
"static/css/155.cbc5dafa.chunk.css": "/react/build/static/css/155.cbc5dafa.chunk.css",
@ -272,7 +272,7 @@
"./static/js/166.0c841f79.chunk.js": "/react/build/./static/js/166.0c841f79.chunk.js",
"static/css/167.afe8c942.chunk.css": "/react/build/static/css/167.afe8c942.chunk.css",
"./static/js/167.5b8f8f99.chunk.js": "/react/build/./static/js/167.5b8f8f99.chunk.js",
"static/css/168.9d206204.chunk.css": "/react/build/static/css/168.9d206204.chunk.css",
"static/css/168.41b8aabd.chunk.css": "/react/build/static/css/168.41b8aabd.chunk.css",
"./static/js/168.6928c614.chunk.js": "/react/build/./static/js/168.6928c614.chunk.js",
"./static/js/169.e0c130e0.chunk.js": "/react/build/./static/js/169.e0c130e0.chunk.js",
"./static/js/170.1b51ae43.chunk.js": "/react/build/./static/js/170.1b51ae43.chunk.js",
@ -337,20 +337,20 @@
"./static/js/229.dc1b13e7.chunk.js": "/react/build/./static/js/229.dc1b13e7.chunk.js",
"./static/js/230.aa0cce17.chunk.js": "/react/build/./static/js/230.aa0cce17.chunk.js",
"./static/js/231.b53914ca.chunk.js": "/react/build/./static/js/231.b53914ca.chunk.js",
"main.css": "/react/build/static/css/main.dea82c29.chunk.css",
"main.js": "/react/build/./static/js/main.462459e7.chunk.js",
"runtime~main.js": "/react/build/./static/js/runtime~main.d38d142a.js",
"main.css": "/react/build/static/css/main.5c83d4d2.chunk.css",
"main.js": "/react/build/./static/js/main.1ba9f377.chunk.js",
"runtime~main.js": "/react/build/./static/js/runtime~main.5e3e1838.js",
"./static/js/156.3a1c27e3.chunk.js.LICENSE.txt": "/react/build/./static/js/156.3a1c27e3.chunk.js.LICENSE.txt",
"./static/js/184.020dd8ad.chunk.js.LICENSE.txt": "/react/build/./static/js/184.020dd8ad.chunk.js.LICENSE.txt",
"./static/js/2.3d5eefb9.chunk.js.LICENSE.txt": "/react/build/./static/js/2.3d5eefb9.chunk.js.LICENSE.txt",
"./static/js/226.2bbe453b.chunk.js.LICENSE.txt": "/react/build/./static/js/226.2bbe453b.chunk.js.LICENSE.txt",
"./static/js/35.c6a1000c.chunk.js.LICENSE.txt": "/react/build/./static/js/35.c6a1000c.chunk.js.LICENSE.txt",
"./static/js/40.29c9e18e.chunk.js.LICENSE.txt": "/react/build/./static/js/40.29c9e18e.chunk.js.LICENSE.txt",
"./static/js/41.3373add4.chunk.js.LICENSE.txt": "/react/build/./static/js/41.3373add4.chunk.js.LICENSE.txt",
"./static/js/42.e886ac62.chunk.js.LICENSE.txt": "/react/build/./static/js/42.e886ac62.chunk.js.LICENSE.txt",
"./static/js/35.7591762b.chunk.js.LICENSE.txt": "/react/build/./static/js/35.7591762b.chunk.js.LICENSE.txt",
"./static/js/40.ea8a3949.chunk.js.LICENSE.txt": "/react/build/./static/js/40.ea8a3949.chunk.js.LICENSE.txt",
"./static/js/41.5df91ec1.chunk.js.LICENSE.txt": "/react/build/./static/js/41.5df91ec1.chunk.js.LICENSE.txt",
"./static/js/42.38965cff.chunk.js.LICENSE.txt": "/react/build/./static/js/42.38965cff.chunk.js.LICENSE.txt",
"./static/js/8.eccc3ccc.chunk.js.LICENSE.txt": "/react/build/./static/js/8.eccc3ccc.chunk.js.LICENSE.txt",
"./static/js/9.1b19f465.chunk.js.LICENSE.txt": "/react/build/./static/js/9.1b19f465.chunk.js.LICENSE.txt",
"./static/js/main.462459e7.chunk.js.LICENSE.txt": "/react/build/./static/js/main.462459e7.chunk.js.LICENSE.txt",
"./static/js/main.1ba9f377.chunk.js.LICENSE.txt": "/react/build/./static/js/main.1ba9f377.chunk.js.LICENSE.txt",
"css.worker.js": "/react/build/css.worker.js",
"editor.worker.js": "/react/build/editor.worker.js",
"html.worker.js": "/react/build/html.worker.js",
@ -437,8 +437,8 @@
"static/media/fun3.png": "/react/build/static/media/fun3.75c280e6.png",
"static/media/fun4.png": "/react/build/static/media/fun4.f499794e.png",
"static/media/fun5.png": "/react/build/static/media/fun5.96b44942.png",
"static/media/gitee1.svg": "/react/build/static/media/gitee1.0c13ef7b.svg",
"static/media/github2.svg": "/react/build/static/media/github2.7d5cc0ba.svg",
"static/media/gitee1.svg": "/react/build/static/media/gitee1.279a922b.svg",
"static/media/github2.svg": "/react/build/static/media/github2.95ea181b.svg",
"static/media/gitlink1.png": "/react/build/static/media/gitlink1.4bf0ed96.png",
"static/media/gitlink2.png": "/react/build/static/media/gitlink2.0ec0ec22.png",
"static/media/head.png": "/react/build/static/media/head.52aa3fc8.png",
@ -446,7 +446,7 @@
"static/media/help_bg.png": "/react/build/static/media/help_bg.d2bb4c18.png",
"static/media/huake.png": "/react/build/static/media/huake.63b6a34d.png",
"static/media/huawei.png": "/react/build/static/media/huawei.73ec7c22.png",
"static/media/Teaching.scss": "/react/build/static/media/image22.d4d77f6c.svg",
"static/media/Teaching.scss": "/react/build/static/media/image22.6ff2b063.svg",
"static/media/img1.png": "/react/build/static/media/img1.fc155528.png",
"static/media/img10.png": "/react/build/static/media/img10.64149a3d.png",
"static/media/img15.png": "/react/build/static/media/img15.87a3556c.png",
@ -474,7 +474,7 @@
"static/media/mulan.png": "/react/build/static/media/mulan.690d2289.png",
"static/media/nodata.png": "/react/build/static/media/nodata.298b1c41.png",
"static/media/TPMIndex.css": "/react/build/static/media/nps2.d5d0b666.png",
"static/media/phone.svg": "/react/build/static/media/phone.8973db9e.svg",
"static/media/phone.svg": "/react/build/static/media/phone.14961064.svg",
"static/media/qqChat.png": "/react/build/static/media/qqChat.9e56cc22.png",
"static/media/resultBanner.png": "/react/build/static/media/resultBanner.152068bc.png",
"static/media/resultBanner2.png": "/react/build/static/media/resultBanner2.c3095c5d.png",

File diff suppressed because it is too large Load Diff

View File

@ -1,239 +1,239 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.lang({
imagedirectupload:'本地图片',
more: '切换到更多功能',
less: '切换到简单功能',
source : 'HTML代码',
preview : '预览',
undo : '后退(Ctrl+Z)',
redo : '前进(Ctrl+Y)',
cut : '剪切(Ctrl+X)',
copy : '复制(Ctrl+C)',
paste : '粘贴(Ctrl+V)',
plainpaste : '粘贴为无格式文本',
wordpaste : '从Word粘贴',
selectall : '全选(Ctrl+A)',
justifyleft : '左对齐',
justifycenter : '居中',
justifyright : '右对齐',
justifyfull : '两端对齐',
insertorderedlist : '编号',
insertunorderedlist : '项目符号',
indent : '增加缩进',
outdent : '减少缩进',
subscript : '下标',
superscript : '上标',
formatblock : '段落',
fontname : '字体',
fontsize : '文字大小',
forecolor : '文字颜色',
hilitecolor : '文字背景',
bold : '粗体(Ctrl+B)',
italic : '斜体(Ctrl+I)',
underline : '下划线(Ctrl+U)',
strikethrough : '删除线',
removeformat : '删除格式',
image : '图片',
multiimage : '批量图片上传',
flash : 'Flash',
media : '视音频',
table : '表格',
tablecell : '单元格',
hr : '插入横线',
emoticons : '插入表情',
link : '超级链接',
unlink : '取消超级链接',
fullscreen : '全屏显示',
about : '关于',
print : '打印(Ctrl+P)',
filemanager : '文件空间',
code : '插入程序代码',
map : 'Google地图',
baidumap : '百度地图',
lineheight : '行距',
clearhtml : '清理HTML代码',
pagebreak : '插入分页符',
quickformat : '一键排版',
insertfile : '插入文件',
template : '插入模板',
anchor : '锚点',
yes : '确定',
no : '取消',
close : '关闭',
editImage : '图片属性',
deleteImage : '删除图片',
editFlash : 'Flash属性',
deleteFlash : '删除Flash',
editMedia : '视音频属性',
deleteMedia : '删除视音频',
editLink : '超级链接属性',
deleteLink : '取消超级链接',
editAnchor : '锚点属性',
deleteAnchor : '删除锚点',
tableprop : '表格属性',
tablecellprop : '单元格属性',
tableinsert : '插入表格',
tabledelete : '删除表格',
tablecolinsertleft : '左侧插入列',
tablecolinsertright : '右侧插入列',
tablerowinsertabove : '上方插入行',
tablerowinsertbelow : '下方插入行',
tablerowmerge : '向下合并单元格',
tablecolmerge : '向右合并单元格',
tablerowsplit : '拆分行',
tablecolsplit : '拆分列',
tablecoldelete : '删除列',
tablerowdelete : '删除行',
noColor : '无颜色',
pleaseSelectFile : '请选择文件。',
invalidImg : "请输入有效的URL地址。\n只允许jpg,gif,bmp,png格式。",
invalidMedia : "请输入有效的URL地址。\n只允许swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。",
invalidWidth : "宽度必须为数字。",
invalidHeight : "高度必须为数字。",
invalidBorder : "边框必须为数字。",
invalidUrl : "请输入有效的URL地址。",
invalidRows : '行数为必选项只允许输入大于0的数字。',
invalidCols : '列数为必选项只允许输入大于0的数字。',
invalidPadding : '边距必须为数字。',
invalidSpacing : '间距必须为数字。',
invalidJson : '服务器发生故障。',
uploadSuccess : '上传成功。',
cutError : '您的浏览器安全设置不允许使用剪切操作,请使用快捷键(Ctrl+X)来完成。',
copyError : '您的浏览器安全设置不允许使用复制操作,请使用快捷键(Ctrl+C)来完成。',
pasteError : '您的浏览器安全设置不允许使用粘贴操作,请使用快捷键(Ctrl+V)来完成。',
ajaxLoading : '加载中,请稍候 ...',
uploadLoading : '上传中,请稍候 ...',
uploadError : '上传错误',
'plainpaste.comment' : '请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。',
'wordpaste.comment' : '请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。',
'code.pleaseInput' : '请输入程序代码。',
'link.url' : 'URL',
'link.linkType' : '打开类型',
'link.newWindow' : '新窗口',
'link.selfWindow' : '当前窗口',
'flash.url' : 'URL',
'flash.width' : '宽度',
'flash.height' : '高度',
'flash.upload' : '上传',
'flash.viewServer' : '文件空间',
'media.url' : 'URL',
'media.width' : '宽度',
'media.height' : '高度',
'media.autostart' : '自动播放',
'media.upload' : '上传',
'media.viewServer' : '文件空间',
'image.remoteImage' : '网络图片',
'image.localImage' : '本地上传',
'image.remoteUrl' : '图片地址',
'image.localUrl' : '上传文件',
'image.size' : '图片大小',
'image.width' : '宽',
'image.height' : '高',
'image.resetSize' : '重置大小',
'image.align' : '对齐方式',
'image.defaultAlign' : '默认方式',
'image.leftAlign' : '左对齐',
'image.rightAlign' : '右对齐',
'image.imgTitle' : '图片说明',
'image.upload' : '浏览...',
'image.viewServer' : '图片空间',
'multiimage.uploadDesc' : '允许用户同时上传<%=uploadLimit%>张图片,单张图片容量不超过<%=sizeLimit%>',
'multiimage.startUpload' : '开始上传',
'multiimage.clearAll' : '全部清空',
'multiimage.insertAll' : '全部插入',
'multiimage.queueLimitExceeded' : '文件数量超过限制。',
'multiimage.fileExceedsSizeLimit' : '文件大小超过限制。',
'multiimage.zeroByteFile' : '无法上传空文件。',
'multiimage.invalidFiletype' : '文件类型不正确。',
'multiimage.unknownError' : '发生异常,无法上传。',
'multiimage.pending' : '等待上传',
'multiimage.uploadError' : '上传失败',
'filemanager.emptyFolder' : '空文件夹',
'filemanager.moveup' : '移到上一级文件夹',
'filemanager.viewType' : '显示方式:',
'filemanager.viewImage' : '缩略图',
'filemanager.listImage' : '详细信息',
'filemanager.orderType' : '排序方式:',
'filemanager.fileName' : '名称',
'filemanager.fileSize' : '大小',
'filemanager.fileType' : '类型',
'insertfile.url' : 'URL',
'insertfile.title' : '文件说明',
'insertfile.upload' : '上传',
'insertfile.viewServer' : '文件空间',
'table.cells' : '单元格数',
'table.rows' : '行数',
'table.cols' : '列数',
'table.size' : '大小',
'table.width' : '宽度',
'table.height' : '高度',
'table.percent' : '%',
'table.px' : 'px',
'table.space' : '边距间距',
'table.padding' : '边距',
'table.spacing' : '间距',
'table.align' : '对齐方式',
'table.textAlign' : '水平对齐',
'table.verticalAlign' : '垂直对齐',
'table.alignDefault' : '默认',
'table.alignLeft' : '左对齐',
'table.alignCenter' : '居中',
'table.alignRight' : '右对齐',
'table.alignTop' : '顶部',
'table.alignMiddle' : '中部',
'table.alignBottom' : '底部',
'table.alignBaseline' : '基线',
'table.border' : '边框',
'table.borderWidth' : '边框',
'table.borderColor' : '颜色',
'table.backgroundColor' : '背景颜色',
'map.address' : '地址: ',
'map.search' : '搜索',
'baidumap.address' : '地址: ',
'baidumap.search' : '搜索',
'baidumap.insertDynamicMap' : '插入动态地图',
'anchor.name' : '锚点名称',
'formatblock.formatBlock' : {
h1 : '标题 1',
h2 : '标题 2',
h3 : '标题 3',
h4 : '标题 4',
p : '正 文'
},
'fontname.fontName' : {
'SimSun' : '宋体',
'NSimSun' : '新宋体',
'FangSong_GB2312' : '仿宋_GB2312',
'KaiTi_GB2312' : '楷体_GB2312',
'SimHei' : '黑体',
'Microsoft YaHei' : '微软雅黑',
'Arial' : 'Arial',
'Arial Black' : 'Arial Black',
'Times New Roman' : 'Times New Roman',
'Courier New' : 'Courier New',
'Tahoma' : 'Tahoma',
'Verdana' : 'Verdana'
},
'lineheight.lineHeight' : [
{'1' : '单倍行距'},
{'1.5' : '1.5倍行距'},
{'2' : '2倍行距'},
{'2.5' : '2.5倍行距'},
{'3' : '3倍行距'}
],
'template.selectTemplate' : '可选模板',
'template.replaceContent' : '替换当前内容',
'template.fileList' : {
'1.html' : '图片和文字',
'2.html' : '表格',
'3.html' : '项目编号'
}
}, 'zh_CN');
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.lang({
imagedirectupload:'本地图片',
more: '切换到更多功能',
less: '切换到简单功能',
source : 'HTML代码',
preview : '预览',
undo : '后退(Ctrl+Z)',
redo : '前进(Ctrl+Y)',
cut : '剪切(Ctrl+X)',
copy : '复制(Ctrl+C)',
paste : '粘贴(Ctrl+V)',
plainpaste : '粘贴为无格式文本',
wordpaste : '从Word粘贴',
selectall : '全选(Ctrl+A)',
justifyleft : '左对齐',
justifycenter : '居中',
justifyright : '右对齐',
justifyfull : '两端对齐',
insertorderedlist : '编号',
insertunorderedlist : '项目符号',
indent : '增加缩进',
outdent : '减少缩进',
subscript : '下标',
superscript : '上标',
formatblock : '段落',
fontname : '字体',
fontsize : '文字大小',
forecolor : '文字颜色',
hilitecolor : '文字背景',
bold : '粗体(Ctrl+B)',
italic : '斜体(Ctrl+I)',
underline : '下划线(Ctrl+U)',
strikethrough : '删除线',
removeformat : '删除格式',
image : '图片',
multiimage : '批量图片上传',
flash : 'Flash',
media : '视音频',
table : '表格',
tablecell : '单元格',
hr : '插入横线',
emoticons : '插入表情',
link : '超级链接',
unlink : '取消超级链接',
fullscreen : '全屏显示',
about : '关于',
print : '打印(Ctrl+P)',
filemanager : '文件空间',
code : '插入程序代码',
map : 'Google地图',
baidumap : '百度地图',
lineheight : '行距',
clearhtml : '清理HTML代码',
pagebreak : '插入分页符',
quickformat : '一键排版',
insertfile : '插入文件',
template : '插入模板',
anchor : '锚点',
yes : '确定',
no : '取消',
close : '关闭',
editImage : '图片属性',
deleteImage : '删除图片',
editFlash : 'Flash属性',
deleteFlash : '删除Flash',
editMedia : '视音频属性',
deleteMedia : '删除视音频',
editLink : '超级链接属性',
deleteLink : '取消超级链接',
editAnchor : '锚点属性',
deleteAnchor : '删除锚点',
tableprop : '表格属性',
tablecellprop : '单元格属性',
tableinsert : '插入表格',
tabledelete : '删除表格',
tablecolinsertleft : '左侧插入列',
tablecolinsertright : '右侧插入列',
tablerowinsertabove : '上方插入行',
tablerowinsertbelow : '下方插入行',
tablerowmerge : '向下合并单元格',
tablecolmerge : '向右合并单元格',
tablerowsplit : '拆分行',
tablecolsplit : '拆分列',
tablecoldelete : '删除列',
tablerowdelete : '删除行',
noColor : '无颜色',
pleaseSelectFile : '请选择文件。',
invalidImg : "请输入有效的URL地址。\n只允许jpg,gif,bmp,png格式。",
invalidMedia : "请输入有效的URL地址。\n只允许swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。",
invalidWidth : "宽度必须为数字。",
invalidHeight : "高度必须为数字。",
invalidBorder : "边框必须为数字。",
invalidUrl : "请输入有效的URL地址。",
invalidRows : '行数为必选项只允许输入大于0的数字。',
invalidCols : '列数为必选项只允许输入大于0的数字。',
invalidPadding : '边距必须为数字。',
invalidSpacing : '间距必须为数字。',
invalidJson : '服务器发生故障。',
uploadSuccess : '上传成功。',
cutError : '您的浏览器安全设置不允许使用剪切操作,请使用快捷键(Ctrl+X)来完成。',
copyError : '您的浏览器安全设置不允许使用复制操作,请使用快捷键(Ctrl+C)来完成。',
pasteError : '您的浏览器安全设置不允许使用粘贴操作,请使用快捷键(Ctrl+V)来完成。',
ajaxLoading : '加载中,请稍候 ...',
uploadLoading : '上传中,请稍候 ...',
uploadError : '上传错误',
'plainpaste.comment' : '请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。',
'wordpaste.comment' : '请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。',
'code.pleaseInput' : '请输入程序代码。',
'link.url' : 'URL',
'link.linkType' : '打开类型',
'link.newWindow' : '新窗口',
'link.selfWindow' : '当前窗口',
'flash.url' : 'URL',
'flash.width' : '宽度',
'flash.height' : '高度',
'flash.upload' : '上传',
'flash.viewServer' : '文件空间',
'media.url' : 'URL',
'media.width' : '宽度',
'media.height' : '高度',
'media.autostart' : '自动播放',
'media.upload' : '上传',
'media.viewServer' : '文件空间',
'image.remoteImage' : '网络图片',
'image.localImage' : '本地上传',
'image.remoteUrl' : '图片地址',
'image.localUrl' : '上传文件',
'image.size' : '图片大小',
'image.width' : '宽',
'image.height' : '高',
'image.resetSize' : '重置大小',
'image.align' : '对齐方式',
'image.defaultAlign' : '默认方式',
'image.leftAlign' : '左对齐',
'image.rightAlign' : '右对齐',
'image.imgTitle' : '图片说明',
'image.upload' : '浏览...',
'image.viewServer' : '图片空间',
'multiimage.uploadDesc' : '允许用户同时上传<%=uploadLimit%>张图片,单张图片容量不超过<%=sizeLimit%>',
'multiimage.startUpload' : '开始上传',
'multiimage.clearAll' : '全部清空',
'multiimage.insertAll' : '全部插入',
'multiimage.queueLimitExceeded' : '文件数量超过限制。',
'multiimage.fileExceedsSizeLimit' : '文件大小超过限制。',
'multiimage.zeroByteFile' : '无法上传空文件。',
'multiimage.invalidFiletype' : '文件类型不正确。',
'multiimage.unknownError' : '发生异常,无法上传。',
'multiimage.pending' : '等待上传',
'multiimage.uploadError' : '上传失败',
'filemanager.emptyFolder' : '空文件夹',
'filemanager.moveup' : '移到上一级文件夹',
'filemanager.viewType' : '显示方式:',
'filemanager.viewImage' : '缩略图',
'filemanager.listImage' : '详细信息',
'filemanager.orderType' : '排序方式:',
'filemanager.fileName' : '名称',
'filemanager.fileSize' : '大小',
'filemanager.fileType' : '类型',
'insertfile.url' : 'URL',
'insertfile.title' : '文件说明',
'insertfile.upload' : '上传',
'insertfile.viewServer' : '文件空间',
'table.cells' : '单元格数',
'table.rows' : '行数',
'table.cols' : '列数',
'table.size' : '大小',
'table.width' : '宽度',
'table.height' : '高度',
'table.percent' : '%',
'table.px' : 'px',
'table.space' : '边距间距',
'table.padding' : '边距',
'table.spacing' : '间距',
'table.align' : '对齐方式',
'table.textAlign' : '水平对齐',
'table.verticalAlign' : '垂直对齐',
'table.alignDefault' : '默认',
'table.alignLeft' : '左对齐',
'table.alignCenter' : '居中',
'table.alignRight' : '右对齐',
'table.alignTop' : '顶部',
'table.alignMiddle' : '中部',
'table.alignBottom' : '底部',
'table.alignBaseline' : '基线',
'table.border' : '边框',
'table.borderWidth' : '边框',
'table.borderColor' : '颜色',
'table.backgroundColor' : '背景颜色',
'map.address' : '地址: ',
'map.search' : '搜索',
'baidumap.address' : '地址: ',
'baidumap.search' : '搜索',
'baidumap.insertDynamicMap' : '插入动态地图',
'anchor.name' : '锚点名称',
'formatblock.formatBlock' : {
h1 : '标题 1',
h2 : '标题 2',
h3 : '标题 3',
h4 : '标题 4',
p : '正 文'
},
'fontname.fontName' : {
'SimSun' : '宋体',
'NSimSun' : '新宋体',
'FangSong_GB2312' : '仿宋_GB2312',
'KaiTi_GB2312' : '楷体_GB2312',
'SimHei' : '黑体',
'Microsoft YaHei' : '微软雅黑',
'Arial' : 'Arial',
'Arial Black' : 'Arial Black',
'Times New Roman' : 'Times New Roman',
'Courier New' : 'Courier New',
'Tahoma' : 'Tahoma',
'Verdana' : 'Verdana'
},
'lineheight.lineHeight' : [
{'1' : '单倍行距'},
{'1.5' : '1.5倍行距'},
{'2' : '2倍行距'},
{'2.5' : '2.5倍行距'},
{'3' : '3倍行距'}
],
'template.selectTemplate' : '可选模板',
'template.replaceContent' : '替换当前内容',
'template.fileList' : {
'1.html' : '图片和文字',
'2.html' : '表格',
'3.html' : '项目编号'
}
}, 'zh_CN');

View File

@ -1,71 +1,71 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('autoheight', function(K) {
var self = this;
//self.autoHeightMode = true;
if (!self.autoHeightMode) {
return;
}
var minHeight;
function hideScroll() {
var edit = self.edit;
var body = edit.doc.body;
edit.iframe[0].scroll = 'no';
body.style.overflowY = 'hidden';
}
function resetHeight() {
var edit = self.edit;
var body = edit.doc.body;
edit.iframe.height(minHeight);
//最高418 超过用滚动条
self.resize(null, Math.max(
(K.IE ? body.scrollHeight : body.offsetHeight) > 385 ? 385+33 : (K.IE ? body.scrollHeight : body.offsetHeight)
+ 33, minHeight));
if( self.height == "418px" ){
edit.iframe[0].scroll = 'yes';
body.style.overflowY = 'auto';
}
else{
hideScroll();
}
}
function init() {
minHeight = K.removeUnit(self.height);
self.edit.afterChange(resetHeight);
hideScroll();
var edit = self.edit;
var body = edit.doc.body;
edit.iframe.height(minHeight);
self.resize(null, Math.max(
((K.IE ? body.scrollHeight : body.offsetHeight) > 250 ? 250 : (K.IE ? body.scrollHeight : body.offsetHeight)) //限制初始化太高的情况
+ 33, minHeight));
}
if (self.isCreated) {
init();
} else {
self.afterCreate(init);
}
});
/*
* 如何实现真正的自动高度
* 修改编辑器高度之后再次获取body内容高度时最小值只会是当前iframe的设置高度这样就导致高度只增不减
* 所以每次获取body内容高度之前先将iframe的高度重置为最小高度这样就能获取body的实际高度
* 由此就实现了真正的自动高度
* 测试chromefirefoxIE9IE8
* */
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('autoheight', function(K) {
var self = this;
//self.autoHeightMode = true;
if (!self.autoHeightMode) {
return;
}
var minHeight;
function hideScroll() {
var edit = self.edit;
var body = edit.doc.body;
edit.iframe[0].scroll = 'no';
body.style.overflowY = 'hidden';
}
function resetHeight() {
var edit = self.edit;
var body = edit.doc.body;
edit.iframe.height(minHeight);
//最高418 超过用滚动条
self.resize(null, Math.max(
(K.IE ? body.scrollHeight : body.offsetHeight) > 385 ? 385+33 : (K.IE ? body.scrollHeight : body.offsetHeight)
+ 33, minHeight));
if( self.height == "418px" ){
edit.iframe[0].scroll = 'yes';
body.style.overflowY = 'auto';
}
else{
hideScroll();
}
}
function init() {
minHeight = K.removeUnit(self.height);
self.edit.afterChange(resetHeight);
hideScroll();
var edit = self.edit;
var body = edit.doc.body;
edit.iframe.height(minHeight);
self.resize(null, Math.max(
((K.IE ? body.scrollHeight : body.offsetHeight) > 250 ? 250 : (K.IE ? body.scrollHeight : body.offsetHeight)) //限制初始化太高的情况
+ 33, minHeight));
}
if (self.isCreated) {
init();
} else {
self.afterCreate(init);
}
});
/*
* 如何实现真正的自动高度
* 修改编辑器高度之后再次获取body内容高度时最小值只会是当前iframe的设置高度这样就导致高度只增不减
* 所以每次获取body内容高度之前先将iframe的高度重置为最小高度这样就能获取body的实际高度
* 由此就实现了真正的自动高度
* 测试chromefirefoxIE9IE8
* */

View File

@ -1,56 +1,56 @@
.ke-content {
font-family: "微软雅黑","宋体";
}
.ke-content pre {
font-size:9pt;
font-family:Courier New,Arial;
border:1px solid #ddd;
border-left:5px solid #6CE26C;
background:#f6f6f6;
padding:5px;
}
.ke-content code {
margin: 0 2px;
padding: 0 5px;
white-space: nowrap;
border: 1px solid #DDD;
background-color: #F6F6F6;
border-radius: 3px;
}
.ke-content pre>code {
margin: 0;
padding: 0;
white-space: pre;
border: none;
background: transparent;
}
.ke-content pre code {
background-color: transparent;
border: none;
}
.ke-content p {
/*margin: 0 0 15px 0;*/
/*margin-bottom:15pt;*/
line-height:1.5;
/*letter-spacing: 1px;*/
}
.ke-content div.ref {border:1px solid #ddd;margin:0 0 10px 0;padding:2px;font-size:9pt;background:#ffe;}
.ke-content div.ref h4 {margin:0;padding:1px 3px;background:#CC9966;color:#fff;font-size:9pt;font-weight:normal;}
.ke-content div.ref .ref_body {margin:0;padding:2px;line-height:20px;color:#666;font-size:9pt;}
.ke-content blockquote{background: none;border: none;padding: 0px;margin: 0 0 0 40px;}
span.at {color:#269ac9;}
span.at a{color:#269ac9;text-decoration: none;}
/*yk*/
.ke-content ol li{list-style-type: decimal;}
.ke-content ul li{list-style-type: disc;}
.ke-content ol,.ke-content ul,.ke-content h1,.ke-content h2,.ke-content h3,.ke-content h4{margin-top:0;margin-bottom: 0;}
.ke-content a{color: #136ec2;}
.ke-content a:link,.ke-content a:visited{text-decoration:none;}
.ke-content {
font-family: "微软雅黑","宋体";
}
.ke-content pre {
font-size:9pt;
font-family:Courier New,Arial;
border:1px solid #ddd;
border-left:5px solid #6CE26C;
background:#f6f6f6;
padding:5px;
}
.ke-content code {
margin: 0 2px;
padding: 0 5px;
white-space: nowrap;
border: 1px solid #DDD;
background-color: #F6F6F6;
border-radius: 3px;
}
.ke-content pre>code {
margin: 0;
padding: 0;
white-space: pre;
border: none;
background: transparent;
}
.ke-content pre code {
background-color: transparent;
border: none;
}
.ke-content p {
/*margin: 0 0 15px 0;*/
/*margin-bottom:15pt;*/
line-height:1.5;
/*letter-spacing: 1px;*/
}
.ke-content div.ref {border:1px solid #ddd;margin:0 0 10px 0;padding:2px;font-size:9pt;background:#ffe;}
.ke-content div.ref h4 {margin:0;padding:1px 3px;background:#CC9966;color:#fff;font-size:9pt;font-weight:normal;}
.ke-content div.ref .ref_body {margin:0;padding:2px;line-height:20px;color:#666;font-size:9pt;}
.ke-content blockquote{background: none;border: none;padding: 0px;margin: 0 0 0 40px;}
span.at {color:#269ac9;}
span.at a{color:#269ac9;text-decoration: none;}
/*yk*/
.ke-content ol li{list-style-type: decimal;}
.ke-content ul li{list-style-type: disc;}
.ke-content ol,.ke-content ul,.ke-content h1,.ke-content h2,.ke-content h3,.ke-content h4{margin-top:0;margin-bottom: 0;}
.ke-content a{color: #136ec2;}
.ke-content a:link,.ke-content a:visited{text-decoration:none;}

View File

@ -1,361 +1,361 @@
// Generated by CoffeeScript 1.9.0
/*
paste.js is an interface to read data ( text / image ) from clipboard in different browsers. It also contains several hacks.
https://github.com/layerssss/paste.js
*/
(function() {
var $, Paste, createHiddenEditable, dataURLtoBlob;
$ = window.jQuery;
$.paste = function(pasteContainer) {
var pm;
if (typeof console !== "undefined" && console !== null) {
console.log("DEPRECATED: This method is deprecated. Please use $.fn.pastableNonInputable() instead.");
}
pm = Paste.mountNonInputable(pasteContainer);
return pm._container;
};
$.fn.pastableNonInputable = function() {
var el, _i, _len;
for (_i = 0, _len = this.length; _i < _len; _i++) {
el = this[_i];
Paste.mountNonInputable(el);
}
return this;
};
$.fn.pastableTextarea = function() {
var el, _i, _len;
for (_i = 0, _len = this.length; _i < _len; _i++) {
el = this[_i];
Paste.mountTextarea(el);
}
return this;
};
$.fn.pastableContenteditable = function() {
var el, _i, _len;
for (_i = 0, _len = this.length; _i < _len; _i++) {
el = this[_i];
Paste.mountContenteditable(el);
}
return this;
};
dataURLtoBlob = function(dataURL, sliceSize) {
var b64Data, byteArray, byteArrays, byteCharacters, byteNumbers, contentType, i, m, offset, slice, _ref;
if (sliceSize == null) {
sliceSize = 512;
}
if (!(m = dataURL.match(/^data\:([^\;]+)\;base64\,(.+)$/))) {
return null;
}
_ref = m, m = _ref[0], contentType = _ref[1], b64Data = _ref[2];
byteCharacters = atob(b64Data);
byteArrays = [];
offset = 0;
while (offset < byteCharacters.length) {
slice = byteCharacters.slice(offset, offset + sliceSize);
byteNumbers = new Array(slice.length);
i = 0;
while (i < slice.length) {
byteNumbers[i] = slice.charCodeAt(i);
i++;
}
byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
offset += sliceSize;
}
return new Blob(byteArrays, {
type: contentType
});
};
createHiddenEditable = function() {
return $(document.createElement('div')).attr('contenteditable', true).css({
width: 1,
height: 1,
position: 'fixed',
left: -100,
overflow: 'hidden'
});
};
Paste = (function() {
Paste.prototype._target = null;
Paste.prototype._container = null;
Paste.mountNonInputable = function(nonInputable) {
var paste;
paste = new Paste(createHiddenEditable().appendTo(nonInputable), nonInputable);
$(nonInputable).on('click', (function(_this) {
return function() {
return paste._container.focus();
};
})(this));
paste._container.on('focus', (function(_this) {
return function() {
return $(nonInputable).addClass('pastable-focus');
};
})(this));
return paste._container.on('blur', (function(_this) {
return function() {
return $(nonInputable).removeClass('pastable-focus');
};
})(this));
};
Paste.mountTextarea = function(textarea) {
var ctlDown, paste;
if (-1 !== navigator.userAgent.toLowerCase().indexOf('chrome')) {
return this.mountContenteditable(textarea);
}
paste = new Paste(createHiddenEditable().insertBefore(textarea), textarea);
ctlDown = false;
$(textarea).on('keyup', function(ev) {
var _ref;
if ((_ref = ev.keyCode) === 17 || _ref === 224) {
return ctlDown = false;
}
});
$(textarea).on('keydown', function(ev) {
var _ref;
if ((_ref = ev.keyCode) === 17 || _ref === 224) {
ctlDown = true;
}
if (ctlDown && ev.keyCode === 86) {
return paste._container.focus();
}
});
$(paste._target).on('pasteImage', (function(_this) {
return function() {
return $(textarea).focus();
};
})(this));
$(paste._target).on('pasteText', (function(_this) {
return function() {
return $(textarea).focus();
};
})(this));
$(textarea).on('focus', (function(_this) {
return function() {
return $(textarea).addClass('pastable-focus');
};
})(this));
return $(textarea).on('blur', (function(_this) {
return function() {
return $(textarea).removeClass('pastable-focus');
};
})(this));
};
Paste.mountContenteditable = function(contenteditable) {
var paste;
paste = new Paste(contenteditable, contenteditable);
$(contenteditable).on('focus', (function(_this) {
return function() {
return $(contenteditable).addClass('pastable-focus');
};
})(this));
return $(contenteditable).on('blur', (function(_this) {
return function() {
return $(contenteditable).removeClass('pastable-focus');
};
})(this));
};
function Paste(_at__container, _at__target) {
this._container = _at__container;
this._target = _at__target;
this._container = $(this._container);
this._target = $(this._target).addClass('pastable');
this._container.on('paste', (function(_this) {
return function(ev) {
var clipboardData, file, item, reader, text, _i, _j, _len, _len1, _ref, _ref1, _ref2, _ref3, _results;
if (((_ref = ev.originalEvent) != null ? _ref.clipboardData : void 0) != null) {
clipboardData = ev.originalEvent.clipboardData;
if (clipboardData.items) {
_ref1 = clipboardData.items;
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
item = _ref1[_i];
if (item.type.match(/^image\//)) {
reader = new FileReader();
reader.onload = function(event) {
return _this._handleImage(event.target.result);
};
reader.readAsDataURL(item.getAsFile());
}
if (item.type === 'text/plain') {
item.getAsString(function(string) {
return _this._target.trigger('pasteText', {
text: string
});
});
}
}
} else {
if (-1 !== Array.prototype.indexOf.call(clipboardData.types, 'text/plain')) {
text = clipboardData.getData('Text');
_this._target.trigger('pasteText', {
text: text
});
}
_this._checkImagesInContainer(function(src) {
return _this._handleImage(src);
});
}
}
if (clipboardData = window.clipboardData) {
if ((_ref2 = (text = clipboardData.getData('Text'))) != null ? _ref2.length : void 0) {
return _this._target.trigger('pasteText', {
text: text
});
} else {
_ref3 = clipboardData.files;
_results = [];
for (_j = 0, _len1 = _ref3.length; _j < _len1; _j++) {
file = _ref3[_j];
_this._handleImage(URL.createObjectURL(file));
_results.push(_this._checkImagesInContainer(function() {}));
}
return _results;
}
}
};
})(this));
}
Paste.prototype._handleImage = function(src) {
var loader;
loader = new Image();
loader.onload = (function(_this) {
return function() {
var blob, canvas, ctx, dataURL;
canvas = document.createElement('canvas');
canvas.width = loader.width;
canvas.height = loader.height;
ctx = canvas.getContext('2d');
ctx.drawImage(loader, 0, 0, canvas.width, canvas.height);
dataURL = null;
try {
dataURL = canvas.toDataURL('image/png');
blob = dataURLtoBlob(dataURL);
} catch (_error) {}
if (dataURL) {
return _this._target.trigger('pasteImage', {
blob: blob,
dataURL: dataURL,
width: loader.width,
height: loader.height
});
}
};
})(this);
return loader.src = src;
};
Paste.prototype._checkImagesInContainer = function(cb) {
var img, timespan, _i, _len, _ref;
timespan = Math.floor(1000 * Math.random());
_ref = this._container.find('img');
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
img = _ref[_i];
img["_paste_marked_" + timespan] = true;
}
return setTimeout((function(_this) {
return function() {
var _j, _len1, _ref1, _results;
_ref1 = _this._container.find('img');
_results = [];
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
img = _ref1[_j];
if (!img["_paste_marked_" + timespan]) {
cb(img.src);
}
//firefox问题处理因为采用了 pastableContenteditable 模式,故只需要删除默认的粘贴
if ($(img).attr('src').startsWith('data:image/')) {
_results.push($(img).remove());
};
}
return _results;
};
})(this), 1);
};
return Paste;
})();
}).call(this);
KindEditor.plugin('paste', function(K) {
var editor = this,
name = 'paste';
if(editor.edit == undefined || editor.edit.iframe == undefined){
return;
}
var contentWindow = editor.edit.iframe[0].contentWindow;
//var contentWindow = editor.iframeDoc;
//var contentWindow = document.getElementsByTagName('iframe')[0].contentWindow;
var nodeBody = contentWindow.document.getElementsByTagName('body')[0];
console.log(nodeBody);
$(nodeBody).pastableContenteditable();
dataURItoBlob = function(dataURI) {
// convert base64/URLEncoded data component to raw binary data held in a string
var byteString;
if (dataURI.split(',')[0].indexOf('base64') >= 0)
byteString = atob(dataURI.split(',')[1]);
else
byteString = unescape(dataURI.split(',')[1]);
// separate out the mime component
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
// write the bytes of the string to a typed array
var ia = new Uint8Array(byteString.length);
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
return new Blob([ia], {type:mimeString});
};
$(nodeBody).on('pasteImage', function(ev, data) {
console.log('pasteImage');
console.log("dataURL: " + data.dataURL);
console.log("width: " + data.width);
console.log("height: " + data.height);
var blob = dataURItoBlob(data.dataURL);
if (data.blob !== null) {
var data = new FormData();
// data.append("imgFile",blob, "imageFilename.png");
data.append("file",blob, "imageFilename.png");
console.log(data);
$.ajax({
url: '/kindeditor/upload?dir=image',
url: '/api/attachments.json',
contentType: false,
type: 'POST',
data: data,
processData: false,
success: function(data) {
console.log(data);
// editor.exec('insertimage', JSON.parse(data).url);
// /api/attachments/227362
editor.exec('insertimage', '/api/attachments/' + data.id);
}
});
}
});
return;
});
// Generated by CoffeeScript 1.9.0
/*
paste.js is an interface to read data ( text / image ) from clipboard in different browsers. It also contains several hacks.
https://github.com/layerssss/paste.js
*/
(function() {
var $, Paste, createHiddenEditable, dataURLtoBlob;
$ = window.jQuery;
$.paste = function(pasteContainer) {
var pm;
if (typeof console !== "undefined" && console !== null) {
console.log("DEPRECATED: This method is deprecated. Please use $.fn.pastableNonInputable() instead.");
}
pm = Paste.mountNonInputable(pasteContainer);
return pm._container;
};
$.fn.pastableNonInputable = function() {
var el, _i, _len;
for (_i = 0, _len = this.length; _i < _len; _i++) {
el = this[_i];
Paste.mountNonInputable(el);
}
return this;
};
$.fn.pastableTextarea = function() {
var el, _i, _len;
for (_i = 0, _len = this.length; _i < _len; _i++) {
el = this[_i];
Paste.mountTextarea(el);
}
return this;
};
$.fn.pastableContenteditable = function() {
var el, _i, _len;
for (_i = 0, _len = this.length; _i < _len; _i++) {
el = this[_i];
Paste.mountContenteditable(el);
}
return this;
};
dataURLtoBlob = function(dataURL, sliceSize) {
var b64Data, byteArray, byteArrays, byteCharacters, byteNumbers, contentType, i, m, offset, slice, _ref;
if (sliceSize == null) {
sliceSize = 512;
}
if (!(m = dataURL.match(/^data\:([^\;]+)\;base64\,(.+)$/))) {
return null;
}
_ref = m, m = _ref[0], contentType = _ref[1], b64Data = _ref[2];
byteCharacters = atob(b64Data);
byteArrays = [];
offset = 0;
while (offset < byteCharacters.length) {
slice = byteCharacters.slice(offset, offset + sliceSize);
byteNumbers = new Array(slice.length);
i = 0;
while (i < slice.length) {
byteNumbers[i] = slice.charCodeAt(i);
i++;
}
byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
offset += sliceSize;
}
return new Blob(byteArrays, {
type: contentType
});
};
createHiddenEditable = function() {
return $(document.createElement('div')).attr('contenteditable', true).css({
width: 1,
height: 1,
position: 'fixed',
left: -100,
overflow: 'hidden'
});
};
Paste = (function() {
Paste.prototype._target = null;
Paste.prototype._container = null;
Paste.mountNonInputable = function(nonInputable) {
var paste;
paste = new Paste(createHiddenEditable().appendTo(nonInputable), nonInputable);
$(nonInputable).on('click', (function(_this) {
return function() {
return paste._container.focus();
};
})(this));
paste._container.on('focus', (function(_this) {
return function() {
return $(nonInputable).addClass('pastable-focus');
};
})(this));
return paste._container.on('blur', (function(_this) {
return function() {
return $(nonInputable).removeClass('pastable-focus');
};
})(this));
};
Paste.mountTextarea = function(textarea) {
var ctlDown, paste;
if (-1 !== navigator.userAgent.toLowerCase().indexOf('chrome')) {
return this.mountContenteditable(textarea);
}
paste = new Paste(createHiddenEditable().insertBefore(textarea), textarea);
ctlDown = false;
$(textarea).on('keyup', function(ev) {
var _ref;
if ((_ref = ev.keyCode) === 17 || _ref === 224) {
return ctlDown = false;
}
});
$(textarea).on('keydown', function(ev) {
var _ref;
if ((_ref = ev.keyCode) === 17 || _ref === 224) {
ctlDown = true;
}
if (ctlDown && ev.keyCode === 86) {
return paste._container.focus();
}
});
$(paste._target).on('pasteImage', (function(_this) {
return function() {
return $(textarea).focus();
};
})(this));
$(paste._target).on('pasteText', (function(_this) {
return function() {
return $(textarea).focus();
};
})(this));
$(textarea).on('focus', (function(_this) {
return function() {
return $(textarea).addClass('pastable-focus');
};
})(this));
return $(textarea).on('blur', (function(_this) {
return function() {
return $(textarea).removeClass('pastable-focus');
};
})(this));
};
Paste.mountContenteditable = function(contenteditable) {
var paste;
paste = new Paste(contenteditable, contenteditable);
$(contenteditable).on('focus', (function(_this) {
return function() {
return $(contenteditable).addClass('pastable-focus');
};
})(this));
return $(contenteditable).on('blur', (function(_this) {
return function() {
return $(contenteditable).removeClass('pastable-focus');
};
})(this));
};
function Paste(_at__container, _at__target) {
this._container = _at__container;
this._target = _at__target;
this._container = $(this._container);
this._target = $(this._target).addClass('pastable');
this._container.on('paste', (function(_this) {
return function(ev) {
var clipboardData, file, item, reader, text, _i, _j, _len, _len1, _ref, _ref1, _ref2, _ref3, _results;
if (((_ref = ev.originalEvent) != null ? _ref.clipboardData : void 0) != null) {
clipboardData = ev.originalEvent.clipboardData;
if (clipboardData.items) {
_ref1 = clipboardData.items;
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
item = _ref1[_i];
if (item.type.match(/^image\//)) {
reader = new FileReader();
reader.onload = function(event) {
return _this._handleImage(event.target.result);
};
reader.readAsDataURL(item.getAsFile());
}
if (item.type === 'text/plain') {
item.getAsString(function(string) {
return _this._target.trigger('pasteText', {
text: string
});
});
}
}
} else {
if (-1 !== Array.prototype.indexOf.call(clipboardData.types, 'text/plain')) {
text = clipboardData.getData('Text');
_this._target.trigger('pasteText', {
text: text
});
}
_this._checkImagesInContainer(function(src) {
return _this._handleImage(src);
});
}
}
if (clipboardData = window.clipboardData) {
if ((_ref2 = (text = clipboardData.getData('Text'))) != null ? _ref2.length : void 0) {
return _this._target.trigger('pasteText', {
text: text
});
} else {
_ref3 = clipboardData.files;
_results = [];
for (_j = 0, _len1 = _ref3.length; _j < _len1; _j++) {
file = _ref3[_j];
_this._handleImage(URL.createObjectURL(file));
_results.push(_this._checkImagesInContainer(function() {}));
}
return _results;
}
}
};
})(this));
}
Paste.prototype._handleImage = function(src) {
var loader;
loader = new Image();
loader.onload = (function(_this) {
return function() {
var blob, canvas, ctx, dataURL;
canvas = document.createElement('canvas');
canvas.width = loader.width;
canvas.height = loader.height;
ctx = canvas.getContext('2d');
ctx.drawImage(loader, 0, 0, canvas.width, canvas.height);
dataURL = null;
try {
dataURL = canvas.toDataURL('image/png');
blob = dataURLtoBlob(dataURL);
} catch (_error) {}
if (dataURL) {
return _this._target.trigger('pasteImage', {
blob: blob,
dataURL: dataURL,
width: loader.width,
height: loader.height
});
}
};
})(this);
return loader.src = src;
};
Paste.prototype._checkImagesInContainer = function(cb) {
var img, timespan, _i, _len, _ref;
timespan = Math.floor(1000 * Math.random());
_ref = this._container.find('img');
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
img = _ref[_i];
img["_paste_marked_" + timespan] = true;
}
return setTimeout((function(_this) {
return function() {
var _j, _len1, _ref1, _results;
_ref1 = _this._container.find('img');
_results = [];
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
img = _ref1[_j];
if (!img["_paste_marked_" + timespan]) {
cb(img.src);
}
//firefox问题处理因为采用了 pastableContenteditable 模式,故只需要删除默认的粘贴
if ($(img).attr('src').startsWith('data:image/')) {
_results.push($(img).remove());
};
}
return _results;
};
})(this), 1);
};
return Paste;
})();
}).call(this);
KindEditor.plugin('paste', function(K) {
var editor = this,
name = 'paste';
if(editor.edit == undefined || editor.edit.iframe == undefined){
return;
}
var contentWindow = editor.edit.iframe[0].contentWindow;
//var contentWindow = editor.iframeDoc;
//var contentWindow = document.getElementsByTagName('iframe')[0].contentWindow;
var nodeBody = contentWindow.document.getElementsByTagName('body')[0];
console.log(nodeBody);
$(nodeBody).pastableContenteditable();
dataURItoBlob = function(dataURI) {
// convert base64/URLEncoded data component to raw binary data held in a string
var byteString;
if (dataURI.split(',')[0].indexOf('base64') >= 0)
byteString = atob(dataURI.split(',')[1]);
else
byteString = unescape(dataURI.split(',')[1]);
// separate out the mime component
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
// write the bytes of the string to a typed array
var ia = new Uint8Array(byteString.length);
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
return new Blob([ia], {type:mimeString});
};
$(nodeBody).on('pasteImage', function(ev, data) {
console.log('pasteImage');
console.log("dataURL: " + data.dataURL);
console.log("width: " + data.width);
console.log("height: " + data.height);
var blob = dataURItoBlob(data.dataURL);
if (data.blob !== null) {
var data = new FormData();
// data.append("imgFile",blob, "imageFilename.png");
data.append("file",blob, "imageFilename.png");
console.log(data);
$.ajax({
url: '/kindeditor/upload?dir=image',
url: '/api/attachments.json',
contentType: false,
type: 'POST',
data: data,
processData: false,
success: function(data) {
console.log(data);
// editor.exec('insertimage', JSON.parse(data).url);
// /api/attachments/227362
editor.exec('insertimage', '/api/attachments/' + data.id);
}
});
}
});
return;
});

File diff suppressed because it is too large Load Diff

0
public/react/build/css/editormd.min.css vendored Executable file → Normal file
View File

0
public/react/build/css/edu-common.css Executable file → Normal file
View File

0
public/react/build/css/edu-public.css Executable file → Normal file
View File

0
public/react/build/css/merge.css Executable file → Normal file
View File

0
public/react/build/fonts/FontAwesome.otf Executable file → Normal file
View File

0
public/react/build/fonts/fontawesome-webfont.eot Executable file → Normal file
View File

0
public/react/build/fonts/fontawesome-webfont.svg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 434 KiB

After

Width:  |  Height:  |  Size: 434 KiB

0
public/react/build/fonts/fontawesome-webfont.ttf Executable file → Normal file
View File

0
public/react/build/fonts/fontawesome-webfont.woff Executable file → Normal file
View File

0
public/react/build/fonts/fontawesome-webfont.woff2 Executable file → Normal file
View File

0
public/react/build/images/loading@2x.gif Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -1 +1 @@
<!doctype html><html lang="zh-CN" class="notranslate translated-ltr" translate="no"><head><meta charset="utf-8"><meta name="Keywords" content="gitLink,GitLink,gitlink,git,trustie,trustieforge,forge,开源,确实开源,代码托管,Git,开源,内源,项目管理,版本控制,开源代码,代码分享,项目协作,开源项目托管,免费代码托管,Git代码托管,Git托管服务,确实让创建更美好,协同开发平台"><meta name="description" content="GitLink,新一代开源创新服务平台 分布式协作开发 一站式过程管理 高效流水线运维 多层次代码分析 多维度用户画像 分布式协作开发 基于Git打造分布式代码托管环境"><meta property="og:title" content="GitLink | 确实开源"/><meta property="og:type" content="Object"/><meta property="og:url" content="https://gitlink.org.cn/"/><meta property="og:image" content="https://www.gitlink.org.cn/images/logo.png"/><meta property="og:image:alt" content="GitLink | 确实开源"/><meta property="og:site_name" content="GitLink"/><meta property="og:description" content="GitLink,新一代开源创新服务平台 分布式协作开发 一站式过程管理 高效流水线运维 多层次代码分析 多维度用户画像 分布式协作开发 基于Git打造分布式代码托管环境"/><meta name="hostname" content="gitlink.org.cn"><meta name="keyboard-shortcuts-preference" content="all"><meta name="expected-hostname" content="gitlink.org.cn"><meta name="go-import" content="gitlink.org.cn git https://gitlink.org.cn"><meta name="octolytics-dimension-user_login" content="GitLink"><meta name="octolytics-dimension-repository_nwo" content="GitLink"><meta name="octolytics-dimension-repository_network_root_nwo" content="GitLink"><meta name="theme-color" content="#000000"><meta content="IE=edge" http-equiv="X-UA-Compatible"><meta name="twitter:image:src" content="https://www.gitlink.org.cn/images/logo.png"><meta name="twitter:site" content="@gitlink"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="GitLink | 确实开源"><meta name="twitter:description" content="GitLink,新一代开源创新服务平台 分布式协作开发 一站式过程管理 高效流水线运维 多层次代码分析 多维度用户画像 分布式协作开发 基于Git打造分布式代码托管环境"><meta content="always" name="referrer"><link rel="canonical" href="https://gitlink.org.cn" data-turbo-transient=""><link rel="fluid-icon" href="https://www.gitlink.org.cn/images/logo.png" title="GitLink"><link rel="manifest" href="/react/build//manifest.json"><link rel="stylesheet" href="/react/build/css/alex/alex.all.global.min.css"><link rel="stylesheet" href="/react/build/css/iconfont.css"><link rel="stylesheet" href="/react/build/css/editormd.min.css"><link rel="stylesheet" href="/react/build/css/gitlink.min.css"><link href="/react/build/static/css/main.dea82c29.chunk.css" rel="stylesheet"></head><body><div id="md_div" style="display:none"></div><div id="root" class="page -layout-v -fit widthunit"></div><div id="picture_display" style="display:none"></div><script src="/react/build/js/jquery-1.8.3.min.js"></script><script src="/react/build/js/js_min_all.js"></script><script src="/react/build/js/codemirror/codemirror.js"></script><script src="/react/build/js/editormd/editormd.min.js"></script><script src="/react/build/js/codemirror/merge/merge.js"></script><script src="/react/build/js/react.production.min.js"></script><script src="/react/build/js/react-dom.production.min.js"></script><script src="/react/build/js/alex/moment.js"></script><script src="/react/build/./static/js/runtime~main.d38d142a.js"></script><script src="/react/build/./static/js/main.462459e7.chunk.js"></script><script>window.onload=function(){$(".newContainer").delegate("a.anchors","click",(function(){let n=$(this).offset().top-180;return $("html,body").animate({scrollTop:n},10),window.location.hash=$(this).attr("name"),!1}))}</script></body></html>
<!doctype html><html lang="zh-CN" class="notranslate translated-ltr" translate="no"><head><meta charset="utf-8"><meta name="Keywords" content="gitLink,GitLink,gitlink,git,trustie,trustieforge,forge,开源,确实开源,代码托管,Git,开源,内源,项目管理,版本控制,开源代码,代码分享,项目协作,开源项目托管,免费代码托管,Git代码托管,Git托管服务,确实让创建更美好,协同开发平台"><meta name="description" content="GitLink,新一代开源创新服务平台 分布式协作开发 一站式过程管理 高效流水线运维 多层次代码分析 多维度用户画像 分布式协作开发 基于Git打造分布式代码托管环境"><meta property="og:title" content="GitLink | 确实开源"/><meta property="og:type" content="Object"/><meta property="og:url" content="https://gitlink.org.cn/"/><meta property="og:image" content="https://www.gitlink.org.cn/images/logo.png"/><meta property="og:image:alt" content="GitLink | 确实开源"/><meta property="og:site_name" content="GitLink"/><meta property="og:description" content="GitLink,新一代开源创新服务平台 分布式协作开发 一站式过程管理 高效流水线运维 多层次代码分析 多维度用户画像 分布式协作开发 基于Git打造分布式代码托管环境"/><meta name="hostname" content="gitlink.org.cn"><meta name="keyboard-shortcuts-preference" content="all"><meta name="expected-hostname" content="gitlink.org.cn"><meta name="go-import" content="gitlink.org.cn git https://gitlink.org.cn"><meta name="octolytics-dimension-user_login" content="GitLink"><meta name="octolytics-dimension-repository_nwo" content="GitLink"><meta name="octolytics-dimension-repository_network_root_nwo" content="GitLink"><meta name="theme-color" content="#000000"><meta content="IE=edge" http-equiv="X-UA-Compatible"><meta name="twitter:image:src" content="https://www.gitlink.org.cn/images/logo.png"><meta name="twitter:site" content="@gitlink"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="GitLink | 确实开源"><meta name="twitter:description" content="GitLink,新一代开源创新服务平台 分布式协作开发 一站式过程管理 高效流水线运维 多层次代码分析 多维度用户画像 分布式协作开发 基于Git打造分布式代码托管环境"><meta content="always" name="referrer"><link rel="canonical" href="https://gitlink.org.cn" data-turbo-transient=""><link rel="fluid-icon" href="https://www.gitlink.org.cn/images/logo.png" title="GitLink"><link rel="manifest" href="/react/build//manifest.json"><link rel="stylesheet" href="/react/build/css/alex/alex.all.global.min.css"><link rel="stylesheet" href="/react/build/css/iconfont.css"><link rel="stylesheet" href="/react/build/css/editormd.min.css"><link rel="stylesheet" href="/react/build/css/gitlink.min.css"><link href="/react/build/static/css/main.5c83d4d2.chunk.css" rel="stylesheet"></head><body><div id="md_div" style="display:none"></div><div id="root" class="page -layout-v -fit widthunit"></div><div id="picture_display" style="display:none"></div><script src="/react/build/js/jquery-1.8.3.min.js"></script><script src="/react/build/js/js_min_all.js"></script><script src="/react/build/js/codemirror/codemirror.js"></script><script src="/react/build/js/editormd/editormd.min.js"></script><script src="/react/build/js/codemirror/merge/merge.js"></script><script src="/react/build/js/react.production.min.js"></script><script src="/react/build/js/react-dom.production.min.js"></script><script src="/react/build/js/alex/moment.js"></script><script src="/react/build/./static/js/runtime~main.5e3e1838.js"></script><script src="/react/build/./static/js/main.1ba9f377.chunk.js"></script><script>window.onload=function(){$(".newContainer").delegate("a.anchors","click",(function(){let n=$(this).offset().top-180;return $("html,body").animate({scrollTop:n},10),window.location.hash=$(this).attr("name"),!1}))}</script></body></html>

0
public/react/build/index.test.html Executable file → Normal file
View File

0
public/react/build/js/codemirror/addon/active-line.js vendored Executable file → Normal file
View File

0
public/react/build/js/codemirror/addon/hint/anyword-hint.js vendored Executable file → Normal file
View File

0
public/react/build/js/codemirror/addon/hint/javascript-hint.js vendored Executable file → Normal file
View File

0
public/react/build/js/codemirror/addon/hint/show-hint.css vendored Executable file → Normal file
View File

0
public/react/build/js/codemirror/addon/hint/show-hint.js vendored Executable file → Normal file
View File

0
public/react/build/js/codemirror/codemirror.js Executable file → Normal file
View File

0
public/react/build/js/codemirror/lib/fuzzysort.js vendored Executable file → Normal file
View File

0
public/react/build/js/codemirror/merge/merge.css Executable file → Normal file
View File

0
public/react/build/js/codemirror/merge/merge.js Executable file → Normal file
View File

0
public/react/build/js/codemirror/mode/javascript.js vendored Executable file → Normal file
View File

0
public/react/build/js/diff_match_patch.js Executable file → Normal file
View File

0
public/react/build/js/editormd/editormd.min.js vendored Executable file → Normal file
View File

0
public/react/build/js/editormd/flowchart.min.js vendored Executable file → Normal file
View File

0
public/react/build/js/editormd/jquery.flowchart.min.js vendored Executable file → Normal file
View File

0
public/react/build/js/editormd/lib/codemirror/addons.min.js vendored Executable file → Normal file
View File

0
public/react/build/js/editormd/lib/codemirror/modes.min.js vendored Executable file → Normal file
View File

0
public/react/build/js/editormd/lib/marked.min.js vendored Executable file → Normal file
View File

0
public/react/build/js/editormd/lib/prettify.min.js vendored Executable file → Normal file
View File

0
public/react/build/js/editormd/lib/raphael.min.js vendored Executable file → Normal file
View File

0
public/react/build/js/editormd/lib/underscore.min.js vendored Executable file → Normal file
View File

0
public/react/build/js/editormd/marked.min.js vendored Executable file → Normal file
View File

0
public/react/build/js/editormd/prettify.min.js vendored Executable file → Normal file
View File

0
public/react/build/js/editormd/sequence-diagram.min.js vendored Executable file → Normal file
View File

0
public/react/build/js/edu_tpi.js Executable file → Normal file
View File

0
public/react/build/js/jquery-1.8.3.min.js vendored Executable file → Normal file
View File

0
public/react/build/js/jsFromMiddleLayer/formvalid.js Executable file → Normal file
View File

0
public/react/build/js/jsFromMiddleLayer/main.js Executable file → Normal file
View File

0
public/react/build/js/jsFromMiddleLayer/ws.js Executable file → Normal file
View File

0
public/react/build/js/js_min_add.js Executable file → Normal file
View File

0
public/react/build/js/js_min_all.js Executable file → Normal file
View File

0
public/react/build/js/js_min_cm.js Executable file → Normal file
View File

0
public/react/build/js/merge.js Executable file → Normal file
View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

0
public/react/build/js/monaco/vs/basic-languages/r/r.js Executable file → Normal file
View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

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