From a6be887ffbd9580052a8ccb92ee675a74882ce2d Mon Sep 17 00:00:00 2001 From: James Mohler Date: Fri, 23 Oct 2015 08:21:41 -0700 Subject: [PATCH 1/8] Issue #89 Nice looking title bar --- layouts/menu.cfm | 2 +- views/_bootstrap/navBar.cfm | 87 +++++++++++++++++++------------------ views/main/home.cfm | 16 ++++--- 3 files changed, 55 insertions(+), 50 deletions(-) diff --git a/layouts/menu.cfm b/layouts/menu.cfm index 75e1706..b6c614b 100644 --- a/layouts/menu.cfm +++ b/layouts/menu.cfm @@ -2,7 +2,7 @@ - + diff --git a/views/_bootstrap/navBar.cfm b/views/_bootstrap/navBar.cfm index 765d69e..92df7ae 100644 --- a/views/_bootstrap/navBar.cfm +++ b/views/_bootstrap/navBar.cfm @@ -28,6 +28,8 @@ case "start" : param attributes.placeholder = []; param attributes.rendered = true; param attributes.static = false; + param attributes.style = ""; + param attributes.styleClass = ""; param attributes.throwOnError = application.Bootstrap.throwOnError; @@ -41,59 +43,60 @@ case "start" : exit "exitTag"; } break; - + case "end" : - if (attributes.key != "" ) { thisTag.GeneratedContent = application.geti18n(attributes.key, attributes.placeholder); - attributes.isSafeHTML = true; - } - - - if (!attributes.inverse) variables.result &= ''; + variables.result &= ''; + variables.result &= variables.crlf & ''; + variables.result &= ''; + + + if (attributes.cacheid != "") CachePut(attributes.cacheid, variables.result); + + + thisTag.GeneratedContent = ""; + if (attributes.rendered) writeOutput(variables.result); + break; } - - + + \ No newline at end of file diff --git a/views/main/home.cfm b/views/main/home.cfm index 21af16c..1e8bd27 100644 --- a/views/main/home.cfm +++ b/views/main/home.cfm @@ -14,7 +14,7 @@ - +

Easy to Setup

Simply download the custom tag library, setup some default options and <cfimport> wherever you need it.

@@ -24,7 +24,7 @@ - +

Themes

Use the standard Bootstrap theme or Bootswatch Themes. This site show the various Bootswatch themes in action

@@ -33,17 +33,19 @@ - +

i18n

Internationalization support is built in. Supports both ColdFusion and PHP language files. Write less code and do more.

+
- + + - +

Smart tags

This Rendered option is like wrapping your code in a <cfif>. It is much smarter because it is a part of the tags as opposed to wrapping the content. Binding outputs data without using <cfoutput> tags.

@@ -52,7 +54,7 @@
- +

Antisamy

Most tag attributes are sanitized to protect your site from common injection attacks

@@ -60,7 +62,7 @@
- +

Open Source

Bootstrap for ColdFusion is released under the MIT License and is maintained at GitHub.

