milksteak 0.0.13 → 0.0.15
Sign up to get free protection for your applications and to get access to all the features.
- data/.DS_Store +0 -0
- data/lib/milksteak.rb +20 -2
- data/lib/milksteak/cms.rb +1 -1
- data/lib/milksteak/version.rb +1 -1
- data/lib/public/milksteak/js/moment.min.js +6 -0
- data/lib/public/milksteak/markitup/sets/markdown/images/bold.png +0 -0
- data/lib/public/milksteak/markitup/sets/markdown/images/code.png +0 -0
- data/lib/public/milksteak/markitup/sets/markdown/images/h1.png +0 -0
- data/lib/public/milksteak/markitup/sets/markdown/images/h2.png +0 -0
- data/lib/public/milksteak/markitup/sets/markdown/images/h3.png +0 -0
- data/lib/public/milksteak/markitup/sets/markdown/images/h4.png +0 -0
- data/lib/public/milksteak/markitup/sets/markdown/images/h5.png +0 -0
- data/lib/public/milksteak/markitup/sets/markdown/images/h6.png +0 -0
- data/lib/public/milksteak/markitup/sets/markdown/images/italic.png +0 -0
- data/lib/public/milksteak/markitup/sets/markdown/images/link.png +0 -0
- data/lib/public/milksteak/markitup/sets/markdown/images/list-bullet.png +0 -0
- data/lib/public/milksteak/markitup/sets/markdown/images/list-numeric.png +0 -0
- data/lib/public/milksteak/markitup/sets/markdown/images/paragraph.png +0 -0
- data/lib/public/milksteak/markitup/sets/markdown/images/picture.png +0 -0
- data/lib/public/milksteak/markitup/sets/markdown/images/preview.png +0 -0
- data/lib/public/milksteak/markitup/sets/markdown/images/quotes.png +0 -0
- data/lib/public/milksteak/markitup/sets/markdown/images/stroke.png +0 -0
- data/lib/public/milksteak/markitup/sets/markdown/set.js +82 -0
- data/lib/public/milksteak/markitup/sets/markdown/style.css +54 -0
- data/lib/public/milksteak/markitup/sets/textile/set.js +1 -1
- data/lib/views/admin.erb +25 -4
- data/lib/views/admin/fragments/edit.erb +8 -0
- data/lib/views/admin/login.erb +23 -0
- data/lib/views/app.coffee +33 -0
- data/lib/views/layouts/admin.erb +7 -0
- data/milksteak.gemspec +1 -0
- data/spec/lib/milksteak/cms_spec.rb +2 -1
- data/spec/models/layout_spec.rb +1 -0
- data/spec/spec_helper.rb +1 -1
- metadata +42 -2
data/.DS_Store
ADDED
Binary file
|
data/lib/milksteak.rb
CHANGED
@@ -70,11 +70,29 @@ module Milksteak
|
|
70
70
|
end
|
71
71
|
|
72
72
|
get "/ms-admin" do
|
73
|
+
@fragments = Milksteak::Fragment.list
|
73
74
|
erb "admin", :layout => "admin"
|
74
75
|
end
|
75
|
-
|
76
|
+
|
77
|
+
# fragment editing
|
78
|
+
get "/ms-admin/fragments/:stub/edit" do
|
79
|
+
@fragment = Milksteak::Fragment.load(params[:stub])
|
80
|
+
erb "admin/fragments/edit", :layout => "admin"
|
81
|
+
end
|
82
|
+
post "/ms-admin/fragments/:stub/update" do
|
83
|
+
flash[:success] = "Section content updated successfully."
|
84
|
+
@fragment = Milksteak::Fragment.load(params[:stub])
|
85
|
+
@fragment = Milksteak::Fragment.write(params[:stub], @fragment.data, params[:page][:content])
|
86
|
+
erb "admin/fragments/edit", :layout => "admin"
|
87
|
+
end
|
88
|
+
|
76
89
|
get "/ms-admin/login" do
|
77
|
-
|
90
|
+
erb "admin/login", :layout => "admin"
|
91
|
+
end
|
92
|
+
|
93
|
+
get "/ms-admin/app.js" do
|
94
|
+
content_type :js
|
95
|
+
coffee "app"
|
78
96
|
end
|
79
97
|
|
80
98
|
end
|
data/lib/milksteak/cms.rb
CHANGED
data/lib/milksteak/version.rb
CHANGED
@@ -0,0 +1,6 @@
|
|
1
|
+
// moment.js
|
2
|
+
// version : 1.5.0
|
3
|
+
// author : Tim Wood
|
4
|
+
// license : MIT
|
5
|
+
// momentjs.com
|
6
|
+
(function(a,b){function u(a,b){this._d=a,this._isUTC=!!b}function v(a,b){var c=a+"";while(c.length<b)c="0"+c;return c}function w(b,c,d,e){var f=typeof c=="string",g=f?{}:c,h,i,j,k;return f&&e&&(g[c]=+e),h=(g.ms||g.milliseconds||0)+(g.s||g.seconds||0)*1e3+(g.m||g.minutes||0)*6e4+(g.h||g.hours||0)*36e5,i=(g.d||g.days||0)+(g.w||g.weeks||0)*7,j=(g.M||g.months||0)+(g.y||g.years||0)*12,h&&b.setTime(+b+h*d),i&&b.setDate(b.getDate()+i*d),j&&(k=b.getDate(),b.setDate(1),b.setMonth(b.getMonth()+j*d),b.setDate(Math.min((new a(b.getFullYear(),b.getMonth()+1,0)).getDate(),k))),b}function x(a){return Object.prototype.toString.call(a)==="[object Array]"}function y(b){return new a(b[0],b[1]||0,b[2]||1,b[3]||0,b[4]||0,b[5]||0,b[6]||0)}function z(b,d){function r(d){var j,s;switch(d){case"M":return e+1;case"Mo":return e+1+p(e+1);case"MM":return v(e+1,2);case"MMM":return c.monthsShort[e];case"MMMM":return c.months[e];case"D":return f;case"Do":return f+p(f);case"DD":return v(f,2);case"DDD":return j=new a(g,e,f),s=new a(g,0,1),~~((j-s)/864e5+1.5);case"DDDo":return j=r("DDD"),j+p(j);case"DDDD":return v(r("DDD"),3);case"d":return h;case"do":return h+p(h);case"ddd":return c.weekdaysShort[h];case"dddd":return c.weekdays[h];case"w":return j=new a(g,e,f-h+5),s=new a(j.getFullYear(),0,4),~~((j-s)/864e5/7+1.5);case"wo":return j=r("w"),j+p(j);case"ww":return v(r("w"),2);case"YY":return v(g%100,2);case"YYYY":return g;case"a":return i>11?q.pm:q.am;case"A":return i>11?q.PM:q.AM;case"H":return i;case"HH":return v(i,2);case"h":return i%12||12;case"hh":return v(i%12||12,2);case"m":return m;case"mm":return v(m,2);case"s":return n;case"ss":return v(n,2);case"zz":case"z":return(b._d.toString().match(l)||[""])[0].replace(k,"");case"Z":return(o<0?"-":"+")+v(~~(Math.abs(o)/60),2)+":"+v(~~(Math.abs(o)%60),2);case"ZZ":return(o<0?"-":"+")+v(~~(10*Math.abs(o)/6),4);case"L":case"LL":case"LLL":case"LLLL":case"LT":return z(b,c.longDateFormat[d]);default:return d.replace(/(^\[)|(\\)|\]$/g,"")}}var e=b.month(),f=b.date(),g=b.year(),h=b.day(),i=b.hours(),m=b.minutes(),n=b.seconds(),o=-b.zone(),p=c.ordinal,q=c.meridiem;return d.replace(j,r)}function A(b,d){function p(a,b){var d;switch(a){case"M":case"MM":e[1]=~~b-1;break;case"MMM":case"MMMM":for(d=0;d<12;d++)if(c.monthsParse[d].test(b)){e[1]=d;break}break;case"D":case"DD":case"DDD":case"DDDD":e[2]=~~b;break;case"YY":b=~~b,e[0]=b+(b>70?1900:2e3);break;case"YYYY":e[0]=~~Math.abs(b);break;case"a":case"A":o=b.toLowerCase()==="pm";break;case"H":case"HH":case"h":case"hh":e[3]=~~b;break;case"m":case"mm":e[4]=~~b;break;case"s":case"ss":e[5]=~~b;break;case"Z":case"ZZ":h=!0,d=(b||"").match(r),d&&d[1]&&(f=~~d[1]),d&&d[2]&&(g=~~d[2]),d&&d[0]==="+"&&(f=-f,g=-g)}}var e=[0,0,1,0,0,0,0],f=0,g=0,h=!1,i=b.match(n),j=d.match(m),k=Math.min(i.length,j.length),l,o;for(l=0;l<k;l++)p(j[l],i[l]);return o&&e[3]<12&&(e[3]+=12),o===!1&&e[3]===12&&(e[3]=0),e[3]+=f,e[4]+=g,h?new a(a.UTC.apply({},e)):y(e)}function B(a,b){var c=Math.min(a.length,b.length),d=Math.abs(a.length-b.length),e=0,f;for(f=0;f<c;f++)~~a[f]!==~~b[f]&&e++;return e+d}function C(a,b){var c,d=a.match(n),e=[],f=99,g,h,i;for(g=0;g<b.length;g++)h=A(a,b[g]),i=B(d,z(new u(h),b[g]).match(n)),i<f&&(f=i,c=h);return c}function D(b){var c="YYYY-MM-DDT",d;if(o.exec(b)){for(d=0;d<3;d++)if(q[d][1].exec(b)){c+=q[d][0];break}return A(b,c+"Z")}return new a(b)}function E(a,b,d){var e=c.relativeTime[a];return typeof e=="function"?e(b||1,!!d,a):e.replace(/%d/i,b||1)}function F(a,b){var c=d(Math.abs(a)/1e3),e=d(c/60),f=d(e/60),g=d(f/24),h=d(g/365),i=c<45&&["s",c]||e===1&&["m"]||e<45&&["mm",e]||f===1&&["h"]||f<22&&["hh",f]||g===1&&["d"]||g<=25&&["dd",g]||g<=45&&["M"]||g<345&&["MM",d(g/30)]||h===1&&["y"]||["yy",h];return i[2]=b,E.apply({},i)}function G(a,b){c.fn[a]=function(a){var c=this._isUTC?"UTC":"";return a!=null?(this._d["set"+c+b](a),this):this._d["get"+c+b]()}}var c,d=Math.round,e={},f=typeof module!="undefined",g="months|monthsShort|monthsParse|weekdays|weekdaysShort|longDateFormat|calendar|relativeTime|ordinal|meridiem".split("|"),h,i=/^\/?Date\((\-?\d+)/i,j=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|dddd?|do?|w[o|w]?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|zz?|ZZ?|LT|LL?L?L?)/g,k=/[^A-Z]/g,l=/\([A-Za-z ]+\)|:[0-9]{2} [A-Z]{3} /g,m=/(\\)?(MM?M?M?|dd?d?d|DD?D?D?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|ZZ?|T)/g,n=/(\\)?([0-9]+|([a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+|([\+\-]\d\d:?\d\d))/gi,o=/\d{4}.\d\d.\d\d(T(\d\d(.\d\d(.\d\d)?)?)?([\+\-]\d\d:?\d\d)?)?/,p="YYYY-MM-DDTHH:mm:ssZ",q=[["HH:mm:ss",/T\d\d:\d\d:\d\d/],["HH:mm",/T\d\d:\d\d/],["HH",/T\d\d/]],r=/([\+\-]|\d\d)/gi,s="1.5.0",t="Month|Date|Hours|Minutes|Seconds|Milliseconds".split("|");c=function(c,d){if(c===null||c==="")return null;var e,f;return c&&c._d instanceof a?e=new a(+c._d):d?x(d)?e=C(c,d):e=A(c,d):(f=i.exec(c),e=c===b?new a:f?new a(+f[1]):c instanceof a?c:x(c)?y(c):typeof c=="string"?D(c):new a(c)),new u(e)},c.utc=function(b,d){return x(b)?new u(new a(a.UTC.apply({},b)),!0):d&&b?c(b+" 0",d+" Z").utc():c(b).utc()},c.humanizeDuration=function(a,b,d){var e=+a,f=c.relativeTime,g;switch(b){case"seconds":e*=1e3;break;case"minutes":e*=6e4;break;case"hours":e*=36e5;break;case"days":e*=864e5;break;case"weeks":e*=6048e5;break;case"months":e*=2592e6;break;case"years":e*=31536e6;break;default:d=!!b}return g=F(e,!d),d?(e<=0?f.past:f.future).replace(/%s/i,g):g},c.version=s,c.defaultFormat=p,c.lang=function(a,b){var d,h,i,j=[];if(b){for(d=0;d<12;d++)j[d]=new RegExp("^"+b.months[d]+"|^"+b.monthsShort[d].replace(".",""),"i");b.monthsParse=b.monthsParse||j,e[a]=b}if(e[a])for(d=0;d<g.length;d++)h=g[d],c[h]=e[a][h]||c[h];else f&&(i=require("./lang/"+a),c.lang(a,i))},c.lang("en",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D YYYY",LLL:"MMMM D YYYY LT",LLLL:"dddd, MMMM D YYYY LT"},meridiem:{AM:"AM",am:"am",PM:"PM",pm:"pm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(a){var b=a%10;return~~(a%100/10)===1?"th":b===1?"st":b===2?"nd":b===3?"rd":"th"}}),c.isMoment=function(a){return a instanceof u},c.fn=u.prototype={clone:function(){return c(this)},valueOf:function(){return+this._d},"native":function(){return this._d},toString:function(){return this._d.toString()},toDate:function(){return this._d},utc:function(){return this._isUTC=!0,this},local:function(){return this._isUTC=!1,this},format:function(a){return z(this,a?a:c.defaultFormat)},add:function(a,b){return this._d=w(this._d,a,1,b),this},subtract:function(a,b){return this._d=w(this._d,a,-1,b),this},diff:function(a,b,e){var f=c(a),g=(this.zone()-f.zone())*6e4,h=this._d-f._d-g,i=this.year()-f.year(),j=this.month()-f.month(),k=this.date()-f.date(),l;return b==="months"?l=i*12+j+k/30:b==="years"?l=i+j/12:l=b==="seconds"?h/1e3:b==="minutes"?h/6e4:b==="hours"?h/36e5:b==="days"?h/864e5:b==="weeks"?h/6048e5:h,e?l:d(l)},from:function(a,b){return c.humanizeDuration(this.diff(a),!b)},fromNow:function(a){return this.from(c(),a)},calendar:function(){var a=this.diff(c().sod(),"days",!0),b=c.calendar,d=b.sameElse,e=a<-6?d:a<-1?b.lastWeek:a<0?b.lastDay:a<1?b.sameDay:a<2?b.nextDay:a<7?b.nextWeek:d;return this.format(typeof e=="function"?e.apply(this):e)},isLeapYear:function(){var a=this.year();return a%4===0&&a%100!==0||a%400===0},isDST:function(){return this.zone()<c([this.year()]).zone()||this.zone()<c([this.year(),5]).zone()},day:function(a){var b=this._d.getDay();return a==null?b:this.add({d:a-b})},sod:function(){return this.clone().hours(0).minutes(0).seconds(0).milliseconds(0)},eod:function(){return this.sod().add({d:1,ms:-1})},zone:function(){return this._isUTC?0:this._d.getTimezoneOffset()},daysInMonth:function(){return this.clone().month(this.month()+1).date(0).date()}};for(h=0;h<t.length;h++)G(t[h].toLowerCase(),t[h]);G("year","FullYear"),f&&(module.exports=c),typeof window!="undefined"&&(window.moment=c),typeof define=="function"&&define.amd&&define("moment",[],function(){return c})})(Date);
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,82 @@
|
|
1
|
+
// ----------------------------------------------------------------------------
|
2
|
+
// markItUp!
|
3
|
+
// ----------------------------------------------------------------------------
|
4
|
+
// Copyright (C) 2008 Jay Salvat
|
5
|
+
// http://markitup.jaysalvat.com/
|
6
|
+
// ----------------------------------------------------------------------------
|
7
|
+
mySettings = {
|
8
|
+
nameSpace: 'markdown', // Useful to prevent multi-instances CSS conflict
|
9
|
+
onShiftEnter: {keepDefault:false, openWith:'\n\n'},
|
10
|
+
markupSet: [
|
11
|
+
{name:'First Level Heading', key:"1", placeHolder:'Your title here...', closeWith:function(markItUp) { return miu.markdownTitle(markItUp, '=') } },
|
12
|
+
{name:'Second Level Heading', key:"2", placeHolder:'Your title here...', closeWith:function(markItUp) { return miu.markdownTitle(markItUp, '-') } },
|
13
|
+
{name:'Heading 3', key:"3", openWith:'### ', placeHolder:'Your title here...' },
|
14
|
+
{name:'Heading 4', key:"4", openWith:'#### ', placeHolder:'Your title here...' },
|
15
|
+
{name:'Heading 5', key:"5", openWith:'##### ', placeHolder:'Your title here...' },
|
16
|
+
{name:'Heading 6', key:"6", openWith:'###### ', placeHolder:'Your title here...' },
|
17
|
+
{separator:'---------------' },
|
18
|
+
{name:'Bold', key:"B", openWith:'**', closeWith:'**'},
|
19
|
+
{name:'Italic', key:"I", openWith:'_', closeWith:'_'},
|
20
|
+
{separator:'---------------' },
|
21
|
+
{name:'Bulleted List', openWith:'- ' },
|
22
|
+
{name:'Numeric List', openWith:function(markItUp) {
|
23
|
+
return markItUp.line+'. ';
|
24
|
+
}},
|
25
|
+
{separator:'---------------' },
|
26
|
+
{name:'Picture', key:"P", replaceWith: function (markItUp) {
|
27
|
+
MarkupHelper.showDialog(markItUp);
|
28
|
+
return false;
|
29
|
+
}},
|
30
|
+
{name:'Link', key:"L", openWith:'[', closeWith:']([![Url:!:http://]!] "[![Title]!]")', placeHolder:'Your text to link here...' },
|
31
|
+
{separator:'---------------'},
|
32
|
+
{name:'Quotes', openWith:'> '},
|
33
|
+
{name:'Code Block / Code', openWith:'(!(\t|!|`)!)', closeWith:'(!(`)!)'},
|
34
|
+
{separator:'---------------'},
|
35
|
+
{name:'Preview', call:'preview', className:"preview"}
|
36
|
+
]
|
37
|
+
}
|
38
|
+
|
39
|
+
// mIu nameSpace to avoid conflict.
|
40
|
+
miu = {
|
41
|
+
markdownTitle: function(markItUp, char) {
|
42
|
+
heading = '';
|
43
|
+
n = $.trim(markItUp.selection||markItUp.placeHolder).length;
|
44
|
+
for(i = 0; i < n; i++) {
|
45
|
+
heading += char;
|
46
|
+
}
|
47
|
+
return '\n'+heading+'\n';
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
var current_markitup_editor = null;
|
52
|
+
|
53
|
+
var MarkupHelper = {
|
54
|
+
eventsAttached: false,
|
55
|
+
|
56
|
+
showDialog: function (markItUp) {
|
57
|
+
this.bindEvents(markItUp);
|
58
|
+
current_markitup_editor = markItUp;
|
59
|
+
$("div#image-modal-placeholder").html("<img src=\"/img/spinner.gif\"/>");
|
60
|
+
$("div#image-modal").modal("show");
|
61
|
+
$("div#image-modal-placeholder").load("/ms-media/images");
|
62
|
+
},
|
63
|
+
|
64
|
+
bindEvents: function (markItUp) {
|
65
|
+
if (this.eventsAttached) {
|
66
|
+
return;
|
67
|
+
}
|
68
|
+
this.eventsAttached = true;
|
69
|
+
|
70
|
+
$('#link-submit').bind('click', function (event) {
|
71
|
+
event.stopPropagation();
|
72
|
+
event.preventDefault();
|
73
|
+
var linkElement = '[image tag goes here]';
|
74
|
+
$(markItUp.textarea).trigger('insertion', [{replaceWith: linkElement}]);
|
75
|
+
});
|
76
|
+
|
77
|
+
$('#link-cancel').bind('click', function (event) {
|
78
|
+
event.preventDefault();
|
79
|
+
});
|
80
|
+
}
|
81
|
+
};
|
82
|
+
|
@@ -0,0 +1,54 @@
|
|
1
|
+
/* -------------------------------------------------------------------
|
2
|
+
// markItUp!
|
3
|
+
// By Jay Salvat - http://markitup.jaysalvat.com/
|
4
|
+
// ------------------------------------------------------------------*/
|
5
|
+
.markdown .markItUpButton1 a {
|
6
|
+
background-image:url(images/h1.png);
|
7
|
+
}
|
8
|
+
.markdown .markItUpButton2 a {
|
9
|
+
background-image:url(images/h2.png);
|
10
|
+
}
|
11
|
+
.markdown .markItUpButton3 a {
|
12
|
+
background-image:url(images/h3.png);
|
13
|
+
}
|
14
|
+
.markdown .markItUpButton4 a {
|
15
|
+
background-image:url(images/h4.png);
|
16
|
+
}
|
17
|
+
.markdown .markItUpButton5 a {
|
18
|
+
background-image:url(images/h5.png);
|
19
|
+
}
|
20
|
+
.markdown .markItUpButton6 a {
|
21
|
+
background-image:url(images/h6.png);
|
22
|
+
}
|
23
|
+
|
24
|
+
.markdown .markItUpButton7 a {
|
25
|
+
background-image:url(images/bold.png);
|
26
|
+
}
|
27
|
+
.markdown .markItUpButton8 a {
|
28
|
+
background-image:url(images/italic.png);
|
29
|
+
}
|
30
|
+
|
31
|
+
.markdown .markItUpButton9 a {
|
32
|
+
background-image:url(images/list-bullet.png);
|
33
|
+
}
|
34
|
+
.markdown .markItUpButton10 a {
|
35
|
+
background-image:url(images/list-numeric.png);
|
36
|
+
}
|
37
|
+
|
38
|
+
.markdown .markItUpButton11 a {
|
39
|
+
background-image:url(images/picture.png);
|
40
|
+
}
|
41
|
+
.markdown .markItUpButton12 a {
|
42
|
+
background-image:url(images/link.png);
|
43
|
+
}
|
44
|
+
|
45
|
+
.markdown .markItUpButton13 a {
|
46
|
+
background-image:url(images/quotes.png);
|
47
|
+
}
|
48
|
+
.markdown .markItUpButton14 a {
|
49
|
+
background-image:url(images/code.png);
|
50
|
+
}
|
51
|
+
|
52
|
+
.markdown .preview a {
|
53
|
+
background-image:url(images/preview.png);
|
54
|
+
}
|
@@ -4,7 +4,7 @@
|
|
4
4
|
// Copyright (C) 2008 Jay Salvat
|
5
5
|
// http://markitup.jaysalvat.com/
|
6
6
|
// ----------------------------------------------------------------------------
|
7
|
-
|
7
|
+
mySettings = {
|
8
8
|
nameSpace: "textile", // Useful to prevent multi-instances CSS conflict
|
9
9
|
previewParserPath: "~/sets/textile/preview.php",
|
10
10
|
onShiftEnter: {keepDefault:false, replaceWith:'\n\n'},
|
data/lib/views/admin.erb
CHANGED
@@ -1,5 +1,26 @@
|
|
1
|
-
<
|
1
|
+
<div class="page-heading">
|
2
|
+
<h1>Admin</h1>
|
3
|
+
</div>
|
2
4
|
|
3
|
-
<
|
4
|
-
|
5
|
-
|
5
|
+
<table class="table">
|
6
|
+
<thead>
|
7
|
+
<tr>
|
8
|
+
<th class="span7">Section Name</th><th>Size</th><th>Updated Date</th><th> </th>
|
9
|
+
</tr>
|
10
|
+
</thead>
|
11
|
+
<tbody>
|
12
|
+
<% @fragments.each do |p| %>
|
13
|
+
<% name = p.match(/^.+\/(.+)\.yml/)[1] %>
|
14
|
+
<tr>
|
15
|
+
<td><%= name %></td>
|
16
|
+
<td><%= File.size(p) %></td>
|
17
|
+
<td><%= File.mtime(p).getlocal %></td>
|
18
|
+
<td>
|
19
|
+
<div class="pull-right btn-group">
|
20
|
+
<a href="/ms-admin/fragments/<%= name %>/edit" class="btn btn-small"><i class="icon-pencil"></i></a>
|
21
|
+
</div>
|
22
|
+
</td>
|
23
|
+
</tr>
|
24
|
+
<% end %>
|
25
|
+
</tbody>
|
26
|
+
</table>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<div class="page-header">
|
2
|
+
<h1>Editing Content Section <small><%= @fragment.name %></small></h1>
|
3
|
+
</div>
|
4
|
+
|
5
|
+
<form action="/ms-admin/fragments/<%= @fragment.name %>/update" method="post">
|
6
|
+
<textarea id="textile" class="markitup" cols="800" rows="20" name="page[content]"><%= RDiscount.new(@fragment.content, :filter_html, :smart).text.gsub("&", "&").gsub("<", "<") %></textarea>
|
7
|
+
<p><input type="submit" value="Publish Changes" class="btn btn-primary" /> </p>
|
8
|
+
</form>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<form class="form-horizontal" method="post" action="/admin/login">
|
2
|
+
<fieldset>
|
3
|
+
<legend>Administrator Login</legend>
|
4
|
+
<div class="control-group">
|
5
|
+
<label class="control-label" for="email_address">Email Address</label>
|
6
|
+
<div class="controls">
|
7
|
+
<input type="email" class="input-xlarge" id="email_address" name="email_address" required="required">
|
8
|
+
</div>
|
9
|
+
</div>
|
10
|
+
<div class="control-group">
|
11
|
+
<label class="control-label" for="password">Password</label>
|
12
|
+
<div class="controls">
|
13
|
+
<input type="password" class="input-xlarge" id="password" name="password" required="required">
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
<div class="control-group">
|
17
|
+
<label class="control-label"> </label>
|
18
|
+
<div class="controls">
|
19
|
+
<input type="submit" value="Log In" class="btn btn-primary btn-small"/>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
</fieldset>
|
23
|
+
</form>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
$ ->
|
2
|
+
$('[data-toggle="modal"]').click (event) ->
|
3
|
+
event.preventDefault()
|
4
|
+
href = $(this).attr('href')
|
5
|
+
urlModal href
|
6
|
+
|
7
|
+
#$("input.date").calendricalDate { usa: true }
|
8
|
+
#$("input.time").calendricalTime { }
|
9
|
+
|
10
|
+
root = exports ? this
|
11
|
+
root.urlModal = (href) ->
|
12
|
+
app_modal = $("div#app_modal")
|
13
|
+
if app_modal[0]
|
14
|
+
app_modal.modal('hide')
|
15
|
+
if (href.indexOf('#') == 0)
|
16
|
+
$(href).modal('open')
|
17
|
+
else
|
18
|
+
$.ajax href,
|
19
|
+
type: 'GET'
|
20
|
+
dataType: 'html'
|
21
|
+
error: (jqXHR, status, error) ->
|
22
|
+
console.log "Error: #{status}"
|
23
|
+
success: (data, status, jqXHR) ->
|
24
|
+
if app_modal[0]
|
25
|
+
app_modal.html(data)
|
26
|
+
app_modal.modal('show')
|
27
|
+
else
|
28
|
+
$('<div class="modal" id="app_modal">' + data + '</div>').modal()
|
29
|
+
$('input:text:visible:first').focus()
|
30
|
+
|
31
|
+
$("a[rel=tooltip]").tooltip()
|
32
|
+
|
33
|
+
$(".markitup").markItUp(mySettings)
|
data/lib/views/layouts/admin.erb
CHANGED
@@ -100,6 +100,13 @@
|
|
100
100
|
<script src="/milksteak/js/bootstrap-collapse.js"></script>
|
101
101
|
<script src="/milksteak/js/bootstrap-carousel.js"></script>
|
102
102
|
<script src="/milksteak/js/bootstrap-typeahead.js"></script>
|
103
|
+
|
104
|
+
<script type="text/javascript" src="/milksteak/markitup/jquery.markitup.js"></script>
|
105
|
+
<script type="text/javascript" src="/milksteak/markitup/sets/markdown/set.js"></script>
|
106
|
+
<link rel="stylesheet" type="text/css" href="/milksteak/markitup/skins/simple/style.css" />
|
107
|
+
<link rel="stylesheet" type="text/css" href="/milksteak/markitup/sets/markdown/style.css" />
|
108
|
+
<script type="text/javascript" src="/ms-media/library.js"></script>
|
109
|
+
|
103
110
|
<script src="/ms-admin/app.js"></script>
|
104
111
|
|
105
112
|
</body>
|
data/milksteak.gemspec
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), "../../spec_helper.rb")
|
2
2
|
|
3
3
|
describe Milksteak do
|
4
|
-
it "should have milk_root settings" do
|
4
|
+
it "should have milk_root and site_id settings" do
|
5
5
|
Milksteak::Admin.milk_root.should_not be_nil
|
6
|
+
Milksteak::Admin.site_id.should_not be_nil
|
6
7
|
end
|
7
8
|
|
8
9
|
context "non-logged-in visitors" do
|
data/spec/models/layout_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: milksteak
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.15
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-12-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -123,6 +123,22 @@ dependencies:
|
|
123
123
|
- - ! '>='
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: coffee-script
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
type: :runtime
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
126
142
|
description: ! 'Super tiny and simple ruby-based cms that uses yml for content '
|
127
143
|
email:
|
128
144
|
- bryan.thompson@firespring.com
|
@@ -130,6 +146,7 @@ executables: []
|
|
130
146
|
extensions: []
|
131
147
|
extra_rdoc_files: []
|
132
148
|
files:
|
149
|
+
- .DS_Store
|
133
150
|
- .gitignore
|
134
151
|
- .rspec
|
135
152
|
- Gemfile
|
@@ -328,6 +345,7 @@ files:
|
|
328
345
|
- lib/public/milksteak/js/jquery.calendrical.js
|
329
346
|
- lib/public/milksteak/js/jquery.easing.js
|
330
347
|
- lib/public/milksteak/js/jquery.js
|
348
|
+
- lib/public/milksteak/js/moment.min.js
|
331
349
|
- lib/public/milksteak/js/mustache.js
|
332
350
|
- lib/public/milksteak/js/prettify.js
|
333
351
|
- lib/public/milksteak/js/underscore.js
|
@@ -345,6 +363,25 @@ files:
|
|
345
363
|
- lib/public/milksteak/markitup/sets/default/images/stroke.png
|
346
364
|
- lib/public/milksteak/markitup/sets/default/set.js
|
347
365
|
- lib/public/milksteak/markitup/sets/default/style.css
|
366
|
+
- lib/public/milksteak/markitup/sets/markdown/images/bold.png
|
367
|
+
- lib/public/milksteak/markitup/sets/markdown/images/code.png
|
368
|
+
- lib/public/milksteak/markitup/sets/markdown/images/h1.png
|
369
|
+
- lib/public/milksteak/markitup/sets/markdown/images/h2.png
|
370
|
+
- lib/public/milksteak/markitup/sets/markdown/images/h3.png
|
371
|
+
- lib/public/milksteak/markitup/sets/markdown/images/h4.png
|
372
|
+
- lib/public/milksteak/markitup/sets/markdown/images/h5.png
|
373
|
+
- lib/public/milksteak/markitup/sets/markdown/images/h6.png
|
374
|
+
- lib/public/milksteak/markitup/sets/markdown/images/italic.png
|
375
|
+
- lib/public/milksteak/markitup/sets/markdown/images/link.png
|
376
|
+
- lib/public/milksteak/markitup/sets/markdown/images/list-bullet.png
|
377
|
+
- lib/public/milksteak/markitup/sets/markdown/images/list-numeric.png
|
378
|
+
- lib/public/milksteak/markitup/sets/markdown/images/paragraph.png
|
379
|
+
- lib/public/milksteak/markitup/sets/markdown/images/picture.png
|
380
|
+
- lib/public/milksteak/markitup/sets/markdown/images/preview.png
|
381
|
+
- lib/public/milksteak/markitup/sets/markdown/images/quotes.png
|
382
|
+
- lib/public/milksteak/markitup/sets/markdown/images/stroke.png
|
383
|
+
- lib/public/milksteak/markitup/sets/markdown/set.js
|
384
|
+
- lib/public/milksteak/markitup/sets/markdown/style.css
|
348
385
|
- lib/public/milksteak/markitup/sets/textile/images/bold.png
|
349
386
|
- lib/public/milksteak/markitup/sets/textile/images/code.png
|
350
387
|
- lib/public/milksteak/markitup/sets/textile/images/h1.png
|
@@ -475,6 +512,9 @@ files:
|
|
475
512
|
- lib/public/milksteak/wymeditor/skins/twopanels/skin.js
|
476
513
|
- lib/public/milksteak/wymeditor/skins/wymeditor_icon.png
|
477
514
|
- lib/views/admin.erb
|
515
|
+
- lib/views/admin/fragments/edit.erb
|
516
|
+
- lib/views/admin/login.erb
|
517
|
+
- lib/views/app.coffee
|
478
518
|
- lib/views/layouts/admin.erb
|
479
519
|
- lib/views/login.erb
|
480
520
|
- milksteak.gemspec
|