spud_media 0.4.1 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +40 -0
- data/app/assets/javascripts/spud/admin/media/application.js +0 -0
- data/app/assets/libs/tiny_mce/plugins/spud_media/blank.htm +12 -0
- data/app/assets/libs/tiny_mce/plugins/spud_media/css/template.css +23 -0
- data/app/assets/libs/tiny_mce/plugins/spud_media/editor_plugin.js +1 -0
- data/app/assets/libs/tiny_mce/plugins/spud_media/editor_plugin_src.js +159 -0
- data/app/assets/libs/tiny_mce/plugins/spud_media/js/template.js +106 -0
- data/app/assets/libs/tiny_mce/plugins/spud_media/langs/en_dlg.js +1 -0
- data/app/assets/libs/tiny_mce/plugins/spud_media/template.htm +31 -0
- data/app/assets/stylesheets/spud/admin/media/application.css +3 -0
- data/app/controllers/spud/admin/media_controller.rb +1 -1
- data/app/views/layouts/spud/admin/media/detail.html.erb +4 -0
- data/app/views/spud/admin/media/index.html.erb +3 -3
- data/app/views/spud/admin/media/new.html.erb +12 -15
- data/db/migrate/20120101194256_create_spud_media.rb +11 -0
- data/lib/spud_media/version.rb +5 -0
- data/lib/tasks/spud_media_tasks.rake +4 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +15 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config/application.rb +56 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- metadata +173 -15
- data/config/application.rb +0 -50
- data/config/boot.rb +0 -6
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2012 YOURNAME
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
begin
|
3
|
+
require 'bundler/setup'
|
4
|
+
rescue LoadError
|
5
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
6
|
+
end
|
7
|
+
begin
|
8
|
+
require 'rdoc/task'
|
9
|
+
rescue LoadError
|
10
|
+
require 'rdoc/rdoc'
|
11
|
+
require 'rake/rdoctask'
|
12
|
+
RDoc::Task = Rake::RDocTask
|
13
|
+
end
|
14
|
+
|
15
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
16
|
+
rdoc.rdoc_dir = 'rdoc'
|
17
|
+
rdoc.title = 'SpudMedia'
|
18
|
+
rdoc.options << '--line-numbers'
|
19
|
+
rdoc.rdoc_files.include('README.rdoc')
|
20
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
21
|
+
end
|
22
|
+
|
23
|
+
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
24
|
+
load 'rails/tasks/engine.rake'
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
Bundler::GemHelper.install_tasks
|
29
|
+
|
30
|
+
require 'rake/testtask'
|
31
|
+
|
32
|
+
Rake::TestTask.new(:test) do |t|
|
33
|
+
t.libs << 'lib'
|
34
|
+
t.libs << 'test'
|
35
|
+
t.pattern = 'test/**/*_test.rb'
|
36
|
+
t.verbose = false
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
task :default => :test
|
File without changes
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
2
|
+
<head>
|
3
|
+
<title>blank_page</title>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
5
|
+
<script type="text/javascript">
|
6
|
+
parent.TemplateDialog.loadCSSFiles(document);
|
7
|
+
</script>
|
8
|
+
</head>
|
9
|
+
<body id="mceTemplatePreview" class="mceContentBody">
|
10
|
+
|
11
|
+
</body>
|
12
|
+
</html>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#frmbody {
|
2
|
+
padding: 10px;
|
3
|
+
background-color: #FFF;
|
4
|
+
border: 1px solid #CCC;
|
5
|
+
}
|
6
|
+
|
7
|
+
.frmRow {
|
8
|
+
margin-bottom: 10px;
|
9
|
+
}
|
10
|
+
|
11
|
+
#templatesrc {
|
12
|
+
border: none;
|
13
|
+
width: 320px;
|
14
|
+
height: 240px;
|
15
|
+
}
|
16
|
+
|
17
|
+
.title {
|
18
|
+
padding-bottom: 5px;
|
19
|
+
}
|
20
|
+
|
21
|
+
.mceActionPanel {
|
22
|
+
padding-top: 5px;
|
23
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.TemplatePlugin",{init:function(b,c){var d=this;d.editor=b;b.addCommand("mceTemplate",function(e){b.windowManager.open({file:c+"/template.htm",width:b.getParam("template_popup_width",750),height:b.getParam("template_popup_height",600),inline:1},{plugin_url:c})});b.addCommand("mceInsertTemplate",d._insertTemplate,d);b.addButton("template",{title:"template.desc",cmd:"mceTemplate"});b.onPreProcess.add(function(e,g){var f=e.dom;a(f.select("div",g.node),function(h){if(f.hasClass(h,"mceTmpl")){a(f.select("*",h),function(i){if(f.hasClass(i,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){i.innerHTML=d._getDateTime(new Date(),e.getParam("template_mdate_format",e.getLang("template.mdate_format")))}});d._replaceVals(h)}})})},getInfo:function(){return{longname:"Template plugin",author:"Moxiecode Systems AB",authorurl:"http://www.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_insertTemplate:function(i,j){var k=this,g=k.editor,f,c,d=g.dom,b=g.selection.getContent();f=j.content;a(k.editor.getParam("template_replace_values"),function(l,h){if(typeof(l)!="function"){f=f.replace(new RegExp("\\{\\$"+h+"\\}","g"),l)}});c=d.create("div",null,f);n=d.select(".mceTmpl",c);if(n&&n.length>0){c=d.create("div",null);c.appendChild(n[0].cloneNode(true))}function e(l,h){return new RegExp("\\b"+h+"\\b","g").test(l.className)}a(d.select("*",c),function(h){if(e(h,g.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_cdate_format",g.getLang("template.cdate_format")))}if(e(h,g.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_mdate_format",g.getLang("template.mdate_format")))}if(e(h,g.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))){h.innerHTML=b}});k._replaceVals(c);g.execCommand("mceInsertContent",false,c.innerHTML);g.addVisual()},_replaceVals:function(c){var d=this.editor.dom,b=this.editor.getParam("template_replace_values");a(d.select("*",c),function(f){a(b,function(g,e){if(d.hasClass(f,e)){if(typeof(b[e])=="function"){b[e](f)}}})})},_getDateTime:function(e,b){if(!b){return""}function c(g,d){var f;g=""+g;if(g.length<d){for(f=0;f<(d-g.length);f++){g="0"+g}}return g}b=b.replace("%D","%m/%d/%y");b=b.replace("%r","%I:%M:%S %p");b=b.replace("%Y",""+e.getFullYear());b=b.replace("%y",""+e.getYear());b=b.replace("%m",c(e.getMonth()+1,2));b=b.replace("%d",c(e.getDate(),2));b=b.replace("%H",""+c(e.getHours(),2));b=b.replace("%M",""+c(e.getMinutes(),2));b=b.replace("%S",""+c(e.getSeconds(),2));b=b.replace("%I",""+((e.getHours()+11)%12+1));b=b.replace("%p",""+(e.getHours()<12?"AM":"PM"));b=b.replace("%B",""+this.editor.getLang("template_months_long").split(",")[e.getMonth()]);b=b.replace("%b",""+this.editor.getLang("template_months_short").split(",")[e.getMonth()]);b=b.replace("%A",""+this.editor.getLang("template_day_long").split(",")[e.getDay()]);b=b.replace("%a",""+this.editor.getLang("template_day_short").split(",")[e.getDay()]);b=b.replace("%%","%");return b}});tinymce.PluginManager.add("template",tinymce.plugins.TemplatePlugin)})();
|
@@ -0,0 +1,159 @@
|
|
1
|
+
/**
|
2
|
+
* editor_plugin_src.js
|
3
|
+
*
|
4
|
+
* Copyright 2009, Moxiecode Systems AB
|
5
|
+
* Released under LGPL License.
|
6
|
+
*
|
7
|
+
* License: http://tinymce.moxiecode.com/license
|
8
|
+
* Contributing: http://tinymce.moxiecode.com/contributing
|
9
|
+
*/
|
10
|
+
|
11
|
+
(function() {
|
12
|
+
var each = tinymce.each;
|
13
|
+
|
14
|
+
tinymce.create('tinymce.plugins.TemplatePlugin', {
|
15
|
+
init : function(ed, url) {
|
16
|
+
var t = this;
|
17
|
+
|
18
|
+
t.editor = ed;
|
19
|
+
|
20
|
+
// Register commands
|
21
|
+
ed.addCommand('mceTemplate', function(ui) {
|
22
|
+
ed.windowManager.open({
|
23
|
+
file : url + '/template.htm',
|
24
|
+
width : ed.getParam('template_popup_width', 750),
|
25
|
+
height : ed.getParam('template_popup_height', 600),
|
26
|
+
inline : 1
|
27
|
+
}, {
|
28
|
+
plugin_url : url
|
29
|
+
});
|
30
|
+
});
|
31
|
+
|
32
|
+
ed.addCommand('mceInsertTemplate', t._insertTemplate, t);
|
33
|
+
|
34
|
+
// Register buttons
|
35
|
+
ed.addButton('template', {title : 'template.desc', cmd : 'mceTemplate'});
|
36
|
+
|
37
|
+
ed.onPreProcess.add(function(ed, o) {
|
38
|
+
var dom = ed.dom;
|
39
|
+
|
40
|
+
each(dom.select('div', o.node), function(e) {
|
41
|
+
if (dom.hasClass(e, 'mceTmpl')) {
|
42
|
+
each(dom.select('*', e), function(e) {
|
43
|
+
if (dom.hasClass(e, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|')))
|
44
|
+
e.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format")));
|
45
|
+
});
|
46
|
+
|
47
|
+
t._replaceVals(e);
|
48
|
+
}
|
49
|
+
});
|
50
|
+
});
|
51
|
+
},
|
52
|
+
|
53
|
+
getInfo : function() {
|
54
|
+
return {
|
55
|
+
longname : 'Template plugin',
|
56
|
+
author : 'Moxiecode Systems AB',
|
57
|
+
authorurl : 'http://www.moxiecode.com',
|
58
|
+
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',
|
59
|
+
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
60
|
+
};
|
61
|
+
},
|
62
|
+
|
63
|
+
_insertTemplate : function(ui, v) {
|
64
|
+
var t = this, ed = t.editor, h, el, dom = ed.dom, sel = ed.selection.getContent();
|
65
|
+
|
66
|
+
h = v.content;
|
67
|
+
|
68
|
+
each(t.editor.getParam('template_replace_values'), function(v, k) {
|
69
|
+
if (typeof(v) != 'function')
|
70
|
+
h = h.replace(new RegExp('\\{\\$' + k + '\\}', 'g'), v);
|
71
|
+
});
|
72
|
+
|
73
|
+
el = dom.create('div', null, h);
|
74
|
+
|
75
|
+
// Find template element within div
|
76
|
+
n = dom.select('.mceTmpl', el);
|
77
|
+
if (n && n.length > 0) {
|
78
|
+
el = dom.create('div', null);
|
79
|
+
el.appendChild(n[0].cloneNode(true));
|
80
|
+
}
|
81
|
+
|
82
|
+
function hasClass(n, c) {
|
83
|
+
return new RegExp('\\b' + c + '\\b', 'g').test(n.className);
|
84
|
+
};
|
85
|
+
|
86
|
+
each(dom.select('*', el), function(n) {
|
87
|
+
// Replace cdate
|
88
|
+
if (hasClass(n, ed.getParam('template_cdate_classes', 'cdate').replace(/\s+/g, '|')))
|
89
|
+
n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_cdate_format", ed.getLang("template.cdate_format")));
|
90
|
+
|
91
|
+
// Replace mdate
|
92
|
+
if (hasClass(n, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|')))
|
93
|
+
n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format")));
|
94
|
+
|
95
|
+
// Replace selection
|
96
|
+
if (hasClass(n, ed.getParam('template_selected_content_classes', 'selcontent').replace(/\s+/g, '|')))
|
97
|
+
n.innerHTML = sel;
|
98
|
+
});
|
99
|
+
|
100
|
+
t._replaceVals(el);
|
101
|
+
|
102
|
+
ed.execCommand('mceInsertContent', false, el.innerHTML);
|
103
|
+
ed.addVisual();
|
104
|
+
},
|
105
|
+
|
106
|
+
_replaceVals : function(e) {
|
107
|
+
var dom = this.editor.dom, vl = this.editor.getParam('template_replace_values');
|
108
|
+
|
109
|
+
each(dom.select('*', e), function(e) {
|
110
|
+
each(vl, function(v, k) {
|
111
|
+
if (dom.hasClass(e, k)) {
|
112
|
+
if (typeof(vl[k]) == 'function')
|
113
|
+
vl[k](e);
|
114
|
+
}
|
115
|
+
});
|
116
|
+
});
|
117
|
+
},
|
118
|
+
|
119
|
+
_getDateTime : function(d, fmt) {
|
120
|
+
if (!fmt)
|
121
|
+
return "";
|
122
|
+
|
123
|
+
function addZeros(value, len) {
|
124
|
+
var i;
|
125
|
+
|
126
|
+
value = "" + value;
|
127
|
+
|
128
|
+
if (value.length < len) {
|
129
|
+
for (i=0; i<(len-value.length); i++)
|
130
|
+
value = "0" + value;
|
131
|
+
}
|
132
|
+
|
133
|
+
return value;
|
134
|
+
}
|
135
|
+
|
136
|
+
fmt = fmt.replace("%D", "%m/%d/%y");
|
137
|
+
fmt = fmt.replace("%r", "%I:%M:%S %p");
|
138
|
+
fmt = fmt.replace("%Y", "" + d.getFullYear());
|
139
|
+
fmt = fmt.replace("%y", "" + d.getYear());
|
140
|
+
fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
|
141
|
+
fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
|
142
|
+
fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
|
143
|
+
fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
|
144
|
+
fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
|
145
|
+
fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
|
146
|
+
fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
|
147
|
+
fmt = fmt.replace("%B", "" + this.editor.getLang("template_months_long").split(',')[d.getMonth()]);
|
148
|
+
fmt = fmt.replace("%b", "" + this.editor.getLang("template_months_short").split(',')[d.getMonth()]);
|
149
|
+
fmt = fmt.replace("%A", "" + this.editor.getLang("template_day_long").split(',')[d.getDay()]);
|
150
|
+
fmt = fmt.replace("%a", "" + this.editor.getLang("template_day_short").split(',')[d.getDay()]);
|
151
|
+
fmt = fmt.replace("%%", "%");
|
152
|
+
|
153
|
+
return fmt;
|
154
|
+
}
|
155
|
+
});
|
156
|
+
|
157
|
+
// Register plugin
|
158
|
+
tinymce.PluginManager.add('template', tinymce.plugins.TemplatePlugin);
|
159
|
+
})();
|
@@ -0,0 +1,106 @@
|
|
1
|
+
tinyMCEPopup.requireLangPack();
|
2
|
+
|
3
|
+
var TemplateDialog = {
|
4
|
+
preInit : function() {
|
5
|
+
var url = tinyMCEPopup.getParam("template_external_list_url");
|
6
|
+
|
7
|
+
if (url != null)
|
8
|
+
document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></sc'+'ript>');
|
9
|
+
},
|
10
|
+
|
11
|
+
init : function() {
|
12
|
+
var ed = tinyMCEPopup.editor, tsrc, sel, x, u;
|
13
|
+
|
14
|
+
tsrc = ed.getParam("template_templates", false);
|
15
|
+
sel = document.getElementById('tpath');
|
16
|
+
|
17
|
+
// Setup external template list
|
18
|
+
if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') {
|
19
|
+
for (x=0, tsrc = []; x<tinyMCETemplateList.length; x++)
|
20
|
+
tsrc.push({title : tinyMCETemplateList[x][0], src : tinyMCETemplateList[x][1], description : tinyMCETemplateList[x][2]});
|
21
|
+
}
|
22
|
+
|
23
|
+
for (x=0; x<tsrc.length; x++)
|
24
|
+
sel.options[sel.options.length] = new Option(tsrc[x].title, tinyMCEPopup.editor.documentBaseURI.toAbsolute(tsrc[x].src));
|
25
|
+
|
26
|
+
this.resize();
|
27
|
+
this.tsrc = tsrc;
|
28
|
+
},
|
29
|
+
|
30
|
+
resize : function() {
|
31
|
+
var w, h, e;
|
32
|
+
|
33
|
+
if (!self.innerWidth) {
|
34
|
+
w = document.body.clientWidth - 50;
|
35
|
+
h = document.body.clientHeight - 160;
|
36
|
+
} else {
|
37
|
+
w = self.innerWidth - 50;
|
38
|
+
h = self.innerHeight - 170;
|
39
|
+
}
|
40
|
+
|
41
|
+
e = document.getElementById('templatesrc');
|
42
|
+
|
43
|
+
if (e) {
|
44
|
+
e.style.height = Math.abs(h) + 'px';
|
45
|
+
e.style.width = Math.abs(w - 5) + 'px';
|
46
|
+
}
|
47
|
+
},
|
48
|
+
|
49
|
+
loadCSSFiles : function(d) {
|
50
|
+
var ed = tinyMCEPopup.editor;
|
51
|
+
|
52
|
+
tinymce.each(ed.getParam("content_css", '').split(','), function(u) {
|
53
|
+
d.write('<link href="' + ed.documentBaseURI.toAbsolute(u) + '" rel="stylesheet" type="text/css" />');
|
54
|
+
});
|
55
|
+
},
|
56
|
+
|
57
|
+
selectTemplate : function(u, ti) {
|
58
|
+
var d = window.frames['templatesrc'].document, x, tsrc = this.tsrc;
|
59
|
+
|
60
|
+
if (!u)
|
61
|
+
return;
|
62
|
+
|
63
|
+
d.body.innerHTML = this.templateHTML = this.getFileContents(u);
|
64
|
+
|
65
|
+
for (x=0; x<tsrc.length; x++) {
|
66
|
+
if (tsrc[x].title == ti)
|
67
|
+
document.getElementById('tmpldesc').innerHTML = tsrc[x].description || '';
|
68
|
+
}
|
69
|
+
},
|
70
|
+
|
71
|
+
insert : function() {
|
72
|
+
tinyMCEPopup.execCommand('mceInsertTemplate', false, {
|
73
|
+
content : this.templateHTML,
|
74
|
+
selection : tinyMCEPopup.editor.selection.getContent()
|
75
|
+
});
|
76
|
+
|
77
|
+
tinyMCEPopup.close();
|
78
|
+
},
|
79
|
+
|
80
|
+
getFileContents : function(u) {
|
81
|
+
var x, d, t = 'text/plain';
|
82
|
+
|
83
|
+
function g(s) {
|
84
|
+
x = 0;
|
85
|
+
|
86
|
+
try {
|
87
|
+
x = new ActiveXObject(s);
|
88
|
+
} catch (s) {
|
89
|
+
}
|
90
|
+
|
91
|
+
return x;
|
92
|
+
};
|
93
|
+
|
94
|
+
x = window.ActiveXObject ? g('Msxml2.XMLHTTP') || g('Microsoft.XMLHTTP') : new XMLHttpRequest();
|
95
|
+
|
96
|
+
// Synchronous AJAX load file
|
97
|
+
x.overrideMimeType && x.overrideMimeType(t);
|
98
|
+
x.open("GET", u, false);
|
99
|
+
x.send(null);
|
100
|
+
|
101
|
+
return x.responseText;
|
102
|
+
}
|
103
|
+
};
|
104
|
+
|
105
|
+
TemplateDialog.preInit();
|
106
|
+
tinyMCEPopup.onInit.add(TemplateDialog.init, TemplateDialog);
|
@@ -0,0 +1 @@
|
|
1
|
+
tinyMCE.addI18n('en.template_dlg',{title:"Templates",label:"Template","desc_label":"Description",desc:"Insert Predefined Template Content",select:"Select a Template",preview:"Preview",warning:"Warning: Updating a template with a different one may cause data loss.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"});
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
2
|
+
<head>
|
3
|
+
<title>{#template_dlg.title}</title>
|
4
|
+
<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
|
5
|
+
<script type="text/javascript" src="js/template.js"></script>
|
6
|
+
<link href="css/template.css" rel="stylesheet" type="text/css" />
|
7
|
+
</head>
|
8
|
+
<body onresize="TemplateDialog.resize();">
|
9
|
+
<form onsubmit="TemplateDialog.insert();return false;">
|
10
|
+
<div id="frmbody">
|
11
|
+
<div class="title">{#template_dlg.desc}</div>
|
12
|
+
<div class="frmRow"><label for="tpath" title="{#template_dlg.select}">{#template_dlg.label}:</label>
|
13
|
+
<select id="tpath" name="tpath" onchange="TemplateDialog.selectTemplate(this.options[this.selectedIndex].value, this.options[this.selectedIndex].text);" class="mceFocus">
|
14
|
+
<option value="">{#template_dlg.select}...</option>
|
15
|
+
</select>
|
16
|
+
<span id="warning"></span></div>
|
17
|
+
<div class="frmRow"><label for="tdesc">{#template_dlg.desc_label}:</label>
|
18
|
+
<span id="tmpldesc"></span></div>
|
19
|
+
<fieldset>
|
20
|
+
<legend>{#template_dlg.preview}</legend>
|
21
|
+
<iframe id="templatesrc" name="templatesrc" src="blank.htm" width="690" height="400" frameborder="0"></iframe>
|
22
|
+
</fieldset>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
<div class="mceActionPanel">
|
26
|
+
<input type="submit" id="insert" name="insert" value="{#insert}" />
|
27
|
+
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
|
28
|
+
</div>
|
29
|
+
</form>
|
30
|
+
</body>
|
31
|
+
</html>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class Spud::Admin::MediaController < Spud::Admin::ApplicationController
|
2
|
-
layout 'spud/admin/
|
2
|
+
layout 'spud/admin/media/detail'
|
3
3
|
add_breadcrumb "Media", :spud_admin_media_path
|
4
4
|
belongs_to_spud_app :media
|
5
5
|
before_filter :load_media,:only => [:edit,:update,:show,:destroy]
|
@@ -1,14 +1,14 @@
|
|
1
1
|
<%=content_for :data_controls do%>
|
2
|
-
<%=link_to "Upload File",new_spud_admin_medium_path(),:class => "
|
2
|
+
<%=link_to "Upload File",new_spud_admin_medium_path(),:class => "btn btn-primary",:title => "Upload File"%>
|
3
3
|
<%end%>
|
4
4
|
<%=content_for :detail do%>
|
5
5
|
<div class="page_list">
|
6
6
|
<%@media.each do |media|%>
|
7
7
|
<div class="page_row">
|
8
8
|
|
9
|
-
<span class="row_meta"><%=image_tag(media.image_from_type,:
|
9
|
+
<span class="row_meta"><%=image_tag(media.image_from_type,:class => "size-50-thumb")%><%=link_to media.attachment.url.split("/").last,media.attachment.url%></span>
|
10
10
|
|
11
|
-
<span class="edit_controls"><%=link_to "Remove",spud_admin_medium_path(:id => media.id),:method => :delete,:class => '
|
11
|
+
<span class="edit_controls"><%=link_to "Remove",spud_admin_medium_path(:id => media.id),:method => :delete,:class => 'btn btn-danger',:confirm => "Are you sure you want to remove this file?"%></span>
|
12
12
|
<br style="clear:both;"/>
|
13
13
|
</div>
|
14
14
|
<%end%>
|
@@ -1,22 +1,19 @@
|
|
1
1
|
|
2
2
|
|
3
3
|
|
4
|
-
<%=form_for @media,:url => spud_admin_media_path(),:html=>{:class=>"
|
4
|
+
<%=form_for @media,:url => spud_admin_media_path(),:html=>{:class=>"form-horizontal", :multipart => true} do |f|%>
|
5
5
|
<fieldset>
|
6
6
|
<legend>Upload Media</legend>
|
7
|
-
|
8
|
-
|
9
|
-
<%=f.label :attachment, "Choose File"%>
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
7
|
+
|
8
|
+
<div class="control-group">
|
9
|
+
<%=f.label :attachment, "Choose File",:class =>"control-label"%>
|
10
|
+
<div class="controls">
|
11
|
+
<%=f.file_field :attachment%>
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
|
15
|
+
<div class="form-actions">
|
16
|
+
<%=f.submit "Upload", :class=>"btn btn-primary","data-loading-text"=>"Uploading..."%> or <%=link_to "cancel",spud_admin_media_path,:class => "btn"%>
|
17
|
+
</div>
|
16
18
|
<%end%>
|
17
19
|
|
18
|
-
<script type="text/javascript">
|
19
|
-
$('input[type=submit],.close_dialog').button();
|
20
|
-
|
21
|
-
</script>
|
22
|
-
|