From 45d7f502ff756ffc39e40a7c7d53638b3e53cf44 Mon Sep 17 00:00:00 2001 From: James Mohler Date: Fri, 23 Oct 2015 08:36:22 -0700 Subject: [PATCH 2/8] Issue #83 Now can use better tags instead of divs --- layouts/default.cfm | 1 - views/_bootstrap/column.cfm | 5 +++-- views/_bootstrap/container.cfm | 7 ++++--- views/_bootstrap/row.cfm | 5 +++-- views/docs/grid.cfm | 23 ++++++++++++++++++++++- 5 files changed, 32 insertions(+), 9 deletions(-) diff --git a/layouts/default.cfm b/layouts/default.cfm index f0e5229..7d841e9 100644 --- a/layouts/default.cfm +++ b/layouts/default.cfm @@ -110,7 +110,6 @@ padding-top: 50px; #menu.replacelist("~/", cgi.script_name & "/")# #body.replacelist("~/", cgi.script_name & "/")# - diff --git a/views/_bootstrap/column.cfm b/views/_bootstrap/column.cfm index c231f36..8a81de2 100644 --- a/views/_bootstrap/column.cfm +++ b/views/_bootstrap/column.cfm @@ -28,6 +28,7 @@ case "start" : param attributes.span = 0; param attributes.style = ""; param attributes.styleClass = ""; + param attributes.tag = 'div'; param attributes.throwOnError = application.Bootstrap.throwOnError; param attributes.tooltip = ""; param attributes.tooltipPosition = "bottom"; @@ -62,7 +63,7 @@ case "end" : } - variables.result &= variables.crlf & '
'; + variables.result &= variables.crlf & ''; variables.result &= variables.crlf; if (attributes.cacheid != "") CachePut(variables.fullCacheid, variables.result, 1, 1, application.Bootstrap.cache.content); diff --git a/views/_bootstrap/container.cfm b/views/_bootstrap/container.cfm index 1b5e1ff..3377984 100644 --- a/views/_bootstrap/container.cfm +++ b/views/_bootstrap/container.cfm @@ -27,6 +27,7 @@ case "start" : param attributes.rendered = true; param attributes.style = ""; param attributes.styleClass = ""; + param attributes.tag = 'div'; param attributes.throwOnError = application.Bootstrap.throwOnError; param attributes.tooltip = ""; param attributes.tooltipPosition = "bottom"; @@ -50,8 +51,8 @@ case "end" : } - if(attributes.fluid) variables.result &= '
'; + variables.result &= variables.crlf & ''; variables.result &= variables.crlf; variables.result &= variables.crlf; diff --git a/views/docs/grid.cfm b/views/docs/grid.cfm index 49090ea..9de3d24 100644 --- a/views/docs/grid.cfm +++ b/views/docs/grid.cfm @@ -13,7 +13,7 @@
- + @@ -130,6 +130,13 @@ + + + tag + div + Div tag always works but is generic. Consider setting to section, article, or aside. + No Make sure that the inner content is clean + Antisamy throwOnError @@ -240,6 +247,13 @@ + + + tag + div + Div tag always works but is generic. Consider setting to section, article, or aside. + No Make sure that the inner content is clean + Antisamy throwOnError @@ -433,6 +447,13 @@ + + + tag + div + Div tag always works but is generic. Consider setting to section, article, or aside. + No Make sure that the inner content is clean + Antisamy throwOnError From 5657f5d9a04962660f611c44a4a8c194daa1a414 Mon Sep 17 00:00:00 2001 From: James Mohler Date: Sat, 24 Oct 2015 22:52:40 -0700 Subject: [PATCH 3/8] Fixed Style sheets Inline style sheets now work --- views/_bootstrap/blockquote.cfm | 2 +- views/_bootstrap/button.cfm | 2 +- views/_bootstrap/column.cfm | 2 +- views/_bootstrap/commandButton.cfm | 2 +- views/_bootstrap/container.cfm | 2 +- views/_bootstrap/dropMenu.cfm | 7 +++---- views/_bootstrap/fieldset.cfm | 2 +- views/_bootstrap/formGroup.cfm | 2 +- views/_bootstrap/graphicImage.cfm | 2 +- views/_bootstrap/h1.cfm | 2 +- views/_bootstrap/h2.cfm | 2 +- views/_bootstrap/h3.cfm | 2 +- views/_bootstrap/h4.cfm | 2 +- views/_bootstrap/h5.cfm | 2 +- views/_bootstrap/h6.cfm | 2 +- views/_bootstrap/icon.cfm | 2 +- views/_bootstrap/outputText.cfm | 4 +++- views/_bootstrap/p.cfm | 6 +++--- views/_bootstrap/panel.cfm | 2 +- views/_bootstrap/poll.cfm | 2 +- views/_bootstrap/progressBar.cfm | 2 +- views/_bootstrap/row.cfm | 2 +- views/_bootstrap/selectManyMenu.cfm | 2 +- views/_bootstrap/selectOneMenu.cfm | 2 +- views/_bootstrap/tabView.cfm | 2 +- views/_bootstrap/table.cfm | 2 +- views/_bootstrap/td.cfm | 2 +- views/_bootstrap/th.cfm | 2 +- views/_bootstrap/tr.cfm | 2 +- views/_bootstrap/well.cfm | 2 +- views/_bootstrap/wysiwyg.cfm | 5 ++++- 31 files changed, 40 insertions(+), 36 deletions(-) diff --git a/views/_bootstrap/blockquote.cfm b/views/_bootstrap/blockquote.cfm index 21d97e0..ed4d3ab 100644 --- a/views/_bootstrap/blockquote.cfm +++ b/views/_bootstrap/blockquote.cfm @@ -73,7 +73,7 @@ case "end" : for(variables.myAttr in variables.arAttrSeries) variables.result &= ' #variables.myAttr.key.lcase()#="#encodeForHTMLAttribute(variables.myAttr.value)#"'; - if(attributes.style != "") variables.result &= ' style="#encodeForCSS(attributes.style)#"'; + if(attributes.style != "") variables.result &= ' style="#encodeForHTMLAttribute(attributes.style)#"'; if(attributes.tooltip != "") variables.result &= ' title="#encodeForHTMLAttribute(attributes.tooltip)#"'; if(attributes.tooltip != "") variables.result &= ' data-placement="#encodeForHTMLAttribute(attributes.tooltipPosition)#"'; if(attributes.tooltip != "") variables.result &= ' data-toggle="tooltip"'; diff --git a/views/_bootstrap/button.cfm b/views/_bootstrap/button.cfm index 8996ae1..966ffa3 100644 --- a/views/_bootstrap/button.cfm +++ b/views/_bootstrap/button.cfm @@ -95,7 +95,7 @@ case "end" : for(variables.myAttr in variables.arAttrSeries) variables.result &= ' #lcase(variables.myAttr.key)#="#encodeForHTMLAttribute(variables.myAttr.value)#"'; if(attributes.role != "") variables.result &= ' role="#encodeForHTMLAttribute(attributes.role)#"'; - if(attributes.style != "") variables.result &= ' style="#encodeForCSS(attributes.style)#"'; + if(attributes.style != "") variables.result &= ' style="#encodeForHTMLAttribute(attributes.style)#"'; if(attributes.tooltip != "") variables.result &= ' title="#encodeForHTMLAttribute(attributes.tooltip)#"'; if(attributes.tooltip != "") variables.result &= ' data-placement="#encodeForHTMLAttribute(attributes.tooltipPosition)#"'; diff --git a/views/_bootstrap/column.cfm b/views/_bootstrap/column.cfm index 8a81de2..41a732c 100644 --- a/views/_bootstrap/column.cfm +++ b/views/_bootstrap/column.cfm @@ -77,7 +77,7 @@ case "end" : if(attributes.styleClass != "") variables.result &= ' #attributes.styleClass#'; variables.result &= '"'; if(attributes.id != "") variables.result &= ' id="#encodeForHTMLAttribute(attributes.id)#"'; - if(attributes.style != "") variables.result &= ' style="#encodeForCSS(attributes.style)#"'; + if(attributes.style != "") variables.result &= ' style="#encodeForHTMLAttribute(attributes.style)#"'; if(attributes.tooltip != "") variables.result &= ' title="#encodeForHTMLAttribute(attributes.tooltip)#"'; if(attributes.tooltip != "") variables.result &= ' data-placement="#encodeForHTMLAttribute(attributes.tooltipPosition)#"'; diff --git a/views/_bootstrap/commandButton.cfm b/views/_bootstrap/commandButton.cfm index 4538534..bbc81ce 100644 --- a/views/_bootstrap/commandButton.cfm +++ b/views/_bootstrap/commandButton.cfm @@ -98,7 +98,7 @@ case "end" : for(variables.myAttr in variables.arAttrSeries) variables.result &= ' #lcase(variables.myAttr.key)#="#variables.myAttr.value#"'; if(attributes.role != "") variables.result &= ' role="#encodeForHTMLAttribute(attributes.role)#"'; - if(attributes.style != "") variables.result &= ' style="#encodeForCSS(attributes.style)#"'; + if(attributes.style != "") variables.result &= ' style="#encodeForHTMLAttribute(attributes.style)#"'; if(attributes.tooltip != "") variables.result &= ' title="#encodeForHTMLAttribute(attributes.tooltip)#"'; if(attributes.disabled) variables.result &= ' disabled="disabled"'; variables.result &= '>'; diff --git a/views/_bootstrap/container.cfm b/views/_bootstrap/container.cfm index 3377984..0024822 100644 --- a/views/_bootstrap/container.cfm +++ b/views/_bootstrap/container.cfm @@ -56,7 +56,7 @@ case "end" : if(attributes.styleClass != "") variables.result &= ' #encodeForHTMLAttribute(attributes.styleClass)#'; variables.result &= '"'; if(attributes.id != "") variables.result &= ' id="#encodeForHTMLAttribute(attributes.id)#"'; - if(attributes.style != "") variables.result &= ' style="#encodeForCSS(attributes.style)#"'; + if(attributes.style != "") variables.result &= ' style="#encodeForHTMLAttribute(attributes.style)#"'; if(attributes.tooltip != "") variables.result &= ' title="#encodeForHTMLAttribute(attributes.tooltip)#"'; if(attributes.tooltip != "") variables.result &= ' data-placement="#encodeForHTMLAttribute(attributes.tooltipPosition)#"'; if(attributes.tooltip != "") variables.result &= ' data-toggle="tooltip"'; diff --git a/views/_bootstrap/dropMenu.cfm b/views/_bootstrap/dropMenu.cfm index 868eee1..cb3446f 100644 --- a/views/_bootstrap/dropMenu.cfm +++ b/views/_bootstrap/dropMenu.cfm @@ -38,10 +38,9 @@ case "start" : case "end" : - if(attributes.key != "" ) { - thisTag.GeneratedContent = application.geti18n(attributes.key, attributes.placeholder); - attributes.isSafeHTML = true; - } + if(attributes.key != "" ) { + attributes.value = application.geti18n(attributes.key, attributes.placeholder); + } variables.result &= crlf & '
+ + + + + + + \ No newline at end of file diff --git a/layouts/innovation/assets/css/print.css b/layouts/innovation/assets/css/print.css new file mode 100755 index 0000000..ba7f2d1 --- /dev/null +++ b/layouts/innovation/assets/css/print.css @@ -0,0 +1,18 @@ +/* + * print styles + * inlined to avoid required HTTP connection www.phpied.com/delay-loading-your-print-css/ + */ +@media print { + * { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important; + -ms-filter: none !important; } /* black prints faster: sanbeiji.com/archives/953 */ + a, a:visited { color: #444 !important; text-decoration: underline; } + a[href]:after { content: " (" attr(href) ")"; } + abbr[title]:after { content: " (" attr(title) ")"; } + .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } /* don't show links for images, or javascript/internal links */ + pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } + thead { display: table-header-group; } /* css-discuss.incutio.com/wiki/Printing_Tables */ + tr, img { page-break-inside: avoid; } + @page { margin: 0.5cm; } + p, h2, h3 { orphans: 3; widows: 3; } + h2, h3{ page-break-after: avoid; } +} \ No newline at end of file diff --git a/layouts/innovation/assets/css/reset.css b/layouts/innovation/assets/css/reset.css new file mode 100755 index 0000000..a6e4bd7 --- /dev/null +++ b/layouts/innovation/assets/css/reset.css @@ -0,0 +1,226 @@ +/* + HTML5 ? Boilerplate + + style.css contains a reset, font normalization and some base styles. + + credit is left where credit is due. + much inspiration was taken from these projects: + yui.yahooapis.com/2.8.1/build/base/base.css + camendesign.com/design/ + praegnanz.de/weblog/htmlcssjs-kickstart +*/ + +/* + html5doctor.com Reset Stylesheet (Eric Meyer's Reset Reloaded + HTML5 baseline) + v1.6.1 2010-09-17 | Authors: Eric Meyer & Richard Clark + html5doctor.com/html-5-reset-stylesheet/ +*/ + +html, body, div, span, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, +small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, figcaption, figure, +footer, header, hgroup, menu, nav, section, summary, +time, mark, audio, video { + margin:0; + padding:0; + border:0; + font-size:100%; + font: inherit; + vertical-align:baseline; +} + +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display:block; +} + +blockquote, q { quotes:none; } + +blockquote:before, blockquote:after, +q:before, q:after { content:''; content:none; } + +ins { background-color:#ff9; color:#000; text-decoration:none; } + +mark { background-color:#ff9; color:#000; font-style:italic; font-weight:bold; } + +del { text-decoration: line-through; } + +abbr[title], dfn[title] { border-bottom:1px dotted; cursor:help; } + +table { border-collapse:collapse; border-spacing:0; } + +hr { display:block; height:1px; border:0; border-top:1px solid #ccc; margin:1em 0; padding:0; } + +input, select { vertical-align:middle; } + +/* END RESET CSS */ + + +/* fonts.css from the YUI Library: developer.yahoo.com/yui/ + refer to developer.yahoo.com/yui/3/cssfonts/ for font sizing percentages + + there are three custom edits: + * remove arial, helvetica from explicit font stack + * we normalize monospace styles ourselves + * table font-size is reset in the HTML5 reset above so there is no need to repeat +*/ +body { font:13px/1.231 sans-serif; *font-size:small; } /* hack retained to preserve specificity */ + +select, input, textarea, button { font:99% sans-serif; } + +/* normalize monospace sizing + * en.wikipedia.org/wiki/MediaWiki_talk:Common.css/Archive_11#Teletype_style_fix_for_Chrome + */ +pre, code, kbd, samp { font-family: monospace, sans-serif; } + + +/* + * minimal base styles + */ + + +body, select, input, textarea { + /* #444 looks better than black: twitter.com/H_FJ/statuses/11800719859 */ + color: #444; + /* set your base font here, to apply evenly */ + /* font-family: Georgia, serif; */ +} + +/* headers (h1,h2,etc) have no default font-size or margin, + you'll want to define those yourself. */ +h1,h2,h3,h4,h5,h6 { font-weight: bold; } + +/* always force a scrollbar in non-IE: */ +html { overflow-y: scroll; } + + +/* accessible focus treatment: people.opera.com/patrickl/experiments/keyboard/test */ +a:hover, a:active { outline: none; } + +a, a:active, a:visited { color: #607890; } +a:hover { color: #036; } + + +ul, ol { margin-left: 2em; } +ol { list-style-type: decimal; } + +/* remove margins for navigation lists */ +nav ul, nav li { margin: 0; list-style:none; list-style-image: none; } + +small { font-size: 85%; } +strong, th { font-weight: bold; } + +td { vertical-align: top; } + +/* set sub, sup without affecting line-height: gist.github.com/413930*/ +sub, sup { font-size: 75%; line-height: 0; position: relative; } +sup { top: -0.5em; } +sub { bottom: -0.25em; } + +pre { + /* www.pathf.com/blogs/2008/05/formatting-quoted-code-in-blog-posts-css21-white-space-pre-wrap/ */ + white-space: pre; white-space: pre-wrap; white-space: pre-line; word-wrap: break-word; + padding: 15px; +} + +textarea { overflow: auto; } /* www.sitepoint.com/blogs/2010/08/20/ie-remove-textarea-scrollbars/ */ + +.ie6 legend, .ie7 legend { margin-left: -7px; } /* thnx ivannikolic! */ + +/* align checkboxes, radios, text inputs with their label by: Thierry Koblentz tjkdesign.com/ez-css/css/base.css */ +input[type="radio"] { vertical-align: text-bottom; } +input[type="checkbox"] { vertical-align: bottom; } +.ie7 input[type="checkbox"] { vertical-align: baseline; } +.ie6 input { vertical-align: text-bottom; } + +/* hand cursor on clickable input elements */ +label, input[type="button"], input[type="submit"], input[type="image"], button { cursor: pointer; } + +/* webkit browsers add a 2px margin outside the chrome of form elements */ +button, input, select, textarea { margin: 0; } + +/* colors for form validity */ +input:valid, textarea:valid { } +input:invalid, textarea:invalid { + border-radius: 1px; + -moz-box-shadow: 0px 0px 5px red; + -webkit-box-shadow: 0px 0px 5px red; + box-shadow: 0px 0px 5px red; +} +.no-boxshadow input:invalid, +.no-boxshadow textarea:invalid { background-color: #f0dddd; } + + +/* These selection declarations have to be separate. + No text-shadow: twitter.com/miketaylr/status/12228805301 + Also: hot pink. */ +::-moz-selection{ background: #333; color:#fff; text-shadow: none; } +::selection { background:#333; color:#fff; text-shadow: none; } + +/* j.mp/webkit-tap-highlight-color */ +a:link { -webkit-tap-highlight-color: #FF5E99; } + +/* make buttons play nice in IE: + www.viget.com/inspire/styling-the-button-element-in-internet-explorer/ */ +button { width: auto; overflow: visible; } + +/* bicubic resizing for non-native sized IMG: + code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/ */ +.ie7 img { -ms-interpolation-mode: bicubic; } + + + /* Primary Styles + Author: + */ + + + + + + + + + + + + + + + + + /* + * Non-semantic helper classes: please define your styles before this section. + */ + + /* for image replacement */ + .ir { display: block; text-indent: -999em; overflow: hidden; background-repeat: no-repeat; text-align: left; direction: ltr; } + + /* Hide for both screenreaders and browsers + css-discuss.incutio.com/wiki/Screenreader_Visibility */ + .hidden { display: none; visibility: hidden; } + + /* Hide only visually, but have it available for screenreaders: by Jon Neal + www.webaim.org/techniques/css/invisiblecontent/ & j.mp/visuallyhidden */ + .visuallyhidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + } + + /* Hide visually and from screenreaders, but maintain layout */ + .invisible { visibility: hidden; } + + /* >> The Magnificent CLEARFIX: Updated to prevent margin-collapsing on child elements << j.mp/bestclearfix */ + .clearfix:before, .clearfix:after { content: "\0020"; display: block; height: 0; visibility: hidden; } + .clearfix:after { clear: both; } + /* fix clearfix: blueprintcss.lighthouseapp.com/projects/15318/tickets/5-extra-margin-padding-bottom-of-page */ + .clearfix { zoom: 1; } \ No newline at end of file diff --git a/layouts/innovation/assets/images/break.png b/layouts/innovation/assets/images/break.png new file mode 100755 index 0000000000000000000000000000000000000000..9dd2b149ac1d77f16746d64d9bdbbae6ea8d5912 GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eL!3HGH8OdY;DVAa<&kznEsNqQI0P;BtJR*x3 z7`TN%nDNrxx<5ccnG)BClHmNblJdl&R0hYC{G?O`x6Go{^8BLgVg=`5)55Kf&4B8} zK%&;(%Ypc82)CE9|44$rjF6*2UngFnaJxl-q literal 0 HcmV?d00001 diff --git a/layouts/innovation/assets/images/facebook.png b/layouts/innovation/assets/images/facebook.png new file mode 100755 index 0000000000000000000000000000000000000000..fe3fce097921ad36a8c84b2cd17a5722b90006b4 GIT binary patch literal 1214 zcmV;v1VQ_WP)mBROJ#7&t8{_NOKl~T1q%==V%bU+OQf=40e^sXq%M)zu&Km`4Pw(rgaj1`5<%%h zNrh+vc{EO3C%*Q5%nawuy*5pVn@SzY_8s4u@B7X<-A)n14mlIf8Z6XRK7+VCf4mSKi2%97+-P_P_kU;oBgzCXEo;@@KJB=ipb#QaG zj$3o<$k8)lg0Tf}h?S&5@1A=y0NSK%;N@7`)sfG;SY2zO zG>}CcYkJR-=x&O%3FlFR7w5AA`CKkdn2mo{HgM^?-;i+}*p3Cy74R}nf|X(lP3q0O zPXw&I=|_;U!fFF>Y$qkK(CUO(UiC3PQY51!s)du_B>hHnnA~fGQvI(7R9f9nKYZCt zBq`yIoB{^gH(J2wAD^J8Tofrqmw#HomFo*A6kHO*42lQ{foh&au&p~4k!nIbGjXEl zr6`IiViH6JEDh#y_PsZIt-ZXa@y+GC)NC1p$?F9NU^9V?>A~4bVCtiwq7ago6QO*l zR#HkhPHdudy(~f^H|vRWYLVIFNSWV+kOY}@ zCzvJzt}v&ImDzgRQDG%uZ=CxQQJj!XeR0nGpCd>8a$^zifATd(%7tV(5tT~?+M^66 zOrs$IrE>$y(L44qgLkd0EoDfRW;;p*l(yKMVcMKa++ZAmHYOp0sO=+cKY+iv2G6l~ zJnSq}56Z3Plt@!#8A~d7gpl?H+0fKMr)!xs%#$#}7W-;7RH`q)zTbfB^gpas+ACVc zCW5%5;pGcBa&iJAdop;qPebaN!=oj5v%f>M=^kj&MYFyO0oR{X6dRXN1f(?#0yOTg zLj>-Y$Ri@~g#*SG$fmxN6Znu_G~xv8|36ityelk*EnF-a7Ex)D(NVG9dIG67=? zztz0$+41w0p#jXVZ<_G>T{K*}fK>BY9EFr;s)J8An;**FIzje1P#%D5M__ExYOH;9 zWA@IqW3{6=I5dW~RM?@Z(LJh)gGHk@N7w6E*}?12jH6T#y*ndM>K!_+XKvpFV^fOk zsik{&Pk-O6PZkS%s>WTGwZnaoeEmG#Hum!<$MY*b{=74XV!=(#ZmeW)v>wcEHX0WM cVgD<@0KuG`_dQy@ZvX%Q07*qoM6N<$fV!Z literal 0 HcmV?d00001 diff --git a/layouts/innovation/assets/images/github.png b/layouts/innovation/assets/images/github.png new file mode 100755 index 0000000000000000000000000000000000000000..0ee3ca668e204087d520105188558c0efeb1d8b1 GIT binary patch literal 2430 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 literal 0 HcmV?d00001 diff --git a/layouts/innovation/assets/images/icons.txt b/layouts/innovation/assets/images/icons.txt new file mode 100755 index 0000000..04ebb52 --- /dev/null +++ b/layouts/innovation/assets/images/icons.txt @@ -0,0 +1,6 @@ +Vector Social Media Icons +by IconDock.com + +URL: http://icondock.com/free/vector-social-media-icons + +Note: the company logos in the icons are copyright of their respective owners. \ No newline at end of file diff --git a/layouts/innovation/assets/images/instagram.png b/layouts/innovation/assets/images/instagram.png new file mode 100755 index 0000000000000000000000000000000000000000..46495ef22add03964dd05b3a3947f9d7f41660c0 GIT binary patch literal 2094 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 literal 0 HcmV?d00001 diff --git a/layouts/innovation/assets/images/twitter-alt.png b/layouts/innovation/assets/images/twitter-alt.png new file mode 100755 index 0000000000000000000000000000000000000000..28384689f780d0b5791ff2759e2097cfa175d4e6 GIT binary patch literal 2450 zcmaJ@c{tSj9v+P*)!22664TgvEVCjeV;!WJGZ-2avs*HYnTa7;PetkIDqA^+Hg2Vi zNN$oulCq@8v{;Y*WJ%qzopDE{bN{&A-}C&Q-}m!<-uL~ypXHBVI+5V6ylLwu005xu zu?O!X|3X$@B@h6hkjqo%$O9drD_Q8vWeH=bd?vt&!KE>w9&BnT(}ziA#6~@3+5rGS zSU8C+Bzt*c>0CCPx{85|*gQEK0I+iq@u>7eOd*uU3=QYtVAC~qFlaaf2itGuh4kXN zFvG(4#PONFaRd@Q?hxIU0dug2+KI4o0X9=eg^Jjb9068@gMHD(%FnCU2pIGWM0f}X z`)Z2pMTEL=`An!49BDyES|g#>C^!mZxog)hb0`{#LL!i81PX0|+J(iSu}CEJ+XItl z<1<)TAH3VQT=ED93lj=?SOg*_CI%jZfphtx2$Zd@?WzVEZ6QZk2x2)xs>p&PFj!N- zGX->hI8PYP>zsWk3kAr2;Y`n3c$@4GBV@U2bqh9N{$9s&hNu9mb0^z!=uP&WHJ zS|Idc{_XdF3JXZFJSM`2Dc~OF)8&I>8LXz_VO{u4s*uYkak-IeT_lEagEWE!_zT|43+urV2&o)8(*uu#$ra$?;S8)L#>yFkx5Qv9ot;o9SERF>HPQy{ zWNqo}Vry$-<+R4dbLofKOpb7k%lMmX`9tpNDzJI-%y=e0JetXH<8#^2FC}Bcf9yp* z_8)oq%4Pi63;Ks#gxm~bb+G?6=(Q{P_N*SiudO`zzW7XzeB1f*wJ!PD?+E|^0(sz_ zNTN5ib8UfbY6I7ovK18V;-ra3S3a~Ss!w$kQcv^>qO2(q4p4l$YIyX&itm6zPChWEdn8gF=hr z|C&!9cv z8DdZYN>I1AIooqf&B4Oy+7*RQP$1zU2yCWp3kMn7C+H3DZnsA%p;zer8?a+bucsZ& z5>SwnVsxoWb|`UB_GCu7gg743mw?u-mgXl9k4p8ybpZ*;`1wZIJpU^O(uU&Tn#98&LqSa;bvk63Ox7SC z@7xD6E^4gnbAb4a7P2UzbjJMrkbZ+civuF~v&6-!jwZ7h3`%U5IBVJwyiYWGBQf$J zgqeE5v^hCqvp%tJs3b-PRP4VTAG|}U!AAC*L_+Oo_PKydH@c(!1Xt}lIe3!KBek7d zRweMWZaC{|5w>0I@yY55th{DX=gtc4jqQuYO{W37U-@!hjvg%xeb6V}9T>r9@^)Sb zuDJ00JZ$5RsK8RKvKG~&Z+r%Vr+TX?m#T_e<_Hn7JYgJ5H^(CpuC}7!H@-dggxgux zKU(~>TP>nLyX)^d-+2`%Ev zanp&YSxz z62te#w6U@cM#o4mPX1FHN7lNiMIvh1X?^;m{?K@Rg-O|__3BQ?23^(ERc)1MU6=I0 zC$HvJD(*d>R?PN%$*QP%y4ZUq=N0WFaB0`G`03UoebUoowKCDz^Kx0^)uAY-D6z9E zZ|D8S73G$#2@y^<{iz|ZW*DZ!wW313pGKdQ6abIVO=}t6nPL_5z!a+r((>mMz<&u( zxu@pIa-y>q- zH~H(jcH*y7h9)lS%uiVV+Obg(U9{~H{i@FSjDl>}fTJzuuvw#1PbEzAQYHKw&pqMd z*++reg$?e)q-e)3?@0IM+s-luF*d?yU??S3RbrmZvT{AFk+tu2kws;2%FH&sfU=4^ zjLK#MQ&g2{_Flm(e3DY4{%|?)Sk>zyiLqaLacD(nV|PPRPX>;qu4v4_2bD|~MFNkR373BY@2CEaxiXCANqC3(0K@VA^PDgOal C>J&-< literal 0 HcmV?d00001 diff --git a/layouts/innovation/assets/images/twitter.png b/layouts/innovation/assets/images/twitter.png new file mode 100755 index 0000000000000000000000000000000000000000..2cbb44aba0107976c164ac7446945565703b71ec GIT binary patch literal 1214 zcmV;v1VQ_WP)z$qX&N<)t&KWzOT%3U;+>?h(#j}UTMkbAc z#(%gR2kv4moL{at&LpY2B2#TnoSGQF{KiBDF8-g(JW-jxaC`0YPxF7Al;fr1xt9)A zu-4LOC2DXXeXLjX`8U_F=io)cytTT1PL_lGkyetTnW`Na!VQK5M*SR8dfaFvNK%dc z+Nrl_KN+b6!$+j+IGwguQXA9rI-ir6y|;<)e!h#ski>g$O~La7lrsBF1klzg7+Y$} zDPt!p%PmbJPE(xz@*3_ghTxZfhA}?>;274U&c4Z#t^i}pIMGP7LE4Q#IP{x%S%yIQ zXcggBf*ZA%1VHn&ZZ8Xa8D&hymWfgnI(p%23PiXLO2s@RZS{nUN;$xoClQzK2V=jQ z?Sw`;AO__yD+)4Ilt82H$SBH;c$5d1Hjf4#e!o}8%O79B?iBE2k{Z1K_LF$?xhk4* z+IuGmkFlu^=tp;01NJ45BhUHnN(UX2!$NdFJ(MoQM8&7yFW~v7%kXJ!H9dA!|eBNCrT62KDnEJm1@sd`?T$R#q57NNlT-F&W!NplkxQ4Vh_i$TcH`Miq!_|-zc3~q{c%d5L>vt!x5+wue z#B{$JI>CA?88Ge1xWxaRGKq?)sRqRR;s3-rHsb@^f1|Z zD^(3wk(4;Uin6mkG|46BOC&^-M=Dwf6a08%73E=xAm^gcH-el4Nww3z-(pxymZ?#e zTc(K}V=4N=!7GQ0_+cT$m~@dJE#RwP*0I!3m>w@cicAdFTe?41_Ax>ZZ5OMy^IW`& zbHKpbwhFh)kEE9;9`$i)DMu332q+5YkuuKTZs40=n>&2yY)n=?eD+S&8Zg~rWlYAF zDpl5tgd`|l%ZF5KNc2Y7X=Lf~8rnbg_yZQ7|0QmRIs zg=cn57&0=u7UEdBfa4F9Fk2@%rrZn%4QTCPdQ4#{+@N-obtBc4Xv&2aE9EzED#=Kufz07*qoM6N<$g6KCldjJ3c literal 0 HcmV?d00001 diff --git a/layouts/innovation/assets/images/vimeo.png b/layouts/innovation/assets/images/vimeo.png new file mode 100755 index 0000000000000000000000000000000000000000..fc1fb5182a3421c55668d29103108d0bb6b29e21 GIT binary patch literal 2513 zcmaJ@d00~E9!7CVL%W%km?_epA_ou=)ZEadD~>5Cj#G+2O0or{Xc|goYKzrqxs+?0 zSuVL`=9=V^mKM`(nNrD$=9<=6T4t%_5~t} zbb@~^ic0o{x$^`}7}f?r&;dIDW{0vtVQg_YoHYy$pa3L*MxxLN6pnyF6954A?SZSZ z2^hNxenii2xm1x8JVGSm6OhR0=xCd0j15l^jzr<{c(n!^jZh&F!WgcICPr|DYZerU zOd(ys;)_^3E=;XR3*+q*Il)zxerXsIOWb*%qayZ}7 zLXjWyzxDpDu#ghNXCnQWLf$?BUA4H~Yt*Uu1a|?GCgKSwJRW;tioOv%5ll>c#%gq8F}I?ol7V+g25PH$IcAa=Sof>t8)85Nef66sx!{lp8lNVkExvy&*U1-$T6TpW-uk4YT(? zjwvmYo`gs+7qYw1nO%B7{lwG}SO0ToExWemwvfrj9rO43iu=(zmy{tAz!6+G)Tgw7 z=#Dt)#2!y+p(f=iI-lf09C%HjoVmAME0dHi8>GLXe)f4jma*0C%uzj~Z4ggK3G}(+ zXN3$hgMnO=M$$%1c{yLh zLz4JLloLlXE0mlc3nzMPR_{R*p|HHQ#-53z zh1@W@rOY4*i#So-8yJ?t&8Fs=%fxwivSw0ORV1fjDtsMn7~2S&FI=In9i)(Qhh+#K z^CtVy-5p2o%av~-flvcTJN2$9HVAgcFa)%}(@eKpw;|JD{L{>5OM~AL%i27TS5pc! zA4jnBugOJ*WJL1Q>{W>Yo7WteOl&c?$h6)ul_oPPp7+>XQFJSspIS3iggDQK_s6t+`ucf8t|(dJs0>|!s4{B^(3XNhjg&e2772Z|p({%HQo9LR9r z;t|EJh@^)v8b~*9>^ggKX7GF^8nx-liG(pls7u+aKOAmOAzdy%ek3Ovd-iyTZ@auC zKfpxuo>hXS#<9h?J$(A2>{|5txkZ82GUw1RQHjILa%|#ZOQUBdVZ9x0@GXU!ciZ+5 zFQh;6Q4ZhozXm&=;v>LhIS6~AKa8IjHlDKS%QeHx`|(2Vm0$)`N^W>hY!%;Zum|3PQAj&$&_;c+Q zBNuUH{<}AptHH7Lro98W=)CZg_jBwe)`w5^wNBeHgtN1UtpkKi;=2yZpQO!~#AX5V zyLLx_8+>Zp#W|h0$y2SK1r+UG3Uu|6!t$(xxY#~25BxoYglnUaAiyNEv6%v!h4C`j*&~-WhSfX z|Mu4y=5VY_W$Cp$q-N`OYS+NUAp;f8@?R;WEzMl_6Ety{;j)!FsNU1Wq~ZPSC_R6x zoZj1Y`PEggN(RHq1nh0K4|jmcn@YRtEBHf@l1{95&emBI`QETmY<--$0G{Y|75ZoH zdgFLS_5+QUtnOrzcjEO!qqj2Fm)Jfn@F@S;b~B>6tUx|R0W?<$C*D)Bb%`cMb%UmU zRjFnb%lmDU`s&4YS6QcW+KVc-1P8>=J3qEI$`{wXPEWPyGkr5Ob2MvGZ>7)D?x6TY Qsro02z;kq_kH`@`|NerJ?g%DhlZ-Y zDgXc)t}YZ$`4_hGDnkK4A&;-Yl?QNoE;?-Drtud-a>=Qhb3hKZr^F*r1KrKB%FD)s+E zIh?O(p~#c@kKg|(EcA}$Gcle_Aum!ummeH!!%8YX!BN1ZiFg8U9`C@HF1m;DL_A>_ zkB@NlvOrL2bT)S-{)DGe39ekBh{mNeT`44_Tmj8yGYIC^4me9E3nw#k2YVdO3G3i& ziM7VtTbesK+SpiI*ni23v2pfv;xXgOGR2Ah58(7%0%t0G8W30mX_+0FcQ5h$1%xI;sc&MrZN?1x*b= z_CX4~XE6cA^n(+%q;=Q5bG+>}m6S?e$7dF4vLFR{->s8q8?5b}UYzAY4as7tkEIXv zYPF_;&2o^d{j!+lGX(Cy1TKkZ-blplRz9^LINH$GVuIE*hlc6)-EQ8ix4la&3w}b1 zEPVQC@TGb{?ppO@vP0@*MH0+!WNERjMbZ3hPy4B-hHC32#k^72$jm`J0MQ=%wWkrY zs^Q_wWyOYsg@G;V&7h2BvgK0n+$wK%!4$cK3@Wip=x{&(0=OT;xa~AqA<_(w$0;i- zW7Cfw#plDHX6RA-Ugi_#lx4CIETc`$dr;I3(2I~I`|yQ z6gFaDcdKQSa6Dnv+M)S_wzHA3rL0#qa+P3 zwrVt4@3HF*-C*i%hcqI^I!*?Iq6|SvbEP>8yb4JV$>tRODG5;P9%bu@P%a za+)-@Ci8WQC!bxdznVB}W_Eyy+O!{E3Z1gl?Uf#|(;rv@b{>9`g?JK}c{F`fM|2oo z$5Oxhkcw?o-6;Zlz5eiQF8ysDWzi-_pP=c9EUQ_oYYqiOApt(&=orMww9XJ zOr(tF&d`GlEt}6I?llE=-7~j@W``6PmTi1?a`LX{x-(O=#8aXH)X}&eCfR5!#^%Zd zUKjP+hh%J{rZZNSoyQO3wUzt2?w=Z0sXvi%;*#%lLb(3r)taTxtoa4EH6@#7N~?Tl zMVxg$78K~u$mE=?dz+nhYM2kdv$Pz0*?~E-tlH;4m`c$}dm0+m@vmrB9rX{1e*P+^ z!!R{n^`-XE#xg^c36=zR5fy|taRL0vb4n`mmS{lrlGN# zY*u~$eNV1VxmyCSwn&88}E2@ z&1c@0UOXo9JTjBd%*s; zFB~{M+{caat3!8NotF-{9=U5t$RFnBS^@;(N*X zI7D;E%KEat|FK}f#>Lkgo3iS8RSA@&r}4u4h5l zj1}u-bZBoyJ1fjb)z+-a9vizjT%8GQS}^?h*I=I-rBg72Mz864erJbIa!YR9&rL1| zF8WoS$;i+>Rp_4Xu9vyGHQ4BxL`}0zu`9Rrtrz^<;b{k0VAVSPAKH)+0bHw_;^OnY z3?XulX4iEw>78?4|16NyF1bUQQfTrH4@aErJCWSKjW?@dA|#q-$3gB?k&{~%Jzxo$ zC5s7UJ@x6OQ>1IR6Z_@@e6`pY1@zKNY>B?v!FMp1yS+wp^+Cjtw9Avch!h-2k~Pel zSN-jXRx6d#RHxPXsP4(IyF%pMz_KH0SvT*sNQ8lt4s=vN{kde=N$+CL9D>EbC z=ck1W)%C7*smAPyO=d_4s$?BE5ZmSM_B^YpG{5p>iP_%R>sCHF$gYK}N6t;(+A|xk zT{hmn`DTk_e8Dd@jE8FeFVPsoK;IkXx5#=e2HE z8HjbVueTGYPDop8qBL4uFZT2}miuklmb+oCYOrWpk}kTz$bl6#2855qRt2Fp+&`cK p). +* Author: Drew Diller +* Email: drew.diller@gmail.com +* URL: http://www.dillerdesign.com/experiment/DD_belatedPNG/ +* Version: 0.0.8a +* Licensed under the MIT License: http://dillerdesign.com/experiment/DD_belatedPNG/#license +* +* Example usage: +* DD_belatedPNG.fix('.png_bg'); // argument is a CSS selector +* DD_belatedPNG.fixPng( someNode ); // argument is an HTMLDomElement +**/ +var DD_belatedPNG={ns:"DD_belatedPNG",imgSize:{},delay:10,nodesFixed:0,createVmlNameSpace:function(){if(document.namespaces&&!document.namespaces[this.ns]){document.namespaces.add(this.ns,"urn:schemas-microsoft-com:vml")}},createVmlStyleSheet:function(){var b,a;b=document.createElement("style");b.setAttribute("media","screen");document.documentElement.firstChild.insertBefore(b,document.documentElement.firstChild.firstChild);if(b.styleSheet){b=b.styleSheet;b.addRule(this.ns+"\\:*","{behavior:url(#default#VML)}");b.addRule(this.ns+"\\:shape","position:absolute;");b.addRule("img."+this.ns+"_sizeFinder","behavior:none; border:none; position:absolute; z-index:-1; top:-10000px; visibility:hidden;");this.screenStyleSheet=b;a=document.createElement("style");a.setAttribute("media","print");document.documentElement.firstChild.insertBefore(a,document.documentElement.firstChild.firstChild);a=a.styleSheet;a.addRule(this.ns+"\\:*","{display: none !important;}");a.addRule("img."+this.ns+"_sizeFinder","{display: none !important;}")}},readPropertyChange:function(){var b,c,a;b=event.srcElement;if(!b.vmlInitiated){return}if(event.propertyName.search("background")!=-1||event.propertyName.search("border")!=-1){DD_belatedPNG.applyVML(b)}if(event.propertyName=="style.display"){c=(b.currentStyle.display=="none")?"none":"block";for(a in b.vml){if(b.vml.hasOwnProperty(a)){b.vml[a].shape.style.display=c}}}if(event.propertyName.search("filter")!=-1){DD_belatedPNG.vmlOpacity(b)}},vmlOpacity:function(b){if(b.currentStyle.filter.search("lpha")!=-1){var a=b.currentStyle.filter;a=parseInt(a.substring(a.lastIndexOf("=")+1,a.lastIndexOf(")")),10)/100;b.vml.color.shape.style.filter=b.currentStyle.filter;b.vml.image.fill.opacity=a}},handlePseudoHover:function(a){setTimeout(function(){DD_belatedPNG.applyVML(a)},1)},fix:function(a){if(this.screenStyleSheet){var c,b;c=a.split(",");for(b=0;bn.H){i.B=n.H}d.vml.image.shape.style.clip="rect("+i.T+"px "+(i.R+a)+"px "+i.B+"px "+(i.L+a)+"px)"}else{d.vml.image.shape.style.clip="rect("+f.T+"px "+f.R+"px "+f.B+"px "+f.L+"px)"}},figurePercentage:function(d,c,f,a){var b,e;e=true;b=(f=="X");switch(a){case"left":case"top":d[f]=0;break;case"center":d[f]=0.5;break;case"right":case"bottom":d[f]=1;break;default:if(a.search("%")!=-1){d[f]=parseInt(a,10)/100}else{e=false}}d[f]=Math.ceil(e?((c[b?"W":"H"]*d[f])-(c[b?"w":"h"]*d[f])):parseInt(a,10));if(d[f]%2===0){d[f]++}return d[f]},fixPng:function(c){c.style.behavior="none";var g,b,f,a,d;if(c.nodeName=="BODY"||c.nodeName=="TD"||c.nodeName=="TR"){return}c.isImg=false;if(c.nodeName=="IMG"){if(c.src.toLowerCase().search(/\.png$/)!=-1){c.isImg=true;c.style.visibility="hidden"}else{return}}else{if(c.currentStyle.backgroundImage.toLowerCase().search(".png")==-1){return}}g=DD_belatedPNG;c.vml={color:{},image:{}};b={shape:{},fill:{}};for(a in c.vml){if(c.vml.hasOwnProperty(a)){for(d in b){if(b.hasOwnProperty(d)){f=g.ns+":"+d;c.vml[a][d]=document.createElement(f)}}c.vml[a].shape.stroked=false;c.vml[a].shape.appendChild(c.vml[a].fill);c.parentNode.insertBefore(c.vml[a].shape,c)}}c.vml.image.shape.fillcolor="none";c.vml.image.fill.type="tile";c.vml.color.fill.on=false;g.attachHandlers(c);g.giveLayout(c);g.giveLayout(c.offsetParent);c.vmlInitiated=true;g.applyVML(c)}};try{document.execCommand("BackgroundImageCache",false,true)}catch(r){}DD_belatedPNG.createVmlNameSpace();DD_belatedPNG.createVmlStyleSheet(); \ No newline at end of file diff --git a/layouts/innovation/footer.cfm b/layouts/innovation/footer.cfm new file mode 100644 index 0000000..9270136 --- /dev/null +++ b/layouts/innovation/footer.cfm @@ -0,0 +1,23 @@ + + + + + + + + + + \ No newline at end of file diff --git a/layouts/innovation/header.cfm b/layouts/innovation/header.cfm new file mode 100644 index 0000000..d8d0f88 --- /dev/null +++ b/layouts/innovation/header.cfm @@ -0,0 +1,53 @@ + + + + + + + + + + #rc.get_page_clean_title# - #rc.get_site_name# + + + + + + + + + + #rc.get_header# + + + + + + +
+
+
+ + + + + + +
+
+ + + + +
+
+ \ No newline at end of file diff --git a/layouts/innovation/images/screenshot.png b/layouts/innovation/images/screenshot.png new file mode 100755 index 0000000000000000000000000000000000000000..cf9c4d33694d5dc4ff37a59a159b55a14b1d0d7b GIT binary patch literal 28749 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 literal 0 HcmV?d00001 diff --git a/layouts/innovation/sidebar.cfm b/layouts/innovation/sidebar.cfm new file mode 100644 index 0000000..72a76ab --- /dev/null +++ b/layouts/innovation/sidebar.cfm @@ -0,0 +1,29 @@ + + + + + + diff --git a/layouts/innovation/style.css b/layouts/innovation/style.css new file mode 100755 index 0000000..de53b33 --- /dev/null +++ b/layouts/innovation/style.css @@ -0,0 +1,327 @@ +/* GENERAL */ +body { + background:#EFEFEF; +} +.wrapper { + width:950px; + margin:0 auto; + position:relative; + display:block; +} +a:link, a:visited { + color:#316594; + text-decoration:underline; +} +a:hover, a:focus { + color:#222; + text-decoration:underline; +} + + +/* HEADER */ +.header { + background: #6B94B4; + background: -moz-linear-gradient(top, #6B94B4 0%, #316594 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#6B94B4), color-stop(100%,#316594)); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#6B94B4', endColorstr='#316594',GradientType=0 ); + height:80px; + border-bottom:#2B5780 1px solid; +} + +/* HEADER: breadcrumbs */ +header .breadcrumbs { + text-shadow: 1px 1px 0px rgba(255,255,255,.5); + border-top:#FFF 1px solid; + border-bottom:#ccc 1px solid; + font-size:11px; + height:25px; + line-height:25px; + overflow:hidden; + color:#666; + text-transform:uppercase; + width:100%; + background: #eee; + background: -moz-linear-gradient(top, #EDEDED 0%, #D5D5D5 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#EDEDED), color-stop(100%,#D5D5D5)); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#EDEDED', endColorstr='#D5D5D5',GradientType=0 ); +} +header .breadcrumbs a:link, +header .breadcrumbs a:visited { + color:#666; + text-decoration:underline; +} +header .breadcrumbs a:focus, +header .breadcrumbs a:hover { + color:#316594; + text-decoration:underline; +} +#index header .breadcrumbs { + display:none; /* no reason to have breadcrumbs on homepage */ +} + +/* HEADER: logo */ +header #logo { + position:absolute; + top:20px; + left:0; + font-size:35px; + white-space:nowrap; + color:#fff; + font-family: 'Yanone Kaffeesatz', arial, helvetica, sans-serif; + text-transform:uppercase; + text-shadow: 1px 1px 0px rgba(0,0,0, .4); +} +header #logo:link, +header #logo:visited, +header #logo:hover, +header #logo:focus { + text-decoration:none; +} + +/* HEADER: navigation */ +header nav { + position:absolute; + top:30px; + right:0; + text-shadow: 1px 1px 0px rgba(0,0,0, .3); +} +header nav ul { + list-style:none; + float:right; +} +header nav li { + display:block; + float:left; + margin:0 0 0 10px; +} +header nav li a { + display:block; + font-size:13px; + padding:5px 15px; + text-transform:uppercase; + font-weight:bold; +} +header nav li a:link, +header nav li a:visited { + color:#eee; + text-decoration:none; +} +header nav li a:hover, +header nav li a:focus { + color:#FFF; + text-decoration:none; +} +header nav li.current a { + color:#FFF; + background:#7096B6; + background:rgba(255,255,255,.2); + text-decoration:none; + border-radius:40px; + -moz-border-radius:40px; + -khtml-border-radius:40px; + -webkit-border-radius:40px; +} + + +/* BODY CONTENT */ +article { + float:left; + width:688px; + min-height:500px; + background:#fff; + border-bottom:1px solid #c8c8c8; + border-left:1px solid #e4e4e4; + border-right:1px solid #c8c8c8; + -moz-box-shadow: 2px 1px 10px rgba(0,0,0, .07); + -webkit-box-shadow: 2px 1px 10px rgba(0,0,0, .07); + box-shadow: 2px 1px 10px rgba(0,0,0, .07); +} +article h1 { + font-family: 'Yanone Kaffeesatz', arial, helvetica, sans-serif; + margin:0 0 45px 0; + color: #275176; + font-size:37px; +} +article h2 { + font-family: 'Yanone Kaffeesatz', arial, helvetica, sans-serif; + margin:0 0 10px 0; + color: #222222; + font-size:30px; +} +article h3 { + font-family: 'Yanone Kaffeesatz', arial, helvetica, sans-serif; + margin:0 0 15px 0; + color: #275176; + font-size:25px; +} +article h4 { + font-family: 'Yanone Kaffeesatz', arial, helvetica, sans-serif; + margin:0 0 10px 0; + color: #555; + font-size:20px; + font-weight:100; +} +article h5 { + font-family: arial, serif; + margin:0 0 10px 0; + color: #333; + font-size:15px; +} +article h6 { + font-family: arial, serif; + margin:0 0 10px 0; + color: #666; + font-size:14px; +} +article section { + padding:40px; + line-height:22px; + font-size:14px; + color:#333; +} +article section p {margin:0 0 25px 0;} +article section ul, +article section ol { + margin:0 0 25px 30px; +} +article section ul ul, +article section ol ol, +article section ul ol, +article section ol ul { + margin:0 0 0 25px; +} +article section code { + border:1px solid #ccc; + background:#f6f6f6; + font-size:12px; + padding:1px; +} +article section pre { + border:1px solid #ccc; + background:#f6f6f6; + padding:15px; + margin:0 0 25px 0; + line-height:16px; + font-size:13px; + color:#555; + text-shadow: 1px 1px 0px #fff; + border-radius:0 4px 4px 0; + -moz-border-radius:0 4px 4px 0; + -khtml-border-radius:0 4px 4px 0; + -webkit-border-radius:0 4px 4px 0; +} +article section pre code { + border:none; + background:none; + padding:none; +} +article section blockquote { + margin:0 0 25px 20px; + color:#555; + line-height:20px; + font-family:georgia, garamond, serif; + font-style:italic; + padding:0 0 0 15px; + border-left:1px solid #ccc; +} +article section .footer { + color:#888; + font-size:11px; + margin-top:40px; + border-top:1px dotted #ccc; + padding-top:15px; +} +article section .footer p { + margin:0 0 10px 0; +} + + +/* SIDEBAR */ +aside { + float:right; + width:260px; + margin:40px 0 0 0; +} +aside .section { + padding:0 0 0 30px; +} +aside .section { + margin:0 0 40px 0; + font-size:11px; + line-height:16px; + color:#555; + text-shadow: 1px 1px 0px #fff; +} +aside .section p { + margin:0 0 15px 0; +} +aside .section ul, +aside .section ol { + margin:0 0 15px 20px; +} +aside .section h2 { + background:#333; + border-top:1px solid rgba(255,255,255,.4); + text-shadow: 1px 1px 0px rgba(0,0,0,.5); + text-transform:uppercase; + background: -moz-linear-gradient(top, #444 0%, #222 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#444), color-stop(100%,#222)); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#444444', endColorstr='#222222',GradientType=0 ); + font-family: 'Yanone Kaffeesatz', arial, helvetica, sans-serif; + font-weight:100; + color:#fff; + font-size:19px; + line-height:19px; + margin:0 0 20px -31px; + padding:5px 0 7px 25px; + border-radius:0 4px 4px 0; + -moz-border-radius:0 4px 4px 0; + -khtml-border-radius:0 4px 4px 0; + -webkit-border-radius:0 4px 4px 0; +} + +/* SIDEBAR: socialmedia */ +aside #socialmedia { + position:relative; +} +aside #socialmedia h2 { + width:65px; + background: #316594; + background: -moz-linear-gradient(top, #316594 0%, #2C5983 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#316594), color-stop(100%,#2C5983)); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#316594', endColorstr='#2C5983',GradientType=0 ); +} +aside #socialmedia .icons { + position:absolute; + top:3px; + left:100px; +} +aside #socialmedia .icons a{ + margin:0 2px; +} + +/* FOOTER */ +footer { + padding:20px 0; + text-shadow: 1px 1px 0px rgba(255,255,255,.8); + color:#888; + font-size:11px; +} +footer .left { + float:left; + width:40%; + text-align:left; +} +footer .right { + float:right; + width:60%; + text-align:right; +} +footer a:link, footer a:visited { + color:#888; + text-decoration:underline; +} +footer a:hover, footer a:focus { + color:#555; + text-decoration:underline; +} diff --git a/layouts/pages.cfm b/layouts/pages.cfm new file mode 100644 index 0000000..c2fabaa --- /dev/null +++ b/layouts/pages.cfm @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#body# + + diff --git a/model/services/GS.cfc b/model/services/GS.cfc new file mode 100644 index 0000000..a223731 --- /dev/null +++ b/model/services/GS.cfc @@ -0,0 +1,28 @@ +component { + + +string function get_site_root() { + + return this.suggest_site_path(); + + } + + + +// Suggestion function for SITEURL variable +string function suggest_site_path() output="false" { + + + + return "http://" & cgi.server_name & (cgi.server_port != 80 ? ":" & cgi.server_port : "") & "/" & cgi.script_name.replace("index.cfm", ""); + } + + +string function get_site_version() output="false" { + + + return application.GSVERSION; + } + + +} \ No newline at end of file diff --git a/model/services/page.cfc b/model/services/page.cfc new file mode 100644 index 0000000..f96dea4 --- /dev/null +++ b/model/services/page.cfc @@ -0,0 +1,337 @@ +component { + + +query function findAll(string mode = "default") output="false" { + + + local.qryResult = QueryNew("Title,Slug,DateLastModified,isHome,Menu,MenuOrder,MenuStatus,Parent,Private"); + + for(local.row in directoryList(application.GSDATAPAGESPATH, false, "query", "*.xml")) { + + local.Page = this.get(local.row.name.listfirst(".")); + + local.qryResult.addRow({ + Title = local.Page.Title, + Slug = local.row.name.listfirst("."), + DateLastModified = local.row.DateLastModified, + isHome = (local.row.name == "index.xml" ? 1 : 0), + Menu = local.Page.Menu, + MenuOrder = local.Page.MenuOrder, + MenuStatus = local.Page.MenuStatus, + Parent = local.Page.Parent, + Private = local.Page.private + }); + } // end for + + + if(arguments.mode == "menu") { + + return queryExecute(" + SELECT Title, Slug, Menu, MenuOrder, Parent + FROM [local].qryResult + WHERE MenuStatus = 'Y' + ORDER BY MenuOrder + ", + [], + {dbtype = "query"} + ); + + } + + return local.qryResult; + } + + +query function findBackups() output="false" { + + local.path = application.GSBACKUPSPATH & 'Pages/'; + + local.qryResult = QueryNew("Title,Slug,DateLastModified,isHome,Menu,MenuOrder,MenuStatus,Private"); + + for(local.row in directoryList(local.path, false, "query", "*.xml")) { + + local.Page = this.get(local.row.name.listfirst("."), local.path); + + local.qryResult.addRow({ + Title = local.Page.Title, + Slug = local.row.name.listfirst("."), + DateLastModified = local.row.DateLastModified, + isHome = (local.row.name == "index.xml" ? 1 : 0), + Menu = local.Page.Menu, + MenuOrder = local.Page.MenuOrder, + MenuStatus = local.Page.MenuStatus, + Private = local.Page.private + }); + } // end for + + + return local.qryResult; + } + + + + + +struct function get(required string slug, string path = application.GSDATAPAGESPATH) output="false" { + + if (arguments.slug == "") { + return { pubDate = '', + title = '', + url = '', + meta = '', + metad = '', + menu = '', + menuOrder = '', + menuStatus= '', + template = '', + parent = '', + content = '', + private = '', + author = '' + }; + } + + + local.xmlPage = xmlParse(FileRead(arguments.path & arguments.slug & (path CONTAINS "backups" ? '.bak' : '') & ".xml")); + + return { + slug = arguments.slug, // we return this so that set() can work with this data + + pubDate = local.xmlPage.item.pubDate.xmlText, + title = local.xmlPage.item.title.xmlText, + url = local.xmlPage.item.xmlChildren[3].xmlText, // CF does not like url as a tag name + meta = local.xmlPage.item.meta.xmlText, + metad = local.xmlPage.item.metad.xmlText, + menu = local.xmlPage.item.menu.xmlText, + menuOrder = local.xmlPage.item.menuOrder.xmlText, + menuStatus= local.xmlPage.item.menuStatus.xmlText, + template = local.xmlPage.item.template.xmlText, + parent = local.xmlPage.item.parent.xmlText, + content = local.xmlPage.item.content.xmlText, + private = local.xmlPage.item.private.xmlText, + author = StructkeyExists(local.xmlPage.item, "author") ? local.xmlPage.item.author.xmlText : "" // per getSimple, it may not be there + }; + } + + +query function getTemplate() output="false" hint="FW/1 layouts" { + + local.qryData = QueryNew("Display,Value"); + + + for(local.row in directoryList(application.GSROOTPATH & "layouts/", false, "query", "*.cfm")) { + local.qryData.addRow({ display = local.row.name.listfirst("."), value = local.row.name.listfirst(".") }); + } + + return local.qryData; + } + + +// End read only functions + + +// Start GS inspired functions +string function get_page_clean_title(required string slug) output="false" { + + return this.sluggify(this.get(arguments.slug).title); + } + + +string function find_url(required string slug, string parent) output="false" { + + if (arguments.slug == "index") return ""; + + return "/wiki/" & encodeForURL(arguments.slug); + } + + +string function get_parent_link(required string slug) output="false" { + + local.page = this.get(arguments.slug); + + if (local.page.parent == "") return ""; + + if (local.page.parent == "index") return ""; + + return "/wiki/" & encodeForURL(local.page.parent); + } + + +string function get_navigation(required string slug, string classPrefix = "", string site_url = "/") output="false" { + + local.menu = ""; + + for(local.row in this.findAll("menu")) { + + local.class = arguments.classPrefix; + if(arguments.slug == local.row.slug) local.class &= " current active"; + + local.menu &= '
  • ' + & local.row.menu & '
  • '; + } // end for + + return local.menu; + } + + +// End GS functions + + +boolean function set(required struct rc) output="false" { + + if(!arguments.rc.keyexists("url") || arguments.rc.url == "") { + arguments.rc.url = this.sluggify(arguments.rc.title ?: ""); + }; + + + + + + + local.xmlPage = ''; + + local.xmlPage &= ""; + local.xmlPage &= "#LSDateFormat(now())# #LSTimeFormat(now())#"; + local.xmlPage &= "#EncodeForXML(rc.title)#"; + local.xmlPage &= "#EncodeForXML(rc.url)#"; + local.xmlPage &= "#EncodeForXML(rc.meta)#"; + local.xmlPage &= "#EncodeForXML(rc.metad)#"; + local.xmlPage &= "#EncodeForXML(rc.menu ?: '')#"; + local.xmlPage &= "#EncodeForXML(rc.menuOrder ?: '')#"; + local.xmlPage &= "#EncodeForXML(rc.menuStatus ?: '')#"; + local.xmlPage &= ""; + local.xmlPage &= "#EncodeForXML(rc.parent)#"; + local.xmlPage &= "#EncodeForXML(rc.content)#"; + local.xmlPage &= "#EncodeForXML(rc.private)#"; + local.xmlPage &= "#EncodeForXML(rc.author)#"; + local.xmlPage &= ""; + + local.xmlPage &= ""; + + //if(arguments.rc.url == "" && arguments.rc.title !="") throw (message="could not generate slug", detail = "#this.sluggify(arguments.rc.title)# from #arguments.rc.title#"); + if(arguments.rc.url == "") return false; + + + local.existing = application.GSDATAPAGESPATH & arguments.rc.url & ".xml"; + local.bakfile = application.GSBACKUPSPATH & "pages/" & arguments.rc.url & ".bak.xml"; + + + // move if slug was renamed + if(arguments.rc.slug != arguments.rc.url && !FileExists(local.existing)) { + FileMove(application.GSDATAPAGESPATH & arguments.rc.slug & ".xml", local.existing); + } + + + // backup management + if(FileExists(local.bakfile)) { + FileDelete(local.bakfile); + } + FileCopy(local.existing, local.bakfile); + + + FileWrite(local.existing, local.xmlPage); + + + return true; + } + + + +string function sluggify(required string str) output="false" { + + + var spacer = "-"; + var ret = ""; + + str = str.trim().lcase(); + str = reReplace(str, "[^a-z0-9-]", spacer, "all"); + ret = reReplace(str, "#spacer#+", spacer, "all"); + + if (left(ret, 1) == spacer) + ret = right(ret, len(ret)-1); + + if (right(ret, 1) == spacer) + ret = left(ret, len(ret)-1); + + + return ret; + } + + + +boolean function saveMenu(required string lstMenu) { + + local.priority = 1; + for (local.slug in arguments.lstMenu.ListToArray()) { + + local.page = this.get(local.slug); + + if (local.page.menuOrder != local.priority) { + local.page.MenuOrder = local.priority; + this.set(local.page); + } + local.priority++; + } + + return true; + } + + + +boolean function clone(required string slug) output="false" { + + FileCopy(application.GSDATAPAGESPATH & arguments.slug & ".xml", application.GSDATAPAGESPATH & arguments.slug & "-1.xml"); + + return true; + } + + + +boolean function delete(required string slug) output="false" { + + if(!FileExists(application.GSDATAPAGESPATH & arguments.slug & ".xml")) return false; + + + FileDelete(application.GSDATAPAGESPATH & arguments.slug & ".xml"); + return true; + } + + +boolean function restoreBackup(required string slug) output="false" { + + local.existing = application.GSDATAPAGESPATH & arguments.slug & ".xml"; + local.bakfile = application.GSBACKUPSPATH & "pages/" & arguments.slug & ".bak.xml"; + + if(!FileExists(local.bakfile)) {return false;} // backup does not exist + + if(FileExists(local.existing)) {FileDelete(local.existing);} + + FileMove(local.bakfile, local.existing); + + return true; + } + + + +boolean function deleteBackup(required string slug) output="false" { + + local.bakfile = application.GSBACKUPSPATH & "pages/" & arguments.slug & ".bak.xml"; + + if(!FileExists(local.bakfile)) return false; + + FileDelete(local.bakfile); + return true; + } + +void function deleteAllBackups() output="false" { + + for(local.row in directoryList(application.GSDATAPAGESPATH, false, "array", "*.xml")) { + FileDelete(local.row); + } + + } + + +} \ No newline at end of file diff --git a/model/services/settings.cfc b/model/services/settings.cfc new file mode 100644 index 0000000..e4240e7 --- /dev/null +++ b/model/services/settings.cfc @@ -0,0 +1,151 @@ +component { + +variables.Components= application.GSDATAOTHERPATH & "components.xml"; +variables.Website = application.GSDATAOTHERPATH & "website.xml"; +variables.Users = application.GSUSERSPATH & "admin.xml"; + + + +string function get_theme_url() output="false" { + + return cgi.script_name.replace("/index.cfm", "") & "/layouts/" & this.getWebsite().template.lcase(); + } + + +struct function getComponents() output="false" { + + local.stResult = {}; + + + local.xmlComponents = xmlParse(FileRead(variables.Components)); + + + local.StrEscUtils = createObject("java", "org.apache.commons.lang.StringEscapeUtils"); + + + + for(local.item in local.xmlComponents.channel.xmlChildren) { + local.stResult[local.item.slug.xmlText] = StrEscUtils.unescapeHTML(local.item.value.xmlText); + } + + return local.stResult; + + } + + +struct function getWebsite() output="false" { + + + local.xmlOther = xmlParse(FileRead(variables.Website)); + + return { + sitename = local.xmlOther.item.sitename.xmlText, + siteurl = local.xmlOther.item.siteurl.xmlText, + template = local.xmlOther.item.template.xmlText, + prettyurls= local.xmlOther.item.prettyurls.xmlText, + permalink = local.xmlOther.item.permalink.xmlText + }; + } + + + + +void function setWebsite(required struct rc) { + + local.xmlOther = ''; + + local.xmlOther &= ""; + local.xmlOther &= "#encodeForXML(rc.sitename)#"; + local.xmlOther &= "#encodeForXML(rc.siteurl)#"; + local.xmlOther &= ""; + local.xmlOther &= "#encodeForXML(rc.prettyurls ?: 0)#"; + local.xmlOther &= "#encodeForXML(rc.permalink ?: '')#"; + local.xmlOther &= ""; + + + FileWrite(variables.Settings, local.xmlOther); + } + + + + + +struct function getUser() output="false" { + + + local.xmlUser = xmlParse(FileRead(variables.users)); + + return { + usr = local.xmlUser.item.usr.xmlText, + name = local.xmlUser.item.name.xmlText, + pwd = local.xmlUser.item.pwd.xmlText, + email = local.xmlUser.item.email.xmlText, + htmleditor = local.xmlUser.item.htmleditor.xmlText, + timezone = local.xmlUser.item.timezone.xmlText, + lang = local.xmlUser.item.lang.xmlText + + }; + } + + + +void function setUser(required struct rc) { + + local.oldValue = this.getUser(); + + if (rc.sitepwd != "" && rc.sitepwd == rc.sitepwd_confirm) { + local.pwd = hash(rc.sitepwd); + } + else { + local.pwd = local.oldValue.pwd; + } + + local.xmlOther = ''; + + local.xmlOther &= ""; + local.xmlOther &= "#encodeForXML(rc.usr)#"; + local.xmlOther &= "#encodeForXML(rc.name)#"; + local.xmlOther &= "#encodeForXML(local.pwd)#"; + local.xmlOther &= "#encodeForXML(rc.email)#"; + local.xmlOther &= "#encodeForXML(rc.htmleditor ?: 0)#"; + local.xmlOther &= "#encodeForXML(rc.timezone)#"; + local.xmlOther &= "#encodeForXML(rc.lang)#"; + local.xmlOther &= ""; + + + FileWrite(variables.users, local.xmlOther); + } + + + +string function doLogin(required struct rc) { + + local.stUser = this.getUser(); + + if(local.stUser.email == rc.email && (local.stUser.pwd == hash(rc.pwd) || local.stUser.pwd == "")) { + return true; + } + + //FileWrite(); + + return false; + } + + + +void function flushCache() { + + // java stuff + local.cacheManager = createObject('java', 'net.sf.ehcache.CacheManager').getInstance(); + rc.arRegions = local.cacheManager.getCacheNames(); // this is a mix of CF and Java + + + + for (local.region in rc.arRegions) { + CacheRemoveAll(local.region); + } + + } + + +} \ No newline at end of file diff --git a/model/services/upload.cfc b/model/services/upload.cfc new file mode 100644 index 0000000..6cf3669 --- /dev/null +++ b/model/services/upload.cfc @@ -0,0 +1,194 @@ +component { + + + +query function findAll(string path = "") output="false" { + + return directoryList(application.GSDATAUPLOADPATH & arguments.path, false, "query"); + } + + + +boolean function createFolder(required string path, required string foldername) output="false" { + + + arguments.foldername = arguments.foldername.ReplaceList("/,\,<,[,^,>,],*,>,. ", ""); + + arguments.foldername = arguments.foldername.Replace(",", "", "all"); + + + local.target = application.GSDATAUPLOADPATH & arguments.path & '/' & arguments.foldername; + local.targetThumb = application.GSTHUMBNAILPATH & arguments.path & '/' & arguments.foldername; + + + + + if (!DirectoryExists(targetThumb)) { + + directoryCreate(targetThumb); + } + + + if (!DirectoryExists(local.target)) { + + directoryCreate(target); + + return true; + } + + + + return false; + + } + + +boolean function process(required struct rc) output="false" { + + + rc.nameconflict = "overwrite"; + + + local.preResize = 200; + + + local.targetpath = "#application.GSDATAUPLOADPATH##rc.path#/"; + local.thumbpath = "#application.GSTHUMBNAILPATH##rc.path#/"; + + + + +// try { + + local.result = fileUpload(local.targetPath, "csv1", "*/*", rc.nameconflict); + + + local.targetname = local.result.serverfile.replace(",", "_", "all");// files with commas are problematic + + + FileMove(local.targetpath & local.result.serverfile, targetpath & targetname); + + if (local.result.serverFileExt == "jpg") { + local.myImage = ImageNew(local.targetpath & local.targetname); + ImageResize(local.myImage, local.preResize, ""); + ImageWrite( local.myImage, local.thumbpath & local.targetname); + } + +// } + +// catch (any e) { + + + +// if (!e.message CONTAINS "did not contain a file") { +// return false; +// } + +// } + + + return true; + } + + +boolean function delete(required struct rc) output="false" hint="files or folders" { + + param rc.folder = ""; + + if (rc.folder != "") { + var target = application.GSDATAUPLOADPATH & (rc.path == "" ? "" : rc.path & '/') & rc.folder; + var targetThumb = application.GSTHUMBNAILPATH & (rc.path == "" ? "" : rc.path & '/') & rc.folder; + + + if (DirectoryExists(target)) { + + var arDir = DirectoryList(target, true, "path"); + + for (i in arDir) { + FileDelete(i); + } + + + directoryDelete(target); + } + + if (DirectoryExists(targetThumb)) { + + var arDir = DirectoryList(targetThumb, true, "path"); + + for (i in arDir) { + FileDelete(i); + } + + + directoryDelete(targetThumb); + } + + + return true; + } + + + + // must be working files + var target = application.GSDATAUPLOADPATH & rc.path & '/' & rc.name; + var targetThumb = application.GSTHUMBNAILPATH & rc.path & '/' & rc.name; + + + if (FileExists(targetThumb)) { + + FileDelete(targetThumb); + } + + + if (FileExists(target)) { + + FileDelete(target); + + return false; + } + + return true; + } + + + +struct function details(required struct rc) output="false" { + + param rc.name; + + + + var target = application.GSDATAUPLOADPATH & rc.path & '/' & rc.name; + var targetThumb = application.GSTHUMBNAILPATH & rc.path & '/' & rc.name; + + + rc.info = {width = 0, height = 0, imageFolder = target}; + rc.info.exists = FileExists(rc.info.imageFolder); + + if (rc.info.exists) { + if (isImageFile(rc.info.imageFolder)) { + img = ImageRead(rc.info.imageFolder); + StructAppend(rc.info, ImageInfo(img)); + //rc.exif = ImageGetEXIFMetaData(img); + } + } + + + rc.infothumb = {width = 0, height = 0, imageFolder = targetThumb}; + rc.infothumb.exists = FileExists(rc.infothumb.imageFolder); + + if (rc.infothumb.exists) { + if (isImageFile(rc.infothumb.imageFolder)) { + img = ImageRead(rc.infothumb.imageFolder); + StructAppend(rc.infothumb, ImageInfo(img)); + //rc.exif = ImageGetEXIFMetaData(img); + } + } + + + return rc; + } + + +} \ No newline at end of file diff --git a/vendor/material.css b/vendor/material.css new file mode 100644 index 0000000..e7fc0d1 --- /dev/null +++ b/vendor/material.css @@ -0,0 +1,61 @@ +.material-red { + background-color: #f44336; +} +.material-pink { + background-color: #e91e63; +} +.material-purple { + background-color: #9c27b0; +} +.material-deep-purple { + background-color: #673ab7; +} +.material-indigo { + background-color: #3f51b5; +} +.material-blue { + background-color: #2196f3; +} +.material-light-blue { + background-color: #03a9f4; +} +.material-cyan { + background-color: #00bcd4; +} +.material-teal { + background-color: #009688; +} +.material-green { + background-color: #4caf50; +} +.material-light-green { + background-color: #8bc34a; +} +.material-lime { + background-color: #cddc39; +} +.material-yellow { + background-color: #ffeb3b; +} +.material-amber { + background-color: #ffc107; +} +.material-orange { + background-color: #ff9800; +} +.material-deep-orange { + background-color: #ff5722; +} +.material-brown { + background-color: #795548; +} +.material-grey { + background-color: #9e9e9e; +} +.material-blue-grey { + background-color: #607d8b; +} +.material-black { + background-color: black; + color : white; +} \ No newline at end of file diff --git a/views/_bootstrap/blockquote.cfm b/views/_bootstrap/blockquote.cfm index ed4d3ab..414764b 100644 --- a/views/_bootstrap/blockquote.cfm +++ b/views/_bootstrap/blockquote.cfm @@ -18,6 +18,7 @@ case "start" : param attributes.binding = ""; param attributes.cacheid = ""; + param attributes.footer = ""; param attributes.id = ""; param attributes.isSafeHTML = application.Bootstrap.isSafeHTML.contains(variables.tagStack[1].lcase()); param attributes.key = ""; @@ -82,7 +83,7 @@ case "end" : if(!attributes.isSafeHTML) variables.result &= getSafeHTML(thisTag.GeneratedContent.trim(), attributes.profile, attributes.throwOnError); // pass through of content if( attributes.isSafeHTML) variables.result &= thisTag.GeneratedContent.trim(); // warning content must already be clean - + if(attributes.footer != "" ) variables.result &= '
    ' & attributes.footer & '
    '; variables.result &= ''; diff --git a/views/_bootstrap/commandLink.cfm b/views/_bootstrap/commandLink.cfm index a67ef91..c37c778 100644 --- a/views/_bootstrap/commandLink.cfm +++ b/views/_bootstrap/commandLink.cfm @@ -20,6 +20,7 @@ case "start" : param attributes.action = ""; // powered by application.Bootstrap.actionRoot; param attributes.binding = ""; + param attributes.bold = false; param attributes.cacheid = ""; param attributes.disabled = false; param attributes.dropdown = false; @@ -44,6 +45,7 @@ case "start" : param attributes.target = ""; param attributes.throwOnError = application.Bootstrap.throwOnError; param attributes.tooltip = ""; + param attributes.tooltipKey = ""; param attributes.tooltipPosition = "bottom"; param attributes.value = ""; @@ -80,15 +82,16 @@ case "end" : if (attributes.value != "") thisTag.generatedContent = attributes.value; if (attributes.binding != "" && isDefined("caller.rc.#attributes.binding#")) thisTag.generatedContent = evaluate("caller.rc.#attributes.binding#"); - if(attributes.key != "" ) { + if (attributes.key != "") { thisTag.GeneratedContent = application.geti18n(attributes.key, attributes.placeholder); attributes.isSafeHTML = true; } - + if (attributes.tooltipKey != "") attributes.tooltip = application.geti18n(attributes.key, attributes.tooltipPlaceholder); // no target of any kind was set AND this is not an anchor if ((attributes.action != "" || attributes.href == "") && attributes.id == "") attributes.href = application.Bootstrap.actionRoot & attributes.action; + if (attributes.bold) variables.result &= ''; if (attributes.look == 'link') variables.result &= ''; variables.result &= attributes.value; variables.result &= ''; + } + + if (attributes.buttonPart) { + variables.result &= '' & variables.crlf; + } + + + variables.result &= crlf & ''; + variables.result &= crlf & ''; + if(!attributes.buttonPart) variables.result &= ''; if (attributes.cacheid != "") CachePut(variables.fullCacheid, variables.result, 1, 1, application.Bootstrap.cache.content); diff --git a/views/_bootstrap/fieldset.cfm b/views/_bootstrap/fieldset.cfm index 8b1a38b..007dd87 100644 --- a/views/_bootstrap/fieldset.cfm +++ b/views/_bootstrap/fieldset.cfm @@ -43,7 +43,7 @@ case "start" : case "end" : if(attributes.key != "" ) { - thisTag.GeneratedContent = application.geti18n(attributes.key, attributes.placeholder); + attributes.legend = application.geti18n(attributes.key, attributes.placeholder); attributes.isSafeHTML = true; } diff --git a/views/_bootstrap/label.cfm b/views/_bootstrap/label.cfm index e84e390..7c2599a 100644 --- a/views/_bootstrap/label.cfm +++ b/views/_bootstrap/label.cfm @@ -26,6 +26,8 @@ case "start" : param attributes.processed = true; param attributes.profile = application.Bootstrap.profile; param attributes.rendered = true; + param attributes.style = ""; + param attributes.styleClass = ""; param attributes.throwOnError = application.Bootstrap.throwOnError; param attributes.tooltip = ""; param attributes.tooltipPosition = "bottom"; @@ -66,11 +68,14 @@ case "end" : } - variables.result &= ''; + } + } + // end range generator + // array and list generator + if(!attributes.array.isEmpty()) { + for (variables.i in attributes.array) { + variables.result &= variables.crlf & '