mongowiki 1.0.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +6 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +103 -0
- data/README.md +39 -0
- data/Rakefile +21 -0
- data/lib/assets/javascripts/application.js +6 -0
- data/lib/assets/javascripts/jquery.autoSearch.js +83 -0
- data/lib/assets/javascripts/jquery.preventTab.js +13 -0
- data/lib/assets/stylesheets/application.css +71 -0
- data/lib/assets/stylesheets/articles.css +53 -0
- data/lib/assets/stylesheets/buttons.css +127 -0
- data/lib/assets/stylesheets/coderay.css +133 -0
- data/lib/assets/stylesheets/error.css +17 -0
- data/lib/assets/stylesheets/forms.css +66 -0
- data/lib/assets/stylesheets/reset.css +48 -0
- data/lib/assets/stylesheets/search.css +77 -0
- data/lib/mongowiki.rb +47 -0
- data/lib/mongowiki/app.rb +61 -0
- data/lib/mongowiki/articles.rb +67 -0
- data/lib/mongowiki/helpers.rb +2 -0
- data/lib/mongowiki/helpers/markdown_helper.rb +18 -0
- data/lib/mongowiki/helpers/message_helper.rb +28 -0
- data/lib/mongowiki/models/article.rb +15 -0
- data/lib/mongowiki/search.rb +30 -0
- data/lib/mongowiki/version.rb +3 -0
- data/lib/views/404.erb +6 -0
- data/lib/views/article/edit.erb +2 -0
- data/lib/views/article/form.erb +23 -0
- data/lib/views/article/list.erb +8 -0
- data/lib/views/article/new.erb +2 -0
- data/lib/views/article/show.erb +12 -0
- data/lib/views/error.erb +16 -0
- data/lib/views/layout.erb +36 -0
- data/lib/views/search/articles.erb +7 -0
- data/lib/views/search/articles.rabl +8 -0
- data/mongowiki.gemspec +49 -0
- data/test/test_helper.rb +7 -0
- data/test/unit/application_test.rb +22 -0
- metadata +408 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
mongowiki (0.1.1)
|
5
|
+
activesupport (~> 3.2.0)
|
6
|
+
bson_ext (~> 1.5)
|
7
|
+
coderay (~> 1.0.6)
|
8
|
+
mongoid (~> 2.4)
|
9
|
+
mongoid_search (~> 0.2.7)
|
10
|
+
rabl (~> 0.6.10)
|
11
|
+
rack (~> 1.4.1)
|
12
|
+
rack-cache (~> 1.1.0)
|
13
|
+
rack-contrib (~> 1.1.0)
|
14
|
+
redcarpet (~> 2.1.0)
|
15
|
+
sass (~> 3.1.17)
|
16
|
+
sinatra (~> 1.3.2)
|
17
|
+
sinatra-contrib (~> 1.3.1)
|
18
|
+
sprockets (~> 2.1.2)
|
19
|
+
sprockets-helpers (~> 0.3.0)
|
20
|
+
yajl-ruby (~> 1.1.0)
|
21
|
+
|
22
|
+
GEM
|
23
|
+
remote: http://rubygems.org/
|
24
|
+
specs:
|
25
|
+
activemodel (3.2.3)
|
26
|
+
activesupport (= 3.2.3)
|
27
|
+
builder (~> 3.0.0)
|
28
|
+
activesupport (3.2.3)
|
29
|
+
i18n (~> 0.6)
|
30
|
+
multi_json (~> 1.0)
|
31
|
+
backports (2.5.1)
|
32
|
+
bson (1.6.2)
|
33
|
+
bson_ext (1.6.2)
|
34
|
+
bson (~> 1.6.2)
|
35
|
+
builder (3.0.0)
|
36
|
+
coderay (1.0.6)
|
37
|
+
eventmachine (0.12.10)
|
38
|
+
fast-stemmer (1.0.1)
|
39
|
+
hike (1.2.1)
|
40
|
+
i18n (0.6.0)
|
41
|
+
kgio (2.7.4)
|
42
|
+
minitest (2.8.1)
|
43
|
+
mongo (1.6.2)
|
44
|
+
bson (~> 1.6.2)
|
45
|
+
mongoid (2.4.9)
|
46
|
+
activemodel (~> 3.1)
|
47
|
+
mongo (~> 1.3)
|
48
|
+
tzinfo (~> 0.3.22)
|
49
|
+
mongoid_search (0.2.7)
|
50
|
+
bson_ext (>= 1.2)
|
51
|
+
fast-stemmer (~> 1.0.0)
|
52
|
+
mongoid (>= 2.0.0)
|
53
|
+
multi_json (1.3.4)
|
54
|
+
rabl (0.6.10)
|
55
|
+
activesupport (>= 2.3.14)
|
56
|
+
multi_json (~> 1.0)
|
57
|
+
rack (1.4.1)
|
58
|
+
rack-cache (1.1)
|
59
|
+
rack (>= 0.4)
|
60
|
+
rack-contrib (1.1.0)
|
61
|
+
rack (>= 0.9.1)
|
62
|
+
rack-protection (1.2.0)
|
63
|
+
rack
|
64
|
+
rack-test (0.6.1)
|
65
|
+
rack (>= 1.0)
|
66
|
+
raindrops (0.8.0)
|
67
|
+
redcarpet (2.1.1)
|
68
|
+
sass (3.1.17)
|
69
|
+
sinatra (1.3.2)
|
70
|
+
rack (~> 1.3, >= 1.3.6)
|
71
|
+
rack-protection (~> 1.2)
|
72
|
+
tilt (~> 1.3, >= 1.3.3)
|
73
|
+
sinatra-contrib (1.3.1)
|
74
|
+
backports (>= 2.0)
|
75
|
+
eventmachine
|
76
|
+
rack-protection
|
77
|
+
rack-test
|
78
|
+
sinatra (~> 1.3.0)
|
79
|
+
tilt (~> 1.3)
|
80
|
+
sprockets (2.1.3)
|
81
|
+
hike (~> 1.2)
|
82
|
+
rack (~> 1.0)
|
83
|
+
tilt (~> 1.1, != 1.3.0)
|
84
|
+
sprockets-helpers (0.3.0)
|
85
|
+
sprockets (~> 2.0)
|
86
|
+
tilt (1.3.3)
|
87
|
+
tzinfo (0.3.33)
|
88
|
+
unicorn (4.2.1)
|
89
|
+
kgio (~> 2.6)
|
90
|
+
rack
|
91
|
+
raindrops (~> 0.7)
|
92
|
+
yajl-ruby (1.1.0)
|
93
|
+
yard (0.7.5)
|
94
|
+
|
95
|
+
PLATFORMS
|
96
|
+
ruby
|
97
|
+
|
98
|
+
DEPENDENCIES
|
99
|
+
minitest (~> 2.8.1)
|
100
|
+
mongowiki!
|
101
|
+
rack-test (~> 0.6.1)
|
102
|
+
unicorn
|
103
|
+
yard (~> 0.7.3)
|
data/README.md
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
mongowiki
|
2
|
+
=========
|
3
|
+
|
4
|
+
mongowiki is an sinatra-based rack-application which saves all data to an mongodb
|
5
|
+
|
6
|
+
Installation
|
7
|
+
------------
|
8
|
+
|
9
|
+
$ gem install mongowiki
|
10
|
+
|
11
|
+
create a *config.ru* file somewhere on your filesystem, which is in my case */var/apps/mongowiki*
|
12
|
+
|
13
|
+
ENV['MONGO_URL'] = "mongodb://SERVER:27017/database"
|
14
|
+
|
15
|
+
require 'mongowiki'
|
16
|
+
run MongoWiki.run!
|
17
|
+
|
18
|
+
depending on how your mongodb server is configured, you need to set the corresponding environment variables.
|
19
|
+
|
20
|
+
Environment variables
|
21
|
+
--------------------
|
22
|
+
|
23
|
+
You can set all this variables in your **config.ru**
|
24
|
+
|
25
|
+
**MONGO_URL**
|
26
|
+
URI to the MongoDB instance. For example: mongodb://username:passwort@server:27017/database
|
27
|
+
|
28
|
+
Contribution
|
29
|
+
------------
|
30
|
+
|
31
|
+
### Patches & Pull Requests
|
32
|
+
|
33
|
+
You want to add a feature or you want to patch mongowiki?
|
34
|
+
|
35
|
+
1. Fork the project.
|
36
|
+
2. Make your feature addition or bug fix.
|
37
|
+
3. Add tests for it. This is important so I don't break it in a future version unintentionally.
|
38
|
+
4. Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
39
|
+
5. Send me a pull request. Bonus points for topic branches.
|
data/Rakefile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "rake/testtask"
|
3
|
+
require "yard"
|
4
|
+
|
5
|
+
desc "generate documentation"
|
6
|
+
YARD::Rake::YardocTask.new do |t|
|
7
|
+
t.files << 'lib/**/*.rb'
|
8
|
+
end
|
9
|
+
|
10
|
+
namespace :test do
|
11
|
+
Rake::TestTask.new(:unit) do |task|
|
12
|
+
task.libs << "test"
|
13
|
+
task.test_files = FileList["test/unit/**/*_test.rb"]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
task :test do
|
18
|
+
Rake::Task["test:unit"].invoke
|
19
|
+
end
|
20
|
+
|
21
|
+
task :default => [:test, :build, :yard]
|
@@ -0,0 +1,83 @@
|
|
1
|
+
(function($){
|
2
|
+
$.fn.autoSearch = function(url, options) {
|
3
|
+
|
4
|
+
var input = $(this);
|
5
|
+
var requestRunning = false;
|
6
|
+
var request;
|
7
|
+
|
8
|
+
var defaults = {
|
9
|
+
minLength: 1,
|
10
|
+
queryParam: 'query',
|
11
|
+
noResultsClass: 'no-results',
|
12
|
+
resultListClass: 'result-list',
|
13
|
+
resultItemClass: 'result-item',
|
14
|
+
itemTitleClass: 'item-title',
|
15
|
+
itemExcerptClass: 'item-content'
|
16
|
+
};
|
17
|
+
|
18
|
+
var opts = $.extend(defaults, options);
|
19
|
+
|
20
|
+
$(input).keyup(function(event) {
|
21
|
+
event.preventDefault();
|
22
|
+
var query = $(input).val();
|
23
|
+
|
24
|
+
if(requestRunning) {
|
25
|
+
request.abort();
|
26
|
+
}
|
27
|
+
|
28
|
+
var resultList = $('.' + opts.resultListClass);
|
29
|
+
if(resultList.length <= 0) {
|
30
|
+
resultList = document.createElement('ul');
|
31
|
+
$(resultList).attr('class', opts.resultListClass);
|
32
|
+
$(resultList).appendTo(input.parent());
|
33
|
+
$(resultList).bind('mouseleave', function() {
|
34
|
+
$(resultList).hide();
|
35
|
+
});
|
36
|
+
}
|
37
|
+
$(resultList).hide();
|
38
|
+
|
39
|
+
if(query.length >= opts.minLength) {
|
40
|
+
$(resultList).empty();
|
41
|
+
runningRequest = true;
|
42
|
+
request = $.getJSON(url + '?' + opts.queryParam + '=' + query, function(data){
|
43
|
+
var articles = data.articles
|
44
|
+
if( articles.length > 0 ) {
|
45
|
+
|
46
|
+
if(input.hasClass(opts.noResultsClass)) {
|
47
|
+
$(input).removeClass(opts.noResultsClass);
|
48
|
+
}
|
49
|
+
|
50
|
+
$.each(articles, function(i, item) {
|
51
|
+
|
52
|
+
var listItem = document.createElement("li");
|
53
|
+
$(listItem).attr('class', opts.resultItemClass);
|
54
|
+
|
55
|
+
var link = document.createElement("a");
|
56
|
+
$(link).attr('class', opts.itemTitleClass);
|
57
|
+
$(link).attr('href', item.url);
|
58
|
+
$(link).appendTo(listItem);
|
59
|
+
|
60
|
+
var title = document.createElement("h2");
|
61
|
+
$(title).text(item.title);
|
62
|
+
$(title).appendTo(link);
|
63
|
+
|
64
|
+
var content = document.createElement("div");
|
65
|
+
$(content).attr('class', opts.itemExcerptClass);
|
66
|
+
$(content).text(item.excerpt);
|
67
|
+
$(content).appendTo(listItem);
|
68
|
+
|
69
|
+
$(listItem).appendTo(resultList);
|
70
|
+
|
71
|
+
});
|
72
|
+
$(resultList).show();
|
73
|
+
runningRequest = false;
|
74
|
+
} else {
|
75
|
+
$(resultList).hide();
|
76
|
+
$(input).addClass(opts.noResultsClass);
|
77
|
+
runningRequest = false;
|
78
|
+
}
|
79
|
+
});
|
80
|
+
}
|
81
|
+
});
|
82
|
+
};
|
83
|
+
})(jQuery);
|
@@ -0,0 +1,13 @@
|
|
1
|
+
(function($){
|
2
|
+
$.fn.preventTab = function() {
|
3
|
+
$(this).keydown(function(e) {
|
4
|
+
// when the user presses the tab key
|
5
|
+
if(e.keyCode == 9) {
|
6
|
+
// preventing default behaviour
|
7
|
+
e.preventDefault();
|
8
|
+
// append tab to field value
|
9
|
+
this.value += '\t'
|
10
|
+
}
|
11
|
+
});
|
12
|
+
}
|
13
|
+
})(jQuery);
|
@@ -0,0 +1,71 @@
|
|
1
|
+
//= require reset
|
2
|
+
//= require_tree .
|
3
|
+
//= require_self
|
4
|
+
|
5
|
+
body {
|
6
|
+
color: #000;
|
7
|
+
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
8
|
+
background-color: #DDD;
|
9
|
+
}
|
10
|
+
|
11
|
+
h1, h2, h3, h4, h5, h6 {
|
12
|
+
font-weight: bold;
|
13
|
+
}
|
14
|
+
|
15
|
+
strong,b {
|
16
|
+
font-weight: bolder;
|
17
|
+
}
|
18
|
+
|
19
|
+
#wrapper {
|
20
|
+
width: 960px;
|
21
|
+
margin: 0 auto;
|
22
|
+
padding: 0 12px;
|
23
|
+
}
|
24
|
+
|
25
|
+
#wrapper #main-bar {
|
26
|
+
margin: 20px 0;
|
27
|
+
}
|
28
|
+
|
29
|
+
#navigation .list li {
|
30
|
+
display: inline-block;
|
31
|
+
margin: 0 5px 0 0;
|
32
|
+
}
|
33
|
+
|
34
|
+
#wrapper .title {
|
35
|
+
font-size: 20px;
|
36
|
+
font-weight: bold;
|
37
|
+
margin: 15px 0;
|
38
|
+
}
|
39
|
+
|
40
|
+
/*** FLOAT ***/
|
41
|
+
.left {
|
42
|
+
float: left;
|
43
|
+
}
|
44
|
+
|
45
|
+
.right {
|
46
|
+
float: right;
|
47
|
+
text-align: left;
|
48
|
+
}
|
49
|
+
|
50
|
+
.clear {
|
51
|
+
clear: both;
|
52
|
+
display: block;
|
53
|
+
overflow: hidden;
|
54
|
+
visibility: hidden;
|
55
|
+
width: 0;
|
56
|
+
height: 0;
|
57
|
+
}
|
58
|
+
|
59
|
+
.clearfix:before,
|
60
|
+
.clearfix:after {
|
61
|
+
content: '.';
|
62
|
+
display: block;
|
63
|
+
overflow: hidden;
|
64
|
+
visibility: hidden;
|
65
|
+
font-size: 0;
|
66
|
+
line-height: 0;
|
67
|
+
width: 0;
|
68
|
+
height: 0;
|
69
|
+
}
|
70
|
+
|
71
|
+
.clearfix:after { clear: both; }
|
@@ -0,0 +1,53 @@
|
|
1
|
+
.article .title {
|
2
|
+
margin: 15px 0 5px 0;
|
3
|
+
}
|
4
|
+
|
5
|
+
.article .text,
|
6
|
+
ul.articles {
|
7
|
+
padding: 15px;
|
8
|
+
margin: 5px 0;
|
9
|
+
font-family: "Helvetica Neue", Helvetica, serif;
|
10
|
+
font-size: 16px;
|
11
|
+
|
12
|
+
border-radius: 5px;
|
13
|
+
-o-border-radius: 5px;
|
14
|
+
-moz-border-radius: 5px;
|
15
|
+
-webkit-border-radius: 5px;
|
16
|
+
|
17
|
+
background: rgb(240,240,240);
|
18
|
+
border: 1px solid #CCC;
|
19
|
+
}
|
20
|
+
|
21
|
+
.article .text p {
|
22
|
+
margin: 10px 0;
|
23
|
+
}
|
24
|
+
|
25
|
+
.article .text a {
|
26
|
+
color: #000
|
27
|
+
}
|
28
|
+
|
29
|
+
.article .text a:hover {
|
30
|
+
color: #666
|
31
|
+
}
|
32
|
+
|
33
|
+
.article .text ol {
|
34
|
+
list-style-type: square;
|
35
|
+
list-style-position: inside;
|
36
|
+
}
|
37
|
+
|
38
|
+
.article .text ol li {
|
39
|
+
margin-top: 5px;
|
40
|
+
}
|
41
|
+
|
42
|
+
.article .actions {
|
43
|
+
margin-top: 20px;
|
44
|
+
}
|
45
|
+
|
46
|
+
ul.articles li.article {
|
47
|
+
display: block;
|
48
|
+
padding: 5px 0;
|
49
|
+
}
|
50
|
+
|
51
|
+
ul.articles li.article a {
|
52
|
+
color: #000;
|
53
|
+
}
|
@@ -0,0 +1,127 @@
|
|
1
|
+
input[type='submit'].button {
|
2
|
+
outline: none;
|
3
|
+
}
|
4
|
+
|
5
|
+
.button {
|
6
|
+
display: inline-block;
|
7
|
+
margin: 0;
|
8
|
+
|
9
|
+
border-radius: 5px;
|
10
|
+
-o-border-radius: 5px;
|
11
|
+
-moz-border-radius: 5px;
|
12
|
+
-webkit-border-radius: 5px;
|
13
|
+
|
14
|
+
color: #FFF;
|
15
|
+
text-decoration: none;
|
16
|
+
text-shadow: #000 1px 1px 0.2em;
|
17
|
+
|
18
|
+
font-weight: bold;
|
19
|
+
font-size: 12px;
|
20
|
+
padding: 10px;
|
21
|
+
background-image: linear-gradient(bottom, rgb(187,177,177) 1%, rgb(217,212,212) 100%);
|
22
|
+
background-image: -o-linear-gradient(bottom, rgb(187,177,177) 1%, rgb(217,212,212) 100%);
|
23
|
+
background-image: -moz-linear-gradient(bottom, rgb(187,177,177) 1%, rgb(217,212,212) 100%);
|
24
|
+
background-image: -webkit-linear-gradient(bottom, rgb(187,177,177) 1%, rgb(217,212,212) 100%);
|
25
|
+
background-image: -ms-linear-gradient(bottom, rgb(187,177,177) 1%, rgb(217,212,212) 100%);
|
26
|
+
background-image: -webkit-gradient(
|
27
|
+
linear,
|
28
|
+
left bottom,
|
29
|
+
left top,
|
30
|
+
color-stop(0.01, rgb(187,177,177)),
|
31
|
+
color-stop(1, rgb(217,212,212))
|
32
|
+
);
|
33
|
+
|
34
|
+
border-top: none;
|
35
|
+
border-left: 1px solid rgb(187,177,177);
|
36
|
+
border-right: 1px solid rgb(187,177,177);
|
37
|
+
border-bottom: 1px solid rgb(187,177,177);
|
38
|
+
|
39
|
+
outline: none;
|
40
|
+
margin: 0;
|
41
|
+
}
|
42
|
+
|
43
|
+
.button:hover {
|
44
|
+
background-image: linear-gradient(bottom, rgb(187,177,177) 100%, rgb(217,212,212) 1%);
|
45
|
+
background-image: -o-linear-gradient(bottom, rgb(187,177,177) 100%, rgb(217,212,212) 1%);
|
46
|
+
background-image: -moz-linear-gradient(bottom, rgb(187,177,177) 100%, rgb(217,212,212) 1%);
|
47
|
+
background-image: -webkit-linear-gradient(bottom, rgb(187,177,177) 100%, rgb(217,212,212) 1%);
|
48
|
+
background-image: -ms-linear-gradient(bottom, rgb(187,177,177) 100%, rgb(217,212,212) 1%);
|
49
|
+
background-image: -webkit-gradient(
|
50
|
+
linear,
|
51
|
+
left bottom,
|
52
|
+
left top,
|
53
|
+
color-stop(1, rgb(187,177,177)),
|
54
|
+
color-stop(0.01, rgb(217,212,212))
|
55
|
+
);
|
56
|
+
}
|
57
|
+
|
58
|
+
.button.red {
|
59
|
+
background-image: linear-gradient(bottom, rgb(170,11,0) 1%, rgb(221,14,0) 100%);
|
60
|
+
background-image: -o-linear-gradient(bottom, rgb(170,11,0) 1%, rgb(221,14,0) 100%);
|
61
|
+
background-image: -moz-linear-gradient(bottom, rgb(170,11,0) 1%, rgb(221,14,0) 100%);
|
62
|
+
background-image: -webkit-linear-gradient(bottom, rgb(170,11,0) 1%, rgb(221,14,0) 100%);
|
63
|
+
background-image: -ms-linear-gradient(bottom, rgb(170,11,0) 1%, rgb(221,14,0) 100%);
|
64
|
+
background-image: -webkit-gradient(
|
65
|
+
linear,
|
66
|
+
left bottom,
|
67
|
+
left top,
|
68
|
+
color-stop(0.01, rgb(170,11,0)),
|
69
|
+
color-stop(1, rgb(221,14,0))
|
70
|
+
);
|
71
|
+
|
72
|
+
border-top: none;
|
73
|
+
border-left: 1px solid rgb(144,9,0);
|
74
|
+
border-right: 1px solid rgb(144,9,0);
|
75
|
+
border-bottom: 1px solid rgb(144,9,0);
|
76
|
+
}
|
77
|
+
|
78
|
+
.button.red:hover {
|
79
|
+
background-image: linear-gradient(bottom, rgb(170,11,0) 100%, rgb(221,14,0) 1%);
|
80
|
+
background-image: -o-linear-gradient(bottom, rgb(170,11,0) 100%, rgb(221,14,0) 1%);
|
81
|
+
background-image: -moz-linear-gradient(bottom, rgb(170,11,0) 100%, rgb(221,14,0) 1%);
|
82
|
+
background-image: -webkit-linear-gradient(bottom, rgb(170,11,0) 100%, rgb(221,14,0) 1%);
|
83
|
+
background-image: -ms-linear-gradient(bottom, rgb(170,11,0) 100%, rgb(221,14,0) 1%);
|
84
|
+
background-image: -webkit-gradient(
|
85
|
+
linear,
|
86
|
+
left bottom,
|
87
|
+
left top,
|
88
|
+
color-stop(1, rgb(170,11,0)),
|
89
|
+
color-stop(0.01, rgb(221,14,0))
|
90
|
+
);
|
91
|
+
}
|
92
|
+
|
93
|
+
.button.blue {
|
94
|
+
background-image: linear-gradient(bottom, rgb(33,150,204) 1%, rgb(103,200,235) 100%);
|
95
|
+
background-image: -o-linear-gradient(bottom, rgb(33,150,204) 1%, rgb(103,200,235) 100%);
|
96
|
+
background-image: -moz-linear-gradient(bottom, rgb(33,150,204) 1%, rgb(103,200,235) 100%);
|
97
|
+
background-image: -webkit-linear-gradient(bottom, rgb(33,150,204) 1%, rgb(103,200,235) 100%);
|
98
|
+
background-image: -ms-linear-gradient(bottom, rgb(33,150,204) 1%, rgb(103,200,235) 100%);
|
99
|
+
background-image: -webkit-gradient(
|
100
|
+
linear,
|
101
|
+
left bottom,
|
102
|
+
left top,
|
103
|
+
color-stop(0.01, rgb(33,150,204)),
|
104
|
+
color-stop(1, rgb(103,200,235))
|
105
|
+
);
|
106
|
+
|
107
|
+
border-top: none;
|
108
|
+
border-left: 1px solid #0080FF;
|
109
|
+
border-right: 1px solid #0080FF;
|
110
|
+
border-bottom: 1px solid #579CDC;
|
111
|
+
}
|
112
|
+
|
113
|
+
.button.blue:hover {
|
114
|
+
background-image: linear-gradient(bottom, rgb(33,150,204) 100%, rgb(103,200,235) 1%);
|
115
|
+
background-image: -o-linear-gradient(bottom, rgb(33,150,204) 100%, rgb(103,200,235) 1%);
|
116
|
+
background-image: -moz-linear-gradient(bottom, rgb(33,150,204) 100%, rgb(103,200,235) 1%);
|
117
|
+
background-image: -webkit-linear-gradient(bottom, rgb(33,150,204) 100%, rgb(103,200,235) 1%);
|
118
|
+
background-image: -ms-linear-gradient(bottom, rgb(33,150,204) 100%, rgb(103,200,235) 1%);
|
119
|
+
background-image: -webkit-gradient(
|
120
|
+
linear,
|
121
|
+
left bottom,
|
122
|
+
left top,
|
123
|
+
color-stop(1, rgb(33,150,204)),
|
124
|
+
color-stop(0.01, rgb(103,200,235))
|
125
|
+
);
|
126
|
+
|
127
|
+
}
|