tocmd 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/bin/tocmd +70 -0
  3. data/lib/mdpreview/markdown_render.rb +45 -0
  4. data/lib/mdpreview/translator.rb +237 -0
  5. data/lib/mdpreview/version.rb +3 -0
  6. data/lib/mdpreview.rb +18 -0
  7. data/test/mdptest.rb +100 -0
  8. data/vendor/cur.file +6 -0
  9. data/vendor/meta.js +1 -0
  10. data/vendor/template.html +0 -0
  11. data/vendor/toc/css/demo.css +33 -0
  12. data/vendor/toc/css/zTreeStyle/img/diy/1_close.png +0 -0
  13. data/vendor/toc/css/zTreeStyle/img/diy/1_open.png +0 -0
  14. data/vendor/toc/css/zTreeStyle/img/diy/2.png +0 -0
  15. data/vendor/toc/css/zTreeStyle/img/diy/3.png +0 -0
  16. data/vendor/toc/css/zTreeStyle/img/diy/4.png +0 -0
  17. data/vendor/toc/css/zTreeStyle/img/diy/5.png +0 -0
  18. data/vendor/toc/css/zTreeStyle/img/diy/6.png +0 -0
  19. data/vendor/toc/css/zTreeStyle/img/diy/7.png +0 -0
  20. data/vendor/toc/css/zTreeStyle/img/diy/8.png +0 -0
  21. data/vendor/toc/css/zTreeStyle/img/diy/9.png +0 -0
  22. data/vendor/toc/css/zTreeStyle/img/line_conn.gif +0 -0
  23. data/vendor/toc/css/zTreeStyle/img/loading.gif +0 -0
  24. data/vendor/toc/css/zTreeStyle/img/zTreeStandard.gif +0 -0
  25. data/vendor/toc/css/zTreeStyle/img/zTreeStandard.png +0 -0
  26. data/vendor/toc/css/zTreeStyle/zTreeStyle.css +97 -0
  27. data/vendor/toc/js/jquery-1.4.4.min.js +167 -0
  28. data/vendor/toc/js/jquery.ztree.all-3.5.js +3447 -0
  29. data/vendor/toc/js/jquery.ztree.all-3.5.min.js +157 -0
  30. data/vendor/toc/js/jquery.ztree.core-3.5.js +1644 -0
  31. data/vendor/toc/js/jquery.ztree.core-3.5.min.js +68 -0
  32. data/vendor/toc/js/jquery.ztree.excheck-3.5.js +624 -0
  33. data/vendor/toc/js/jquery.ztree.excheck-3.5.min.js +33 -0
  34. data/vendor/toc/js/jquery.ztree.exedit-3.5.js +1178 -0
  35. data/vendor/toc/js/jquery.ztree.exedit-3.5.min.js +52 -0
  36. data/vendor/toc/js/jquery.ztree.exhide-3.5.js +362 -0
  37. data/vendor/toc/js/jquery.ztree.exhide-3.5.min.js +22 -0
  38. data/vendor/toc/js/jquery.ztree_toc.js +224 -0
  39. data/vendor/toc/js/jquery.ztree_toc.min.js +4 -0
  40. data/vendor/toc/style/Clearness Dark.css +146 -0
  41. data/vendor/toc/style/Clearness.css +147 -0
  42. data/vendor/toc/style/GitHub.css +90 -0
  43. data/vendor/toc/style/GitHub2.css +297 -0
  44. data/vendor/toc/style/github-bf51422f4bb36427d391e4b75a1daa083c2d840e.css +1 -0
  45. data/vendor/toc/style/github2-d731afd4f624c99a4b19ad69f3083cd6d02b81d5.css +1 -0
  46. data/vendor/toc/style/makedownpad.css +285 -0
  47. metadata +90 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6d905d846ac396dbede31f27fa7f07567d472fbb
4
+ data.tar.gz: 47275da1ce1e7d5c29b3526404a93949a3cf497d
5
+ SHA512:
6
+ metadata.gz: fc2d6a9c370b3858ae3ddf9e9b8e1be5ab3e5e3fba660426d9d8f426191f06dc47cb35939281bd720775e104045e74325cf205b0da9a6f5146606251a12ad48d
7
+ data.tar.gz: 60d3b63158fcefc176df99405b3270bdad5deb344e0d684622b16e814362751752e606ce7244ea2e29496d0d452e512ce0cf8efe2024a8d6bff801836be9eace
data/bin/tocmd ADDED
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ require 'mdpreview'
5
+ require 'pathname'
6
+ # p ARGV
7
+ # puts Mdpreview.hi(ARGV)
8
+
9
+ # puts __FILE__
10
+ # puts File.dirname(__FILE__)
11
+
12
+
13
+ # File.join(File.dirname(__FILE__), '..', 'lib')
14
+ path = Pathname.new(File.join(File.dirname(__FILE__), '..')).realpath.to_s
15
+
16
+ p "开始"
17
+
18
+ require 'optparse'
19
+
20
+ options = {}
21
+ option_parser = OptionParser.new do |opts|
22
+ # 这里是这个命令行工具的帮助信息
23
+ opts.banner = 'preview markdown file with toc of the command line tool.'
24
+
25
+ # # Option 作为switch,不带argument,用于将switch设置成true或false
26
+ # options[:switch] = false
27
+ # # 下面第一项是Short option(没有可以直接在引号间留空),第二项是Long option,第三项是对Option的描述
28
+ # opts.on('-s', '--switch', 'Set options as switch') do
29
+ # # 这个部分就是使用这个Option后执行的代码
30
+ # options[:switch] = true
31
+ # end
32
+ vendor_path = Pathname.new(File.expand_path('../../vendor/', __FILE__)).realpath.to_s
33
+
34
+ begin
35
+ Dir.delelte(File.join(path ,"preview"))
36
+ Dir.mkdir(File.join(path ,"preview"), 0700) #=> 0
37
+ rescue
38
+ ensure
39
+ end
40
+
41
+ begin
42
+ Dir.mkdir(File.join(path ,"preview"), 0700) #=> 0
43
+ rescue
44
+ ensure
45
+ end
46
+
47
+ begin
48
+ Dir.mkdir(File.join(path ,".toc"), 0700) #=> 0
49
+ rescue
50
+ ensure
51
+ f = File.new(File.join(vendor_path ,"template.html"), "w+").path
52
+ FileUtils.cp(f ,File.join(path ,".toc"))
53
+ end
54
+
55
+
56
+ # Option 作为flag,带argument,用于将argument作为数值解析,比如"name"信息
57
+ #下面的“value”就是用户使用时输入的argument
58
+ opts.on('-f sourceFileNAME', '--name sourceFileNAME', 'Pass-in source file name') do |value|
59
+ # options[:fname] = value
60
+
61
+ Mdpreview.hi(path + '/' + value)
62
+ end
63
+
64
+ # Option 作为flag,带一组用逗号分割的arguments,用于将arguments作为数组解析
65
+ # opts.on('-a A,B', '--array A,B', Array, 'List of arguments') do |value|
66
+ # options[:array] = value
67
+ # end
68
+ end.parse!
69
+
70
+ # puts options.inspect
@@ -0,0 +1,45 @@
1
+ require 'redcarpet'
2
+ require 'pygments'
3
+
4
+ require 'redcarpet'
5
+ require 'rexml/document'
6
+ module Redcarpet::Render
7
+ class Custom < Base
8
+ def header(title, level)
9
+ @headers ||= []
10
+
11
+ title_elements = REXML::Document.new(title)
12
+ flattened_title = title_elements.inject('') do |flattened, element|
13
+ flattened += if element.respond_to?(:text)
14
+ element.text
15
+ else
16
+ element.to_s
17
+ end
18
+ end
19
+ permalink = flattened_title.downcase.gsub(/[^a-z\s]/, '').gsub(/\W+/, "-")
20
+
21
+ # for extra credit: implement this as its own method
22
+ if @headers.include?(permalink)
23
+ permalink += "_1"
24
+ # my brain hurts
25
+ loop do
26
+ break if !@headers.include?(permalink)
27
+ # generate titles like foo-bar_1, foo-bar_2
28
+ permalink.gsub!(/\_(\d+)$/, "_#{$1.to_i + 1}")
29
+ end
30
+ end
31
+ @headers << permalink
32
+ %(\n<h#{level}><a name="#{permalink}" class="anchor" href="##{permalink}"><span class="anchor-icon"></span></a>#{title}</h#{level}>\n)
33
+ end
34
+ end
35
+ end
36
+
37
+ class HTMLwithPygments < Redcarpet::Render::HTML
38
+ def doc_header()
39
+ '<style>' + Pygments.css('.highlight',:style => 'friendly') + '</style>'
40
+ end
41
+
42
+ def block_code(code, language)
43
+ Pygments.highlight(code, :lexer => language, :options => {:encoding => 'utf-8'})
44
+ end
45
+ end
@@ -0,0 +1,237 @@
1
+ require 'pathname'
2
+ require 'FileUtils'
3
+
4
+
5
+
6
+ class Mdpreview::Translator
7
+ def initialize(source_file_path)
8
+ #源文件路径
9
+ @source_file_path = source_file_path
10
+ #gem跟目录
11
+ @gem_root_path = File.expand_path('../', @source_file_path)
12
+ #editor path
13
+ @editor_path = Pathname.new(File.expand_path('../../../vendor', __FILE__)).realpath.to_s
14
+
15
+ p "@gem root_path:::"+@gem_root_path
16
+ p "@src file_path:::"+@source_file_path
17
+ p "@editor path :::"+@editor_path
18
+
19
+ end
20
+
21
+ def hi
22
+ generate_meta_js
23
+ cp_source_file_to_cur_file
24
+ open_in_browser
25
+
26
+ ar = @source_file_path.split('/')
27
+ ar.pop()
28
+
29
+ puts "src path = #{ar.join('/').to_s}"
30
+ src_path = ar.join('/').to_s
31
+
32
+ ar.push('preview');
33
+ dest_dir = ar.join('/').to_s
34
+
35
+ puts "desc path = #{ar.join('/').to_s}"
36
+
37
+ build_with_dir(src_path ,dest_dir)
38
+ end
39
+
40
+ def open_in_browser
41
+ `open #{@editor_path}/jsoneditor-2.3.6/examples/main.html`
42
+ end
43
+
44
+ def generate_meta_js
45
+ f = File.new(File.join(@editor_path,"meta.js"), "w+")
46
+ f.puts("#{@source_file_path}")
47
+ end
48
+
49
+ def cp_source_file_to_cur_file
50
+ # cp param must be string
51
+ f = File.new(File.join(@editor_path,"cur.file"), "w+").path
52
+ FileUtils.cp(@source_file_path,f)
53
+ end
54
+
55
+ def build_with_dir(destiny_dir,dest_dir)
56
+ Dir.foreach(destiny_dir) do |ff|
57
+ # puts ff
58
+ unless /^\./ =~ ff ||/^images/ =~ ff ||/^css/ =~ ff || File.directory?(ff) || File.extname(ff) != '.md'
59
+
60
+ puts "src = #{ff}"
61
+
62
+ # get markdown text
63
+ text = IO.read(destiny_dir + '/' + ff)
64
+
65
+ # options = [:fenced_code,:generate_toc,:hard_wrap,:no_intraemphasis,:strikethrough,:gh_blockcode,:autolink,:xhtml,:tables]
66
+
67
+ # convert to html
68
+ markdown = Redcarpet::Markdown.new(HTMLwithPygments,:gh_blockcode=>true,:no_intra_emphasis=>true,:filter_html => true,:hard_wrap => true,:autolink => true, :space_after_headers => true,:fenced_code_blocks => true)
69
+ parse_markdown = markdown.render(text)
70
+ # parse_markdown = syntax_highlighter(parse_markdown)
71
+
72
+ css_link = ''
73
+ if destiny_dir.to_s.index('/')
74
+ css_link = %Q{
75
+ <link href="#{@editor_path}/toc/style/github-bf51422f4bb36427d391e4b75a1daa083c2d840e.css" media="all" rel="stylesheet" type="text/css"/>
76
+ <link href="#{@editor_path}/toc//style/github2-d731afd4f624c99a4b19ad69f3083cd6d02b81d5.css" media="all" rel="stylesheet" type="text/css"/>
77
+ <link href="#{@editor_path}/toc/css/zTreeStyle/zTreeStyle.css" media="all" rel="stylesheet" type="text/css"/>
78
+ }
79
+ else
80
+ css_link = %Q{
81
+ <link href="#{@editor_path}/toc/style/github-bf51422f4bb36427d391e4b75a1daa083c2d840e.css" media="all" rel="stylesheet" type="text/css"/>
82
+ <link href="#{@editor_path}/toc/style/github2-d731afd4f624c99a4b19ad69f3083cd6d02b81d5.css" media="all" rel="stylesheet" type="text/css"/>
83
+ <link href="#{@editor_path}/toc/css/zTreeStyle/zTreeStyle.css" media="all" rel="stylesheet" type="text/css"/>
84
+ }
85
+ end
86
+
87
+ t = %Q{
88
+ <html>
89
+ <head>
90
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
91
+ <title>#{ff.gsub('.md','')}</title>
92
+ #{css_link}
93
+ <style>
94
+ pre {
95
+ counter-reset: line-numbering;
96
+ border: solid 1px #d9d9d9;
97
+ border-radius: 0;
98
+ background: #fff;
99
+ padding: 0;
100
+ line-height: 23px;
101
+ margin-bottom: 30px;
102
+ white-space: pre;
103
+ overflow-x: auto;
104
+ word-break: inherit;
105
+ word-wrap: inherit;
106
+ }
107
+
108
+ pre a::before {
109
+ content: counter(line-numbering);
110
+ counter-increment: line-numbering;
111
+ padding-right: 1em; /* space after numbers */
112
+ width: 25px;
113
+ text-align: right;
114
+ opacity: 0.7;
115
+ display: inline-block;
116
+ color: #aaa;
117
+ background: #eee;
118
+ margin-right: 16px;
119
+ padding: 2px 10px;
120
+ font-size: 13px;
121
+ -webkit-touch-callout: none;
122
+ -webkit-user-select: none;
123
+ -khtml-user-select: none;
124
+ -moz-user-select: none;
125
+ -ms-user-select: none;
126
+ user-select: none;
127
+ }
128
+
129
+ pre a:first-of-type::before {
130
+ padding-top: 10px;
131
+ }
132
+
133
+ pre a:last-of-type::before {
134
+ padding-bottom: 10px;
135
+ }
136
+
137
+ pre a:only-of-type::before {
138
+ padding: 10px;
139
+ }
140
+
141
+ .highlight { background-color: #ffffcc } /* RIGHT */
142
+ </style>
143
+ </head>
144
+ <body>
145
+ <div>
146
+
147
+ </div>
148
+ <div id='readme' style='width:834px;margin:20px auto'>
149
+ <ul id="tree" class="ztree" style="">
150
+
151
+ </ul>
152
+ <article class='markdown-body'>
153
+ #{parse_markdown}
154
+ </article>
155
+ </div>
156
+ </body>
157
+ </html>
158
+ <script type="text/javascript" src="#{@editor_path}/toc/js/jquery-1.4.4.min.js"></script>
159
+ <script type="text/javascript" src="#{@editor_path}/toc/js/jquery.ztree.core-3.5.js"></script>
160
+ <script type="text/javascript" src="#{@editor_path}/toc/js/jquery.ztree_toc.min.js"></script>
161
+ <SCRIPT type="text/javascript" >
162
+ <!--
163
+ $(document).ready(function(){
164
+ $('#tree').ztree_toc({
165
+
166
+ });
167
+ });
168
+ //-->
169
+ </SCRIPT>
170
+ }
171
+
172
+ if destiny_dir.to_s.index('/')
173
+ p '1build src/' + destiny_dir.to_s.split('/')[1] + '/' + ff.gsub('.md','') + '.html'
174
+ build_dir = 'preview/'
175
+
176
+ p 'build = ' + dest_dir + ff.gsub('.md','') + '.html'
177
+ IO.write(dest_dir + '/' + ff.gsub('.md','') + '.html',t) # => 10
178
+ else
179
+ p '2build src/' + ff.gsub('.md','') + '.html'
180
+ build_dir = 'preview/'
181
+ # write to html file
182
+ IO.write(build_dir + '/' + ff.gsub('.md','') + '.html',t) # => 10
183
+ end
184
+
185
+ end
186
+ end
187
+ end
188
+
189
+
190
+ end
191
+
192
+
193
+ require 'redcarpet'
194
+ require 'pygments'
195
+
196
+ require 'redcarpet'
197
+ require 'rexml/document'
198
+ module Redcarpet::Render
199
+ class Custom < Base
200
+ def header(title, level)
201
+ @headers ||= []
202
+
203
+ title_elements = REXML::Document.new(title)
204
+ flattened_title = title_elements.inject('') do |flattened, element|
205
+ flattened += if element.respond_to?(:text)
206
+ element.text
207
+ else
208
+ element.to_s
209
+ end
210
+ end
211
+ permalink = flattened_title.downcase.gsub(/[^a-z\s]/, '').gsub(/\W+/, "-")
212
+
213
+ # for extra credit: implement this as its own method
214
+ if @headers.include?(permalink)
215
+ permalink += "_1"
216
+ # my brain hurts
217
+ loop do
218
+ break if !@headers.include?(permalink)
219
+ # generate titles like foo-bar_1, foo-bar_2
220
+ permalink.gsub!(/\_(\d+)$/, "_#{$1.to_i + 1}")
221
+ end
222
+ end
223
+ @headers << permalink
224
+ %(\n<h#{level}><a name="#{permalink}" class="anchor" href="##{permalink}"><span class="anchor-icon"></span></a>#{title}</h#{level}>\n)
225
+ end
226
+ end
227
+ end
228
+
229
+ class HTMLwithPygments < Redcarpet::Render::HTML
230
+ def doc_header()
231
+ '<style>' + Pygments.css('.highlight',:style => 'friendly') + '</style>'
232
+ end
233
+
234
+ def block_code(code, language)
235
+ Pygments.highlight(code, :lexer => language, :options => {:encoding => 'utf-8'})
236
+ end
237
+ end
@@ -0,0 +1,3 @@
1
+ module Mdpreview
2
+ VERSION = "0.0.5"
3
+ end
data/lib/mdpreview.rb ADDED
@@ -0,0 +1,18 @@
1
+ require "mdpreview/version"
2
+ require 'mdpreview/translator'
3
+
4
+
5
+ module Mdpreview
6
+ # Your code goes here...
7
+ def self.hi(a)
8
+ translator = Translator.new(a)
9
+ translator.hi
10
+ # puts version info
11
+ p VERSION
12
+
13
+ end
14
+
15
+
16
+
17
+
18
+ end
data/test/mdptest.rb ADDED
@@ -0,0 +1,100 @@
1
+ require 'test/unit'
2
+ #
3
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
4
+
5
+ require 'mdpreview'
6
+ # $LOAD_PATH.unshift(File.dirname(__FILE__))
7
+ #
8
+ #
9
+ #
10
+ # 各assertion的最后一个参数message表示测试失败时显示的消息
11
+ #
12
+ # assert(boolean, message="")
13
+ # 若boolean为真则pass
14
+ #
15
+ # assert_equal(expected, actual, message=nil)
16
+ # 若expected == actual则pass
17
+ #
18
+ # assert_not_equal(expected, actual, message="")
19
+ # 若expected != actual则pass
20
+ #
21
+ # assert_instance_of(klass, object, message="")
22
+ # 若klass == object.class为真则pass
23
+ #
24
+ # assert_nil(object, message="")
25
+ # 若object.nil?则pass
26
+ #
27
+ # assert_not_nil(object, message="")
28
+ # 若!object.nil?则pass
29
+ #
30
+ # assert_kind_of(klass, object, message="")
31
+ # 若object.kind_of?(klass)为真则pass
32
+ #
33
+ # assert_respond_to(object, method, message="")
34
+ # 若object.respond_to?(method)为真则pass
35
+ #
36
+ # assert_match(pattern, string, message="")
37
+ # 若string =~ pattern为真则pass
38
+ #
39
+ # assert_no_match(regexp, string, message="")
40
+ # 若regexp !~ string为真则pass
41
+ #
42
+ # assert_same(expected, actual, message="")
43
+ # 若actual.equal?(expected) 为真则 pass
44
+ #
45
+ # assert_not_same(expected, actual, message="")
46
+ # 若!actual.equal?(expected) 为真则 pass
47
+ #
48
+ # assert_operator(object1, operator, object2, message="")
49
+ # 若object1.send(operator, object2) 为真则 pass
50
+ #
51
+ # assert_raises(expected_exception_klass, message="") { ... }
52
+ # 执行块的内容引发异常, 若该异常属于expected_exception_klass类则pass
53
+ #
54
+ # assert_nothing_raised(*args) { ... }
55
+ # 执行块的内容, 若没有引发异常则pass
56
+ #
57
+ # flunk(message="")
58
+ # 通常会失败
59
+ #
60
+ # assert_throws(expected_symbol, message="") { ... }
61
+ # 执行块的内容,若:expected_symbol被throw了,则pass
62
+ #
63
+ # assert_nothing_thrown(message="") { ... }
64
+ # 执行块的内容, 若没有发生throw则pass
65
+ #
66
+ # assert_in_delta(expected_float, actual_float, delta, message="")
67
+ # 若(expected_float.to_f - actual_float.to_f).abs <= delta.to_f 为真则 pass
68
+ #
69
+ # delta必须是正数。
70
+ #
71
+ # assert_send(send_array, message="")
72
+ # 若send_array[0].__send__(send_array[1], *send_array[2..-1])为真则 pass
73
+ #
74
+ # assert_block(message="") { ... }
75
+ # 若block的结果为真则 pass
76
+
77
+ class MdpreviewTest < Test::Unit::TestCase
78
+ # include Mdpreview
79
+
80
+ def setup
81
+ @friends = ['dell', 'apple', 'sony']
82
+ end
83
+
84
+ def teardown
85
+ end
86
+
87
+ def test_add
88
+ # Mdpreview.hi "sss"
89
+
90
+
91
+ assert_instance_of(Array, @friends, "The @friends must be Array")
92
+
93
+ assert_equal(3, @friends.size, "The size is not 3")
94
+
95
+ @friends << 'acer'
96
+ assert_equal(4, @friends.size, "The size is not 4")
97
+ end
98
+
99
+
100
+ end
data/vendor/cur.file ADDED
@@ -0,0 +1,6 @@
1
+ ## 步骤
2
+
3
+ 1. 生成.toc目录,把template.html拷贝进去
4
+ 1. 生成preview目录
5
+ 1. 编译markdown到preview目录
6
+ 1. 读取路径,将css和js举例增加到template中
data/vendor/meta.js ADDED
@@ -0,0 +1 @@
1
+ /Volumes/data/Github/toc.md/README.md
File without changes
@@ -0,0 +1,33 @@
1
+ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
2
+ margin: 0;padding: 0;border: 0;outline: 0;font-weight: inherit;font-style: inherit;font-size: 100%;font-family: inherit;vertical-align: baseline;}
3
+ body {color: #2f332a;font: 15px/21px Arial, Helvetica, simsun, sans-serif;background: #f0f6e4 \9;}
4
+ h1, h2, h3, h4, h5, h6 {color: #2f332a;font-weight: bold;font-family: Helvetica, Arial, sans-serif;padding-bottom: 5px;}
5
+ h1 {font-size: 24px;line-height: 34px;text-align: center;}
6
+ h2 {font-size: 14px;line-height: 24px;padding-top: 5px;}
7
+ h6 {font-weight: normal;font-size: 12px;letter-spacing: 1px;line-height: 24px;text-align: center;}
8
+ a {color:#3C6E31;text-decoration: underline;}
9
+ a:hover {background-color:#3C6E31;color:white;}
10
+ input.radio {margin: 0 2px 0 8px;}
11
+ input.radio.first {margin-left:0;}
12
+ input.empty {color: lightgray;}
13
+ code {color: #2f332a;}
14
+ .highlight_red {color:#A60000;}
15
+ .highlight_green {color:#A7F43D;}
16
+ li {list-style: circle;font-size: 12px;}
17
+ li.title {list-style: none;}
18
+ ul.list {margin-left: 17px;}
19
+
20
+ div.content_wrap {width: 600px;height:380px;}
21
+ div.content_wrap div.left{float: left;width: 250px;}
22
+ div.content_wrap div.right{float: right;width: 340px;}
23
+ div.zTreeDemoBackground {width:250px;height:362px;text-align:left;}
24
+
25
+ ul.ztree {margin-top: 10px;border: 1px solid #617775;background: #f0f6e4;width:220px;height:360px;overflow-y:scroll;overflow-x:auto;}
26
+ ul.log {border: 1px solid #617775;background: #f0f6e4;width:300px;height:170px;overflow: hidden;}
27
+ ul.log.small {height:45px;}
28
+ ul.log li {color: #666666;list-style: none;padding-left: 10px;}
29
+ ul.log li.dark {background-color: #E3E3E3;}
30
+
31
+ /* ruler */
32
+ div.ruler {height:20px; width:220px; background-color:#f0f6e4;border: 1px solid #333; margin-bottom: 5px; cursor: pointer}
33
+ div.ruler div.cursor {height:20px; width:30px; background-color:#3C6E31; color:white; text-align: right; padding-right: 5px; cursor: pointer}
@@ -0,0 +1,97 @@
1
+ /*-------------------------------------
2
+ zTree Style
3
+
4
+ version: 3.4
5
+ author: Hunter.z
6
+ email: hunter.z@263.net
7
+ website: http://code.google.com/p/jquerytree/
8
+
9
+ -------------------------------------*/
10
+
11
+ .ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
12
+ .ztree {margin:0; padding:5px; color:#333}
13
+ .ztree li{padding:0; margin:0; list-style:none; line-height:14px; text-align:left; white-space:nowrap; outline:0}
14
+ .ztree li ul{ margin:0; padding:0 0 0 18px}
15
+ .ztree li ul.line{ background:url(./img/line_conn.gif) 0 0 repeat-y;}
16
+
17
+ .ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; height:17px; color:#333; background-color: transparent;
18
+ text-decoration:none; vertical-align:top; display: inline-block}
19
+ .ztree li a:hover {text-decoration:underline}
20
+ .ztree li a.curSelectedNode {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;}
21
+ .ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;}
22
+ .ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#316AC5; color:white; height:16px; border:1px #316AC5 solid;
23
+ opacity:0.8; filter:alpha(opacity=80)}
24
+ .ztree li a.tmpTargetNode_prev {}
25
+ .ztree li a.tmpTargetNode_next {}
26
+ .ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
27
+ font-size:12px; border:1px #7EC4CC solid; *border:0px}
28
+ .ztree li span {line-height:16px; margin-right:2px}
29
+ .ztree li span.button {line-height:0; margin:0; width:16px; height:16px; display: inline-block; vertical-align:middle;
30
+ border:0 none; cursor: pointer;outline:none;
31
+ background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
32
+ background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
33
+
34
+ .ztree li span.button.chk {width:13px; height:13px; margin:0 3px 0 0; cursor: auto}
35
+ .ztree li span.button.chk.checkbox_false_full {background-position:0 0}
36
+ .ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px}
37
+ .ztree li span.button.chk.checkbox_false_part {background-position:0 -28px}
38
+ .ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px}
39
+ .ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px}
40
+ .ztree li span.button.chk.checkbox_true_full {background-position:-14px 0}
41
+ .ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px}
42
+ .ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px}
43
+ .ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px}
44
+ .ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px}
45
+ .ztree li span.button.chk.radio_false_full {background-position:-28px 0}
46
+ .ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px}
47
+ .ztree li span.button.chk.radio_false_part {background-position:-28px -28px}
48
+ .ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px}
49
+ .ztree li span.button.chk.radio_false_disable {background-position:-28px -56px}
50
+ .ztree li span.button.chk.radio_true_full {background-position:-42px 0}
51
+ .ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px}
52
+ .ztree li span.button.chk.radio_true_part {background-position:-42px -28px}
53
+ .ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px}
54
+ .ztree li span.button.chk.radio_true_disable {background-position:-42px -56px}
55
+
56
+ .ztree li span.button.switch {width:18px; height:18px}
57
+ .ztree li span.button.root_open{background-position:-92px -54px}
58
+ .ztree li span.button.root_close{background-position:-74px -54px}
59
+ .ztree li span.button.roots_open{background-position:-92px 0}
60
+ .ztree li span.button.roots_close{background-position:-74px 0}
61
+ .ztree li span.button.center_open{background-position:-92px -18px}
62
+ .ztree li span.button.center_close{background-position:-74px -18px}
63
+ .ztree li span.button.bottom_open{background-position:-92px -36px}
64
+ .ztree li span.button.bottom_close{background-position:-74px -36px}
65
+ .ztree li span.button.noline_open{background-position:-92px -72px}
66
+ .ztree li span.button.noline_close{background-position:-74px -72px}
67
+ .ztree li span.button.root_docu{ background:none;}
68
+ .ztree li span.button.roots_docu{background-position:-56px 0}
69
+ .ztree li span.button.center_docu{background-position:-56px -18px}
70
+ .ztree li span.button.bottom_docu{background-position:-56px -36px}
71
+ .ztree li span.button.noline_docu{ background:none;}
72
+
73
+ .ztree li span.button.ico_open{margin-right:2px; background-position:-110px -16px; vertical-align:top; *vertical-align:middle}
74
+ .ztree li span.button.ico_close{margin-right:2px; background-position:-110px 0; vertical-align:top; *vertical-align:middle}
75
+ .ztree li span.button.ico_docu{margin-right:2px; background-position:-110px -32px; vertical-align:top; *vertical-align:middle}
76
+ .ztree li span.button.edit {margin-right:2px; background-position:-110px -48px; vertical-align:top; *vertical-align:middle}
77
+ .ztree li span.button.remove {margin-right:2px; background-position:-110px -64px; vertical-align:top; *vertical-align:middle}
78
+
79
+ .ztree li span.button.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle}
80
+
81
+ ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
82
+
83
+ span.tmpzTreeMove_arrow {width:16px; height:16px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute;
84
+ background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
85
+ background-position:-110px -80px; background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
86
+
87
+ ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
88
+ .zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
89
+
90
+ /* level style*/
91
+ /*.ztree li span.button.level0 {
92
+ display:none;
93
+ }
94
+ .ztree li ul.level0 {
95
+ padding:0;
96
+ background:none;
97
+ }*/