Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Comparing changes

Choose two branches to see what's changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base fork: rmarianski/docphoto
base: f336b9abc0
...
head fork: rmarianski/docphoto
compare: a4d5722d17
Checking mergeability… Don't worry, you can still create the pull request.
  • 9 commits
  • 8 files changed
  • 0 commit comments
  • 1 contributor
View
22 project.clj
@@ -1,26 +1,22 @@
(defproject foo "1.0.0-SNAPSHOT"
:description "FIXME: write description"
:dev-dependencies [[lein-ring "0.5.2"]]
- :dependencies [[org.clojure/clojure "1.3.0"]
- [compojure "1.0.0"]
- [hiccup "0.3.7"]
- [ring/ring-servlet "1.0.1"]
- [ring/ring-devel "1.0.1"]
- [rmarianski/ring-jetty-servlet-adapter "0.0.2"]
+ :dependencies [[org.clojure/clojure "1.4.0"]
+ [compojure "1.1.3"]
+ [hiccup "1.0.0"]
+ [ring "1.1.6"]
+ [rmarianski/ring-jetty-servlet-adapter "0.0.3"]
[commons-codec "1.6"]
[commons-lang "2.6"]
[com.salesforce/wsc "2.2"]
[org.soros/prod-salesforce-docphoto "0.0.1"]
- ;; [org.soros/dev-salesforce-docphoto "0.0.1"]
- ;; if metadata operations are wanted
- ;; [org.soros/dev-salesforce-docphoto-metadata "0.0.1"]
[clj-decline "0.0.5"]
- [flutter "0.0.7"]
+ [flutter "0.0.8"]
[org.imgscalr/imgscalr-lib "4.1"]
[com.draines/postal "1.7.0"]
[org.clojure/core.incubator "0.1.0"]
- [clj-stacktrace "0.2.4"]
- [swank-clojure "1.4.2"]]
+ [clj-stacktrace "0.2.4"]]
:ring {:handler docphoto.core/app
:init docphoto.core/servlet-init
- :destroy docphoto.core/servlet-destroy})
+ :destroy docphoto.core/servlet-destroy
+ :resource-scripts [docphoto/core.clj]})
View
2  resources/public/css/docphoto-min.css
@@ -1 +1 @@
-.modal-dialog{background:#c1d9ff;border:1px solid #3a5774;color:#000;padding:4px;position:absolute}.modal-dialog a,.modal-dialog a:link,.modal-dialog a:visited{color:#06c;cursor:pointer}.modal-dialog-bg{background:#666;left:0;position:absolute;top:0}.modal-dialog-title{background:#e0edfe;color:#000;cursor:pointer;font-size:120%;font-weight:bold;padding:8px 31px 8px 8px;position:relative;_zoom:1}.modal-dialog-title-close{background:#e0edfe url(//ssl.gstatic.com/editor/editortoolbar.png) no-repeat -528px 0;cursor:default;height:15px;position:absolute;right:10px;top:8px;width:15px;vertical-align:middle}.modal-dialog-buttons,.modal-dialog-content{background-color:#fff;padding:8px}.goog-buttonset-default{font-weight:bold}.goog-inline-block{position:relative;display:-moz-inline-box;display:inline-block}* html .goog-inline-block{display:inline}*:first-child+html .goog-inline-block{display:inline}.tr-icon{width:16px;height:16px;background:url(//ssl.gstatic.com/editor/editortoolbar.png) no-repeat;vertical-align:middle}.goog-color-menu-button-indicator .tr-icon{height:14px}.tr-undo,.goog-toolbar-button-rtl .tr-redo{background-position:0 0}.tr-redo,.goog-toolbar-button-rtl .tr-undo{background-position:-16px}.tr-fontName .goog-toolbar-menu-button-caption{color:#246;width:16ex;height:16px;overflow:hidden}.tr-fontSize .goog-toolbar-menu-button-caption{color:#246;width:8ex;height:16px;overflow:hidden}.tr-bold{background-position:-32px}.tr-italic{background-position:-48px}.tr-underline{background-position:-64px}.tr-foreColor{height:14px;background-position:-80px}.tr-backColor{height:14px;background-position:-96px}.tr-link{font-weight:bold;color:#009;text-decoration:underline}.tr-image{background-position:-112px}.tr-newDrawing{background-position:-592px}.tr-spChar{font-weight:bold;color:#900}.tr-indent{background-position:-128px}.tr-rtl-mode .tr-indent{background-position:-400px}.tr-outdent{background-position:-144px}.tr-rtl-mode .tr-outdent{background-position:-416px}.tr-insertUnorderedList{background-position:-160px}.tr-rtl-mode .tr-insertUnorderedList{background-position:-432px}.tr-insertOrderedList{background-position:-176px}.tr-rtl-mode .tr-insertOrderedList{background-position:-448px}.tr-justifyLeft{background-position:-192px}.tr-justifyCenter{background-position:-208px}.tr-justifyRight{background-position:-224px}.tr-justifyFull{background-position:-480px}.tr-BLOCKQUOTE{background-position:-240px}.tr-rtl-mode .tr-BLOCKQUOTE{background-position:-464px}.tr-removeFormat{background-position:-256px}.tr-spell{background-position:-272px}.tr-ltr{background-position:-288px}.tr-rtl{background-position:-304px}.tr-insertModule{background-position:-496px}.tr-strikeThrough{background-position:-544px}.tr-subscript{background-position:-560px}.tr-superscript{background-position:-576px}.tr-equation{background-position:-608px}.tr-editHtml{color:#009}.tr-formatBlock .goog-toolbar-menu-button-caption{color:#246;width:12ex;height:16px;overflow:hidden}.goog-button{color:#036;border-color:#036;background-color:#69c}.goog-button-disabled{border-color:#333;color:#333;background-color:#999}.goog-button-hover{color:#369;border-color:#369;background-color:#9cf}.goog-button-active{color:#69c;border-color:#69c}.goog-link-button{position:relative;color:#00f;text-decoration:underline;cursor:pointer}.goog-link-button-disabled{color:#888;text-decoration:none;cursor:default}.goog-tab-bar{margin:0;border:0;padding:0;list-style:none;cursor:default;outline:0;background:#ebeff9}.goog-tab-bar-clear{clear:both;height:0;overflow:hidden}.goog-tab-bar-start{float:left}.goog-tab-bar-end{float:right}* html .goog-tab-bar-start{margin-right:-3px}* html .goog-tab-bar-end{margin-left:-3px}.goog-menuitem{color:#000;font:normal 13px Arial,sans-serif;list-style:none;margin:0;padding:4px 7em 4px 28px;white-space:nowrap}.goog-menu-nocheckbox .goog-menuitem,.goog-menu-noicon .goog-menuitem{padding-left:12px}.goog-menu-noaccel .goog-menuitem{padding-right:20px}.goog-menuitem-content{color:#000;font:normal 13px Arial,sans-serif}.goog-menuitem-disabled .goog-menuitem-accel,.goog-menuitem-disabled .goog-menuitem-content{color:#ccc!important}.goog-menuitem-disabled .goog-menuitem-icon{opacity:.3;-moz-opacity:.3;filter:alpha(opacity=30)}.goog-menuitem-highlight,.goog-menuitem-hover{background-color:#d6e9f8;border-color:#d6e9f8;border-style:dotted;border-width:1px 0;padding-bottom:3px;padding-top:3px}.goog-menuitem-checkbox,.goog-menuitem-icon{background-repeat:no-repeat;height:16px;left:6px;position:absolute;right:auto;vertical-align:middle;width:16px}.goog-option-selected .goog-menuitem-checkbox,.goog-option-selected .goog-menuitem-icon{background:url(//ssl.gstatic.com/editor/editortoolbar.png) no-repeat -512px 0}.goog-menuitem-accel{color:#999;direction:ltr;left:auto;padding:0 6px;position:absolute;right:0;text-align:right}.goog-tab{position:relative;padding:4px 8px;color:#00c;text-decoration:underline;cursor:default}.goog-tab-bar-top .goog-tab{margin:1px 4px 0 0;border-bottom:0;float:left}.goog-tab-bar-top:after,.goog-tab-bar-bottom:after{content:" ";display:block;height:0;clear:both;visibility:hidden}.goog-tab-bar-bottom .goog-tab{margin:0 4px 1px 0;border-top:0;float:left}.goog-tab-bar-start .goog-tab{margin:0 0 4px 1px;border-right:0}.goog-tab-bar-end .goog-tab{margin:0 1px 4px 0;border-left:0}.goog-tab-hover{background:#eee}.goog-tab-disabled{color:#666}.goog-tab-selected{color:#000;background:#fff;text-decoration:none;font-weight:bold;border:1px solid #6b90da}.goog-tab-bar-top{padding-top:5px!important;padding-left:5px!important;border-bottom:1px solid #6b90da!important}.goog-tab-bar-top .goog-tab-selected{top:1px;margin-top:0;padding-bottom:5px}.goog-tab-bar-bottom .goog-tab-selected{top:-1px;margin-bottom:0;padding-top:5px}.goog-tab-bar-start .goog-tab-selected{left:1px;margin-left:0;padding-right:9px}.goog-tab-bar-end .goog-tab-selected{left:-1px;margin-right:0;padding-left:9px}.goog-menuseparator{border-top:1px solid #ccc;margin:4px 0;padding:0}.goog-toolbar{background:#fafafa url(//ssl.gstatic.com/editor/toolbar-bg.png) repeat-x bottom left;border-bottom:1px solid #d5d5d5;cursor:default;font:normal 12px Arial,sans-serif;margin:0;outline:0;padding:2px;position:relative;zoom:1}.goog-toolbar-button{margin:0 2px;border:0;padding:0;font-family:Arial,sans-serif;color:#333;text-decoration:none;list-style:none;vertical-align:middle;cursor:default;outline:0}.goog-toolbar-button-outer-box,.goog-toolbar-button-inner-box{border:0;vertical-align:top}.goog-toolbar-button-outer-box{margin:0;padding:1px 0}.goog-toolbar-button-inner-box{margin:0 -1px;padding:3px 4px}* html .goog-toolbar-button-inner-box{left:-1px}* html .goog-toolbar-button-rtl .goog-toolbar-button-outer-box{left:-1px}* html .goog-toolbar-button-rtl .goog-toolbar-button-inner-box{right:auto}*:first-child+html .goog-toolbar-button-inner-box{left:-1px}*:first-child+html .goog-toolbar-button-rtl .goog-toolbar-button-inner-box{left:1px;right:auto}::root .goog-toolbar-button,::root .goog-toolbar-button-outer-box{line-height:0}::root .goog-toolbar-button-inner-box{line-height:normal}.goog-toolbar-button-disabled{opacity:.3;-moz-opacity:.3;filter:alpha(opacity=30)}.goog-toolbar-button-disabled .goog-toolbar-button-outer-box,.goog-toolbar-button-disabled .goog-toolbar-button-inner-box{color:#333!important;border-color:#999!important}* html .goog-toolbar-button-disabled{background-color:#f0f0f0;margin:0 1px;padding:0 1px}*:first-child+html .goog-toolbar-button-disabled{background-color:#f0f0f0;margin:0 1px;padding:0 1px}.goog-toolbar-button-hover .goog-toolbar-button-outer-box,.goog-toolbar-button-active .goog-toolbar-button-outer-box,.goog-toolbar-button-checked .goog-toolbar-button-outer-box,.goog-toolbar-button-selected .goog-toolbar-button-outer-box{border-width:1px 0;border-style:solid;padding:0}.goog-toolbar-button-hover .goog-toolbar-button-inner-box,.goog-toolbar-button-active .goog-toolbar-button-inner-box,.goog-toolbar-button-checked .goog-toolbar-button-inner-box,.goog-toolbar-button-selected .goog-toolbar-button-inner-box{border-width:0 1px;border-style:solid;padding:3px}.goog-toolbar-button-hover .goog-toolbar-button-outer-box,.goog-toolbar-button-hover .goog-toolbar-button-inner-box{border-color:#a1badf!important}.goog-toolbar-button-active,.goog-toolbar-button-checked,.goog-toolbar-button-selected{background-color:#dde1eb!important}.goog-toolbar-button-active .goog-toolbar-button-outer-box,.goog-toolbar-button-active .goog-toolbar-button-inner-box,.goog-toolbar-button-checked .goog-toolbar-button-outer-box,.goog-toolbar-button-checked .goog-toolbar-button-inner-box,.goog-toolbar-button-selected .goog-toolbar-button-outer-box,.goog-toolbar-button-selected .goog-toolbar-button-inner-box{border-color:#729bd1}.goog-toolbar-button-collapse-right,.goog-toolbar-button-collapse-right .goog-toolbar-button-outer-box,.goog-toolbar-button-collapse-right .goog-toolbar-button-inner-box{margin-right:0}.goog-toolbar-button-collapse-left,.goog-toolbar-button-collapse-left .goog-toolbar-button-outer-box,.goog-toolbar-button-collapse-left .goog-toolbar-button-inner-box{margin-left:0}* html .goog-toolbar-button-collapse-left .goog-toolbar-button-inner-box{left:0}*:first-child+html .goog-toolbar-button-collapse-left .goog-toolbar-button-inner-box{left:0}.goog-toolbar-menu-button{margin:0 2px;border:0;padding:0;font-family:Arial,sans-serif;color:#333;text-decoration:none;list-style:none;vertical-align:middle;cursor:default;outline:0}.goog-toolbar-menu-button-outer-box,.goog-toolbar-menu-button-inner-box{border:0;vertical-align:top}.goog-toolbar-menu-button-outer-box{margin:0;padding:1px 0}.goog-toolbar-menu-button-inner-box{margin:0 -1px;padding:3px 4px}* html .goog-toolbar-menu-button-inner-box{left:-1px}* html .goog-toolbar-menu-button-rtl .goog-toolbar-menu-button-outer-box{left:-1px}* html .goog-toolbar-menu-button-rtl .goog-toolbar-menu-button-inner-box{right:auto}*:first-child+html .goog-toolbar-menu-button-inner-box{left:-1px}*:first-child+html .goog-toolbar-menu-button-rtl .goog-toolbar-menu-button-inner-box{left:1px;right:auto}::root .goog-toolbar-menu-button,::root .goog-toolbar-menu-button-outer-box,::root .goog-toolbar-menu-button-inner-box{line-height:0}::root .goog-toolbar-menu-button-caption,::root .goog-toolbar-menu-button-dropdown{line-height:normal}.goog-toolbar-menu-button-disabled{opacity:.3;-moz-opacity:.3;filter:alpha(opacity=30)}.goog-toolbar-menu-button-disabled .goog-toolbar-menu-button-outer-box,.goog-toolbar-menu-button-disabled .goog-toolbar-menu-button-inner-box{color:#333!important;border-color:#999!important}* html .goog-toolbar-menu-button-disabled{background-color:#f0f0f0;margin:0 1px;padding:0 1px}*:first-child+html .goog-toolbar-menu-button-disabled{background-color:#f0f0f0;margin:0 1px;padding:0 1px}.goog-toolbar-menu-button-hover .goog-toolbar-menu-button-outer-box,.goog-toolbar-menu-button-active .goog-toolbar-menu-button-outer-box,.goog-toolbar-menu-button-open .goog-toolbar-menu-button-outer-box{border-width:1px 0;border-style:solid;padding:0}.goog-toolbar-menu-button-hover .goog-toolbar-menu-button-inner-box,.goog-toolbar-menu-button-active .goog-toolbar-menu-button-inner-box,.goog-toolbar-menu-button-open .goog-toolbar-menu-button-inner-box{border-width:0 1px;border-style:solid;padding:3px}.goog-toolbar-menu-button-hover .goog-toolbar-menu-button-outer-box,.goog-toolbar-menu-button-hover .goog-toolbar-menu-button-inner-box{border-color:#a1badf!important}.goog-toolbar-menu-button-active,.goog-toolbar-menu-button-open{background-color:#dde1eb!important}.goog-toolbar-menu-button-active .goog-toolbar-menu-button-outer-box,.goog-toolbar-menu-button-active .goog-toolbar-menu-button-inner-box,.goog-toolbar-menu-button-open .goog-toolbar-menu-button-outer-box,.goog-toolbar-menu-button-open .goog-toolbar-menu-button-inner-box{border-color:#729bd1}.goog-toolbar-menu-button-caption{padding:0 4px 0 0;vertical-align:middle}.goog-toolbar-menu-button-dropdown{width:7px;background:url(//ssl.gstatic.com/editor/editortoolbar.png) no-repeat -388px 0;vertical-align:middle}.goog-toolbar-separator{margin:0 2px;border-left:1px solid #d6d6d6;border-right:1px solid #f7f7f7;padding:0;width:0;text-decoration:none;list-style:none;outline:0;vertical-align:middle;line-height:normal;font-size:120%;overflow:hidden}.goog-toolbar-select .goog-toolbar-menu-button-outer-box{border-width:1px 0;border-style:solid;padding:0}.goog-toolbar-select .goog-toolbar-menu-button-inner-box{border-width:0 1px;border-style:solid;padding:3px}.goog-toolbar-select .goog-toolbar-menu-button-outer-box,.goog-toolbar-select .goog-toolbar-menu-button-inner-box{border-color:#bfcbdf}.goog-palette-cell .goog-palette-colorswatch{border:0;font-size:x-small;height:18px;position:relative;width:18px}.goog-palette-cell-hover .goog-palette-colorswatch{border:1px solid #fff;height:16px;width:16px}.goog-palette-cell-selected .goog-palette-colorswatch{background:url(//ssl.gstatic.com/editor/editortoolbar.png) no-repeat -368px 0;border:1px solid #333;color:#fff;font-weight:bold;height:16px;width:16px}.goog-palette-customcolor{background-color:#fafafa;border:1px solid #eee;color:#666;font-size:x-small;height:15px;position:relative;width:15px}.goog-palette-cell-hover .goog-palette-customcolor{background-color:#fee;border:1px solid #f66;color:#f66}.tr-dialog{width:475px}.tr-dialog .goog-tab-content{margin:0;border:1px solid #6b90da;padding:4px 8px;background:#fff;overflow:auto}.tr-tabpane{font-size:10pt;padding:1.3ex 0}.tr-tabpane-caption{font-size:10pt;margin-bottom:.7ex;background-color:#fffaf5;line-height:1.3em}.tr-tabpane .goog-tab-content{border:0;padding:5px 7px 1px}.tr-tabpane .goog-tab{background-color:#fff;border:0;width:136px;line-height:1.3em;margin-bottom:.7ex}.tr-tabpane .goog-tab{text-decoration:underline;color:blue;cursor:pointer}.tr-tabpane .goog-tab-selected{font-weight:bold;text-decoration:none;color:black}.tr-tabpane .goog-tab input{margin:-2px 5px 0 0}div.tr_bubble{position:absolute;background-color:#e0ecff;border:1px solid #99c0ff;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px;font-size:83%;font-family:Arial,Helvetica,sans-serif;padding:2px 19px 6px 6px;white-space:nowrap}.tr_bubble_link{color:#00c;text-decoration:underline;cursor:pointer;font-size:100%}.tr_bubble .tr_option-link,.tr_bubble #tr_delete-image,.tr_bubble #tr_module-options-link{font-size:83%}.tr_bubble_closebox{position:absolute;cursor:default;background:url(//ssl.gstatic.com/editor/bubble_closebox.gif) top left no-repeat;padding:0;margin:0;width:10px;height:10px;top:3px;right:5px}div.tr_bubble_panel{padding:2px 0 1px}div.tr_bubble_panel_title{display:none}div.tr_multi_bubble div.tr_bubble_panel_title{margin-right:1px;display:block;float:left;width:50px}div.tr_multi_bubble div.tr_bubble_panel{padding:2px 0 1px;margin-right:50px}.tr-link-dialog-explanation-text{font-size:83%;margin-top:15px}.tr-link-dialog-target-input{width:98%;direction:ltr}.tr-link-dialog-email-warning{text-align:center;color:#c00;font-weight:bold}.tr_pseudo-link{color:#00c;text-decoration:underline;cursor:pointer}.goog-menu{background:#fff;border-color:#ccc #666 #666 #ccc;border-style:solid;border-width:1px;cursor:default;font:normal 13px Arial,sans-serif;margin:0;outline:0;padding:4px 0;position:absolute;z-index:20000}.goog-palette{cursor:default;outline:0}.goog-palette-table{border:1px solid #666;border-collapse:collapse;margin:5px}.goog-palette-cell{border:0;border-right:1px solid #666;cursor:pointer;height:18px;margin:0;text-align:center;vertical-align:middle;width:18px}.uniForm{margin:0;padding:0;position:relative;z-index:1}.uniForm fieldset{border:0;margin:0;padding:0}.uniForm fieldset legend{margin:0;padding:0}.uniForm .ctrlHolder,.uniForm .buttonHolder{margin:0;padding:0;clear:both}.uniForm:after,.uniForm .buttonHolder:after,.uniForm .ctrlHolder:after,.uniForm .ctrlHolder .multiField:after,.uniForm .inlineLabel:after{content:".";display:block;height:0;line-height:0;font-size:0;clear:both;min-height:0;visibility:hidden}.uniForm label,.uniForm button{cursor:pointer}.uniForm label,.uniForm .label{display:block;float:none;margin:0 0 .5em 0;padding:0;line-height:100%;width:auto}.uniForm .textInput,.uniForm .fileUpload,.uniForm .selectInput,.uniForm select,.uniForm textarea{float:left;width:53%;margin:0}.uniForm .readOnlyLabel{margin:0;font-size:1em;font-weight:bold}.uniForm .readOnly{font-size:.85em}.uniForm .readOnly .choiceLabel{color:#777;text-transform:uppercase;font-size:.75em;letter-spacing:.15em}.uniForm .formHint{float:right;width:43%;margin:0;clear:none}.uniForm ul{float:left;width:53%;margin:0;padding:0}.uniForm ul li{margin:0 0 .5em 0;list-style:none}.uniForm ul li label{margin:0;float:none;display:block;overflow:visible}.uniForm ul.alternate li{float:left;width:30%;margin-right:3%}.uniForm ul.alternate li label{float:none;display:block;width:98%}.uniForm ul .textInput,.uniForm ul .selectInput,.uniForm ul select,.uniForm ul.alternate .textInput,.uniForm ul.alternate .selectInput,.uniForm ul.alternate select{width:98%;margin-top:.5em;display:block;float:none}.uniForm label em,.uniForm .label em{float:left;width:1em;margin:0 0 0 -1em}.uniForm .inlineLabels label,.uniForm .inlineLabels .label,.uniForm .inlineLabels .readOnlyLabel{float:left;margin:.3em 2% 0 0;padding:0;line-height:1;position:relative;width:32%}.uniForm .inlineLabels .readOnlyLabel{margin:0}.uniForm .inlineLabels .textInput,.uniForm .inlineLabels .fileUpload,.uniForm .inlineLabels .selectInput,.uniForm .inlineLabels select,.uniForm .inlineLabels textarea{float:left;width:64%}.uniForm .inlineLabels .formHint{clear:both;float:none;width:auto;margin-left:34%;position:static}.uniForm .inlineLabels ul{float:left;width:66%}.uniForm .inlineLabels ul li{margin:.5em 0}.uniForm .inlineLabels ul li label{float:none;display:block;width:100%}.uniForm .inlineLabels ul.alternate li{margin-right:3%;margin-top:.25em}.uniForm .inlineLabels ul li label .textInput,.uniForm .inlineLabels ul li label textarea,.uniForm .inlineLabels ul li label select{float:none;display:block;width:98%}.uniForm .inlineLabels .readOnly{float:right;width:66%}.uniForm .inlineLabels label em,.uniForm .inlineLabels .label em{display:block;float:none;margin:0;position:absolute;right:0}.uniForm legend{color:inherit}.uniForm .secondaryAction{float:left}.uniForm .inlineLabel input,.uniForm .inlineLabels .inlineLabel input,.uniForm .blockLabels .inlineLabel input,.uniForm label input{float:none;display:inline;margin:0;padding:0;border:0}.uniForm .buttonHolder .inlineLabel,.uniForm .buttonHolder label{float:left;margin:.5em 0 0 0;width:auto;max-width:60%;text-align:left}.uniForm .inlineLabels .noLabel ul{margin-left:34%}.uniForm .small{width:30%!important}.uniForm .medium{width:45%!important}.uniForm .auto{width:auto!important;height:auto!important}.uniForm .small,.uniForm .medium,.uniForm .auto{margin-right:4px}.uniForm .col{float:left}.uniForm .col{width:50%}body{background:#fff;font-family:Arial,Helvetica,sans-serif;font-family:Arial,Helvetica,sans-serif;font-size:14px;color:#3c3d3f}h1,h2,h3{font-weight:normal;color:#ff3000;margin:0 0 .25em 0}h1{font-size:2em}h2{font-size:2.8em}h3{font-size:1.6em}p,ul,ol{line-height:1.5em}a{text-decoration:underline;color:#eb1d1d}a:hover{text-decoration:none}#wrapper{margin:0 auto;padding:0;width:1000px}#header{background:0;height:70px;margin-bottom:30px;padding:0 0 10px 0;border-bottom:2px solid #BBB}#osf-logo{float:left}#language{float:right}#language ul,#language li{list-style:none;display:inline;margin:0;padding:0}#language li{margin:0 5px}#heading-section{clear:both;margin-top:1em}#heading{text-transform:uppercase}#contact{float:right}#header h1{font-weight:bold}#header a{text-decoration:none}#header a:hover{text-decoration:underline}#heading a{color:#ff3000}#heading a:hover{text-decoration:none}#content{float:left;width:760px;background:#FFF;margin:0 0 2em 0}#sidebar{float:right;width:200px;text-align:right}#sidebar h2{color:#414141;font-size:2em;margin:.5em 0}#sidebar #login-logout{margin:0 0 1em 0}#sidebar #update-profile{margin:1em 0}#sidebar #applications-list{margin-top:1em}#sidebar ul,#sidebar li{padding:0;margin:0;list-style:none}#sidebar a{text-decoration:none}#sidebar a:hover{text-decoration:underline}#sidebar #admin{margin-top:1em}#footer{border-top:2px solid #BBB;clear:both}#footer p{margin:1em 0 2em 0;color:#777;font-size:.8em}.uniForm{background-color:#e8f3fc;padding:20px}.uniForm legend{display:none}.uniForm .ctrlHolder{margin:2em 0}.uniForm .ctrlHolder .error{font-weight:bold;font-size:1.2em;color:red}.uniForm .ctrlHolder label{cursor:auto}.uniForm .formHint{clear:inherit;float:inherit;width:inherit;margin:0;color:#999;font-style:italic;font-size:12px}.uniForm .textInput,.uniForm .fileUpload,.uniForm .selectInput,.uniForm select,.uniForm textarea{float:none}a#pick-files:hover{cursor:pointer}p#upload-container{display:block;font-weight:bold;font-size:25px;margin:1em 0;text-align:center}a#upload{border:1px solid red;padding:15px;text-decoration:none}a#upload:hover{border:2px solid red}.image-caption{width:400px}#images .image-caption{height:100px;padding:5px}.image-container{height:100px;width:125px}#images a{position:relative;top:-50px;left:15px}#images li{list-style:none;margin:2em 0;padding:0}#images ul{padding:0}#images p{text-align:center;font-weight:bold;margin:1em 0}#images p.error{color:red}.draggable{cursor:move;-moz-user-select:none}.dragging{opacity:.4;-moz-opacity:.4;filter:alpha(opacity=40)}.application-submit legend{margin:2em 0}.application-submit dt{margin:1em 0;font-weight:bold}.application-submit ol li{margin:2em 0}.application-submit .submit-button{margin:2em 0}.uniForm p.formHint{display:block;float:none;width:100%}.editor{width:650px}.note{color:grey;font-style:italic;font-size:.9em;line-height:1.5em}#review .uniForm p.note{margin:1em 0}#review dt{font-weight:bold;font-size:1.2em;margin:1em}#review-images{height:550px}#review-images .galleria-container{background-color:#e8f3fc}#review-images .galleria-info-link{display:none}#login-notes p{margin:1em 0}#guidelines h1{text-align:center}#guidelines h2{font-size:16px;text-decoration:underline;color:black;margin:1em 0}#guidelines h3{font-size:15px}
+.modal-dialog{background:#c1d9ff;border:1px solid #3a5774;color:#000;padding:4px;position:absolute}.modal-dialog a,.modal-dialog a:link,.modal-dialog a:visited{color:#06c;cursor:pointer}.modal-dialog-bg{background:#666;left:0;position:absolute;top:0}.modal-dialog-title{background:#e0edfe;color:#000;cursor:pointer;font-size:120%;font-weight:bold;padding:8px 31px 8px 8px;position:relative;_zoom:1}.modal-dialog-title-close{background:#e0edfe url(//ssl.gstatic.com/editor/editortoolbar.png) no-repeat -528px 0;cursor:default;height:15px;position:absolute;right:10px;top:8px;width:15px;vertical-align:middle}.modal-dialog-buttons,.modal-dialog-content{background-color:#fff;padding:8px}.goog-buttonset-default{font-weight:bold}.goog-inline-block{position:relative;display:-moz-inline-box;display:inline-block}* html .goog-inline-block{display:inline}*:first-child+html .goog-inline-block{display:inline}.tr-icon{width:16px;height:16px;background:url(//ssl.gstatic.com/editor/editortoolbar.png) no-repeat;vertical-align:middle}.goog-color-menu-button-indicator .tr-icon{height:14px}.tr-undo,.goog-toolbar-button-rtl .tr-redo{background-position:0 0}.tr-redo,.goog-toolbar-button-rtl .tr-undo{background-position:-16px}.tr-fontName .goog-toolbar-menu-button-caption{color:#246;width:16ex;height:16px;overflow:hidden}.tr-fontSize .goog-toolbar-menu-button-caption{color:#246;width:8ex;height:16px;overflow:hidden}.tr-bold{background-position:-32px}.tr-italic{background-position:-48px}.tr-underline{background-position:-64px}.tr-foreColor{height:14px;background-position:-80px}.tr-backColor{height:14px;background-position:-96px}.tr-link{font-weight:bold;color:#009;text-decoration:underline}.tr-image{background-position:-112px}.tr-newDrawing{background-position:-592px}.tr-spChar{font-weight:bold;color:#900}.tr-indent{background-position:-128px}.tr-rtl-mode .tr-indent{background-position:-400px}.tr-outdent{background-position:-144px}.tr-rtl-mode .tr-outdent{background-position:-416px}.tr-insertUnorderedList{background-position:-160px}.tr-rtl-mode .tr-insertUnorderedList{background-position:-432px}.tr-insertOrderedList{background-position:-176px}.tr-rtl-mode .tr-insertOrderedList{background-position:-448px}.tr-justifyLeft{background-position:-192px}.tr-justifyCenter{background-position:-208px}.tr-justifyRight{background-position:-224px}.tr-justifyFull{background-position:-480px}.tr-BLOCKQUOTE{background-position:-240px}.tr-rtl-mode .tr-BLOCKQUOTE{background-position:-464px}.tr-removeFormat{background-position:-256px}.tr-spell{background-position:-272px}.tr-ltr{background-position:-288px}.tr-rtl{background-position:-304px}.tr-insertModule{background-position:-496px}.tr-strikeThrough{background-position:-544px}.tr-subscript{background-position:-560px}.tr-superscript{background-position:-576px}.tr-equation{background-position:-608px}.tr-editHtml{color:#009}.tr-formatBlock .goog-toolbar-menu-button-caption{color:#246;width:12ex;height:16px;overflow:hidden}.goog-button{color:#036;border-color:#036;background-color:#69c}.goog-button-disabled{border-color:#333;color:#333;background-color:#999}.goog-button-hover{color:#369;border-color:#369;background-color:#9cf}.goog-button-active{color:#69c;border-color:#69c}.goog-link-button{position:relative;color:#00f;text-decoration:underline;cursor:pointer}.goog-link-button-disabled{color:#888;text-decoration:none;cursor:default}.goog-tab-bar{margin:0;border:0;padding:0;list-style:none;cursor:default;outline:0;background:#ebeff9}.goog-tab-bar-clear{clear:both;height:0;overflow:hidden}.goog-tab-bar-start{float:left}.goog-tab-bar-end{float:right}* html .goog-tab-bar-start{margin-right:-3px}* html .goog-tab-bar-end{margin-left:-3px}.goog-menuitem{color:#000;font:normal 13px Arial,sans-serif;list-style:none;margin:0;padding:4px 7em 4px 28px;white-space:nowrap}.goog-menu-nocheckbox .goog-menuitem,.goog-menu-noicon .goog-menuitem{padding-left:12px}.goog-menu-noaccel .goog-menuitem{padding-right:20px}.goog-menuitem-content{color:#000;font:normal 13px Arial,sans-serif}.goog-menuitem-disabled .goog-menuitem-accel,.goog-menuitem-disabled .goog-menuitem-content{color:#ccc!important}.goog-menuitem-disabled .goog-menuitem-icon{opacity:.3;-moz-opacity:.3;filter:alpha(opacity=30)}.goog-menuitem-highlight,.goog-menuitem-hover{background-color:#d6e9f8;border-color:#d6e9f8;border-style:dotted;border-width:1px 0;padding-bottom:3px;padding-top:3px}.goog-menuitem-checkbox,.goog-menuitem-icon{background-repeat:no-repeat;height:16px;left:6px;position:absolute;right:auto;vertical-align:middle;width:16px}.goog-option-selected .goog-menuitem-checkbox,.goog-option-selected .goog-menuitem-icon{background:url(//ssl.gstatic.com/editor/editortoolbar.png) no-repeat -512px 0}.goog-menuitem-accel{color:#999;direction:ltr;left:auto;padding:0 6px;position:absolute;right:0;text-align:right}.goog-tab{position:relative;padding:4px 8px;color:#00c;text-decoration:underline;cursor:default}.goog-tab-bar-top .goog-tab{margin:1px 4px 0 0;border-bottom:0;float:left}.goog-tab-bar-top:after,.goog-tab-bar-bottom:after{content:" ";display:block;height:0;clear:both;visibility:hidden}.goog-tab-bar-bottom .goog-tab{margin:0 4px 1px 0;border-top:0;float:left}.goog-tab-bar-start .goog-tab{margin:0 0 4px 1px;border-right:0}.goog-tab-bar-end .goog-tab{margin:0 1px 4px 0;border-left:0}.goog-tab-hover{background:#eee}.goog-tab-disabled{color:#666}.goog-tab-selected{color:#000;background:#fff;text-decoration:none;font-weight:bold;border:1px solid #6b90da}.goog-tab-bar-top{padding-top:5px!important;padding-left:5px!important;border-bottom:1px solid #6b90da!important}.goog-tab-bar-top .goog-tab-selected{top:1px;margin-top:0;padding-bottom:5px}.goog-tab-bar-bottom .goog-tab-selected{top:-1px;margin-bottom:0;padding-top:5px}.goog-tab-bar-start .goog-tab-selected{left:1px;margin-left:0;padding-right:9px}.goog-tab-bar-end .goog-tab-selected{left:-1px;margin-right:0;padding-left:9px}.goog-menuseparator{border-top:1px solid #ccc;margin:4px 0;padding:0}.goog-toolbar{background:#fafafa url(//ssl.gstatic.com/editor/toolbar-bg.png) repeat-x bottom left;border-bottom:1px solid #d5d5d5;cursor:default;font:normal 12px Arial,sans-serif;margin:0;outline:0;padding:2px;position:relative;zoom:1}.goog-toolbar-button{margin:0 2px;border:0;padding:0;font-family:Arial,sans-serif;color:#333;text-decoration:none;list-style:none;vertical-align:middle;cursor:default;outline:0}.goog-toolbar-button-outer-box,.goog-toolbar-button-inner-box{border:0;vertical-align:top}.goog-toolbar-button-outer-box{margin:0;padding:1px 0}.goog-toolbar-button-inner-box{margin:0 -1px;padding:3px 4px}* html .goog-toolbar-button-inner-box{left:-1px}* html .goog-toolbar-button-rtl .goog-toolbar-button-outer-box{left:-1px}* html .goog-toolbar-button-rtl .goog-toolbar-button-inner-box{right:auto}*:first-child+html .goog-toolbar-button-inner-box{left:-1px}*:first-child+html .goog-toolbar-button-rtl .goog-toolbar-button-inner-box{left:1px;right:auto}::root .goog-toolbar-button,::root .goog-toolbar-button-outer-box{line-height:0}::root .goog-toolbar-button-inner-box{line-height:normal}.goog-toolbar-button-disabled{opacity:.3;-moz-opacity:.3;filter:alpha(opacity=30)}.goog-toolbar-button-disabled .goog-toolbar-button-outer-box,.goog-toolbar-button-disabled .goog-toolbar-button-inner-box{color:#333!important;border-color:#999!important}* html .goog-toolbar-button-disabled{background-color:#f0f0f0;margin:0 1px;padding:0 1px}*:first-child+html .goog-toolbar-button-disabled{background-color:#f0f0f0;margin:0 1px;padding:0 1px}.goog-toolbar-button-hover .goog-toolbar-button-outer-box,.goog-toolbar-button-active .goog-toolbar-button-outer-box,.goog-toolbar-button-checked .goog-toolbar-button-outer-box,.goog-toolbar-button-selected .goog-toolbar-button-outer-box{border-width:1px 0;border-style:solid;padding:0}.goog-toolbar-button-hover .goog-toolbar-button-inner-box,.goog-toolbar-button-active .goog-toolbar-button-inner-box,.goog-toolbar-button-checked .goog-toolbar-button-inner-box,.goog-toolbar-button-selected .goog-toolbar-button-inner-box{border-width:0 1px;border-style:solid;padding:3px}.goog-toolbar-button-hover .goog-toolbar-button-outer-box,.goog-toolbar-button-hover .goog-toolbar-button-inner-box{border-color:#a1badf!important}.goog-toolbar-button-active,.goog-toolbar-button-checked,.goog-toolbar-button-selected{background-color:#dde1eb!important}.goog-toolbar-button-active .goog-toolbar-button-outer-box,.goog-toolbar-button-active .goog-toolbar-button-inner-box,.goog-toolbar-button-checked .goog-toolbar-button-outer-box,.goog-toolbar-button-checked .goog-toolbar-button-inner-box,.goog-toolbar-button-selected .goog-toolbar-button-outer-box,.goog-toolbar-button-selected .goog-toolbar-button-inner-box{border-color:#729bd1}.goog-toolbar-button-collapse-right,.goog-toolbar-button-collapse-right .goog-toolbar-button-outer-box,.goog-toolbar-button-collapse-right .goog-toolbar-button-inner-box{margin-right:0}.goog-toolbar-button-collapse-left,.goog-toolbar-button-collapse-left .goog-toolbar-button-outer-box,.goog-toolbar-button-collapse-left .goog-toolbar-button-inner-box{margin-left:0}* html .goog-toolbar-button-collapse-left .goog-toolbar-button-inner-box{left:0}*:first-child+html .goog-toolbar-button-collapse-left .goog-toolbar-button-inner-box{left:0}.goog-toolbar-menu-button{margin:0 2px;border:0;padding:0;font-family:Arial,sans-serif;color:#333;text-decoration:none;list-style:none;vertical-align:middle;cursor:default;outline:0}.goog-toolbar-menu-button-outer-box,.goog-toolbar-menu-button-inner-box{border:0;vertical-align:top}.goog-toolbar-menu-button-outer-box{margin:0;padding:1px 0}.goog-toolbar-menu-button-inner-box{margin:0 -1px;padding:3px 4px}* html .goog-toolbar-menu-button-inner-box{left:-1px}* html .goog-toolbar-menu-button-rtl .goog-toolbar-menu-button-outer-box{left:-1px}* html .goog-toolbar-menu-button-rtl .goog-toolbar-menu-button-inner-box{right:auto}*:first-child+html .goog-toolbar-menu-button-inner-box{left:-1px}*:first-child+html .goog-toolbar-menu-button-rtl .goog-toolbar-menu-button-inner-box{left:1px;right:auto}::root .goog-toolbar-menu-button,::root .goog-toolbar-menu-button-outer-box,::root .goog-toolbar-menu-button-inner-box{line-height:0}::root .goog-toolbar-menu-button-caption,::root .goog-toolbar-menu-button-dropdown{line-height:normal}.goog-toolbar-menu-button-disabled{opacity:.3;-moz-opacity:.3;filter:alpha(opacity=30)}.goog-toolbar-menu-button-disabled .goog-toolbar-menu-button-outer-box,.goog-toolbar-menu-button-disabled .goog-toolbar-menu-button-inner-box{color:#333!important;border-color:#999!important}* html .goog-toolbar-menu-button-disabled{background-color:#f0f0f0;margin:0 1px;padding:0 1px}*:first-child+html .goog-toolbar-menu-button-disabled{background-color:#f0f0f0;margin:0 1px;padding:0 1px}.goog-toolbar-menu-button-hover .goog-toolbar-menu-button-outer-box,.goog-toolbar-menu-button-active .goog-toolbar-menu-button-outer-box,.goog-toolbar-menu-button-open .goog-toolbar-menu-button-outer-box{border-width:1px 0;border-style:solid;padding:0}.goog-toolbar-menu-button-hover .goog-toolbar-menu-button-inner-box,.goog-toolbar-menu-button-active .goog-toolbar-menu-button-inner-box,.goog-toolbar-menu-button-open .goog-toolbar-menu-button-inner-box{border-width:0 1px;border-style:solid;padding:3px}.goog-toolbar-menu-button-hover .goog-toolbar-menu-button-outer-box,.goog-toolbar-menu-button-hover .goog-toolbar-menu-button-inner-box{border-color:#a1badf!important}.goog-toolbar-menu-button-active,.goog-toolbar-menu-button-open{background-color:#dde1eb!important}.goog-toolbar-menu-button-active .goog-toolbar-menu-button-outer-box,.goog-toolbar-menu-button-active .goog-toolbar-menu-button-inner-box,.goog-toolbar-menu-button-open .goog-toolbar-menu-button-outer-box,.goog-toolbar-menu-button-open .goog-toolbar-menu-button-inner-box{border-color:#729bd1}.goog-toolbar-menu-button-caption{padding:0 4px 0 0;vertical-align:middle}.goog-toolbar-menu-button-dropdown{width:7px;background:url(//ssl.gstatic.com/editor/editortoolbar.png) no-repeat -388px 0;vertical-align:middle}.goog-toolbar-separator{margin:0 2px;border-left:1px solid #d6d6d6;border-right:1px solid #f7f7f7;padding:0;width:0;text-decoration:none;list-style:none;outline:0;vertical-align:middle;line-height:normal;font-size:120%;overflow:hidden}.goog-toolbar-select .goog-toolbar-menu-button-outer-box{border-width:1px 0;border-style:solid;padding:0}.goog-toolbar-select .goog-toolbar-menu-button-inner-box{border-width:0 1px;border-style:solid;padding:3px}.goog-toolbar-select .goog-toolbar-menu-button-outer-box,.goog-toolbar-select .goog-toolbar-menu-button-inner-box{border-color:#bfcbdf}.goog-palette-cell .goog-palette-colorswatch{border:0;font-size:x-small;height:18px;position:relative;width:18px}.goog-palette-cell-hover .goog-palette-colorswatch{border:1px solid #fff;height:16px;width:16px}.goog-palette-cell-selected .goog-palette-colorswatch{background:url(//ssl.gstatic.com/editor/editortoolbar.png) no-repeat -368px 0;border:1px solid #333;color:#fff;font-weight:bold;height:16px;width:16px}.goog-palette-customcolor{background-color:#fafafa;border:1px solid #eee;color:#666;font-size:x-small;height:15px;position:relative;width:15px}.goog-palette-cell-hover .goog-palette-customcolor{background-color:#fee;border:1px solid #f66;color:#f66}.tr-dialog{width:475px}.tr-dialog .goog-tab-content{margin:0;border:1px solid #6b90da;padding:4px 8px;background:#fff;overflow:auto}.tr-tabpane{font-size:10pt;padding:1.3ex 0}.tr-tabpane-caption{font-size:10pt;margin-bottom:.7ex;background-color:#fffaf5;line-height:1.3em}.tr-tabpane .goog-tab-content{border:0;padding:5px 7px 1px}.tr-tabpane .goog-tab{background-color:#fff;border:0;width:136px;line-height:1.3em;margin-bottom:.7ex}.tr-tabpane .goog-tab{text-decoration:underline;color:blue;cursor:pointer}.tr-tabpane .goog-tab-selected{font-weight:bold;text-decoration:none;color:black}.tr-tabpane .goog-tab input{margin:-2px 5px 0 0}div.tr_bubble{position:absolute;background-color:#e0ecff;border:1px solid #99c0ff;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px;font-size:83%;font-family:Arial,Helvetica,sans-serif;padding:2px 19px 6px 6px;white-space:nowrap}.tr_bubble_link{color:#00c;text-decoration:underline;cursor:pointer;font-size:100%}.tr_bubble .tr_option-link,.tr_bubble #tr_delete-image,.tr_bubble #tr_module-options-link{font-size:83%}.tr_bubble_closebox{position:absolute;cursor:default;background:url(//ssl.gstatic.com/editor/bubble_closebox.gif) top left no-repeat;padding:0;margin:0;width:10px;height:10px;top:3px;right:5px}div.tr_bubble_panel{padding:2px 0 1px}div.tr_bubble_panel_title{display:none}div.tr_multi_bubble div.tr_bubble_panel_title{margin-right:1px;display:block;float:left;width:50px}div.tr_multi_bubble div.tr_bubble_panel{padding:2px 0 1px;margin-right:50px}.tr-link-dialog-explanation-text{font-size:83%;margin-top:15px}.tr-link-dialog-target-input{width:98%;direction:ltr}.tr-link-dialog-email-warning{text-align:center;color:#c00;font-weight:bold}.tr_pseudo-link{color:#00c;text-decoration:underline;cursor:pointer}.goog-menu{background:#fff;border-color:#ccc #666 #666 #ccc;border-style:solid;border-width:1px;cursor:default;font:normal 13px Arial,sans-serif;margin:0;outline:0;padding:4px 0;position:absolute;z-index:20000}.goog-palette{cursor:default;outline:0}.goog-palette-table{border:1px solid #666;border-collapse:collapse;margin:5px}.goog-palette-cell{border:0;border-right:1px solid #666;cursor:pointer;height:18px;margin:0;text-align:center;vertical-align:middle;width:18px}.uniForm{margin:0;padding:0;position:relative;z-index:1}.uniForm fieldset{border:0;margin:0;padding:0}.uniForm fieldset legend{margin:0;padding:0}.uniForm .ctrlHolder,.uniForm .buttonHolder{margin:0;padding:0;clear:both}.uniForm:after,.uniForm .buttonHolder:after,.uniForm .ctrlHolder:after,.uniForm .ctrlHolder .multiField:after,.uniForm .inlineLabel:after{content:".";display:block;height:0;line-height:0;font-size:0;clear:both;min-height:0;visibility:hidden}.uniForm label,.uniForm button{cursor:pointer}.uniForm label,.uniForm .label{display:block;float:none;margin:0 0 .5em 0;padding:0;line-height:100%;width:auto}.uniForm .textInput,.uniForm .fileUpload,.uniForm .selectInput,.uniForm select,.uniForm textarea{float:left;width:53%;margin:0}.uniForm .readOnlyLabel{margin:0;font-size:1em;font-weight:bold}.uniForm .readOnly{font-size:.85em}.uniForm .readOnly .choiceLabel{color:#777;text-transform:uppercase;font-size:.75em;letter-spacing:.15em}.uniForm .formHint{float:right;width:43%;margin:0;clear:none}.uniForm ul{float:left;width:53%;margin:0;padding:0}.uniForm ul li{margin:0 0 .5em 0;list-style:none}.uniForm ul li label{margin:0;float:none;display:block;overflow:visible}.uniForm ul.alternate li{float:left;width:30%;margin-right:3%}.uniForm ul.alternate li label{float:none;display:block;width:98%}.uniForm ul .textInput,.uniForm ul .selectInput,.uniForm ul select,.uniForm ul.alternate .textInput,.uniForm ul.alternate .selectInput,.uniForm ul.alternate select{width:98%;margin-top:.5em;display:block;float:none}.uniForm label em,.uniForm .label em{float:left;width:1em;margin:0 0 0 -1em}.uniForm .inlineLabels label,.uniForm .inlineLabels .label,.uniForm .inlineLabels .readOnlyLabel{float:left;margin:.3em 2% 0 0;padding:0;line-height:1;position:relative;width:32%}.uniForm .inlineLabels .readOnlyLabel{margin:0}.uniForm .inlineLabels .textInput,.uniForm .inlineLabels .fileUpload,.uniForm .inlineLabels .selectInput,.uniForm .inlineLabels select,.uniForm .inlineLabels textarea{float:left;width:64%}.uniForm .inlineLabels .formHint{clear:both;float:none;width:auto;margin-left:34%;position:static}.uniForm .inlineLabels ul{float:left;width:66%}.uniForm .inlineLabels ul li{margin:.5em 0}.uniForm .inlineLabels ul li label{float:none;display:block;width:100%}.uniForm .inlineLabels ul.alternate li{margin-right:3%;margin-top:.25em}.uniForm .inlineLabels ul li label .textInput,.uniForm .inlineLabels ul li label textarea,.uniForm .inlineLabels ul li label select{float:none;display:block;width:98%}.uniForm .inlineLabels .readOnly{float:right;width:66%}.uniForm .inlineLabels label em,.uniForm .inlineLabels .label em{display:block;float:none;margin:0;position:absolute;right:0}.uniForm legend{color:inherit}.uniForm .secondaryAction{float:left}.uniForm .inlineLabel input,.uniForm .inlineLabels .inlineLabel input,.uniForm .blockLabels .inlineLabel input,.uniForm label input{float:none;display:inline;margin:0;padding:0;border:0}.uniForm .buttonHolder .inlineLabel,.uniForm .buttonHolder label{float:left;margin:.5em 0 0 0;width:auto;max-width:60%;text-align:left}.uniForm .inlineLabels .noLabel ul{margin-left:34%}.uniForm .small{width:30%!important}.uniForm .medium{width:45%!important}.uniForm .auto{width:auto!important;height:auto!important}.uniForm .small,.uniForm .medium,.uniForm .auto{margin-right:4px}.uniForm .col{float:left}.uniForm .col{width:50%}body{background:#fff;font-family:Arial,Helvetica,sans-serif;font-family:Arial,Helvetica,sans-serif;font-size:14px;color:#3c3d3f}h1,h2,h3{font-weight:normal;color:#ff3000;margin:0 0 .25em 0}h1{font-size:2em}h2{font-size:2.8em}h3{font-size:1.6em}p,ul,ol{line-height:1.5em}a{text-decoration:underline;color:#eb1d1d}a:hover{text-decoration:none}#wrapper{margin:0 auto;padding:0;width:1000px}#header{background:0;height:70px;margin-bottom:30px;padding:0 0 10px 0;border-bottom:2px solid #BBB}#osf-logo{float:left}#language{float:right}#language ul,#language li{list-style:none;display:inline;margin:0;padding:0}#language li{margin:0 5px}#heading-section{clear:both;margin-top:1em}#heading{text-transform:uppercase}#contact{float:right}#header h1{font-weight:bold}#header a{text-decoration:none}#header a:hover{text-decoration:underline}#heading a{color:#ff3000}#heading a:hover{text-decoration:none}#content{float:left;width:760px;background:#FFF;margin:0 0 2em 0}#sidebar{float:right;width:200px;text-align:right}#sidebar h2{color:#414141;font-size:2em;margin:.5em 0}#sidebar #login-logout{margin:0 0 1em 0}#sidebar #update-profile{margin:1em 0}#sidebar #applications-list{margin-top:1em}#sidebar ul,#sidebar li{padding:0;margin:0;list-style:none}#sidebar a{text-decoration:none}#sidebar a:hover{text-decoration:underline}#sidebar #admin{margin-top:1em}#footer{border-top:2px solid #BBB;clear:both}#footer p{margin:1em 0 2em 0;color:#777;font-size:.8em}.uniForm{background-color:#e8f3fc;padding:20px}.uniForm legend{display:none}.uniForm .ctrlHolder{margin:2em 0}.uniForm .ctrlHolder .error{font-weight:bold;font-size:1.2em;color:red}.uniForm .ctrlHolder label{cursor:auto}.uniForm .formHint{clear:inherit;float:inherit;width:inherit;margin:0;color:#999;font-style:italic;font-size:12px}.uniForm .textInput,.uniForm .fileUpload,.uniForm .selectInput,.uniForm select,.uniForm textarea{float:none}#page .form-errors{padding:10px;border:2px solid red}#page .form-errors p{color:red;font-weight:bold}#page .form-errors ul{float:none}#page .form-errors li span{color:red;font-weight:bold}a#pick-files:hover{cursor:pointer}p#upload-container{display:block;font-weight:bold;font-size:25px;margin:1em 0;text-align:center}a#upload{border:1px solid red;padding:15px;text-decoration:none}a#upload:hover{border:2px solid red}.image-caption{width:400px}#images .image-caption{height:100px;padding:5px}.image-container{height:100px;width:125px}#images a{position:relative;top:-50px;left:15px}#images li{list-style:none;margin:2em 0;padding:0}#images ul{padding:0}#images p{text-align:center;font-weight:bold;margin:1em 0}#images p.error{color:red}.draggable{cursor:move;-moz-user-select:none}.dragging{opacity:.4;-moz-opacity:.4;filter:alpha(opacity=40)}.application-submit legend{margin:2em 0}.application-submit dt{margin:1em 0;font-weight:bold}.application-submit ol li{margin:2em 0}.application-submit .submit-button{margin:2em 0}.uniForm p.formHint{display:block;float:none;width:100%}.editor{width:650px}.note{color:grey;font-style:italic;font-size:.9em;line-height:1.5em}#review .uniForm p.note{margin:1em 0}#review dt{font-weight:bold;font-size:1.2em;margin:1em}#review-images{height:550px}#review-images .galleria-container{background-color:#e8f3fc}#review-images .galleria-info-link{display:none}#login-notes p{margin:1em 0}#guidelines h1{text-align:center}#guidelines h2{font-size:16px;text-decoration:underline;color:black;margin:1em 0}#guidelines h3{font-size:15px}
View
16 resources/public/css/docphoto.css
@@ -169,6 +169,22 @@ a:hover {
float: none;
}
+#page .form-errors {
+ padding: 10px;
+ border: 2px solid red;
+}
+#page .form-errors p {
+ color: red;
+ font-weight: bold;
+}
+#page .form-errors ul {
+ float: none;
+}
+#page .form-errors li span {
+ color: red;
+ font-weight: bold;
+}
+
/**
* style specific
*/
View
2  src/docphoto/config.clj.example
@@ -1,6 +1,8 @@
(ns docphoto.config)
(def debug false)
+(def debug-css false)
+(def debug-js false)
(def conn-dev {:user "username"
:pass "password"
View
108 src/docphoto/core.clj
@@ -4,9 +4,10 @@
[compojure.response :only (render)]
[ring.middleware.multipart-params :only (wrap-multipart-params)]
[ring.middleware.file-info :only (wrap-file-info)]
+ [hiccup.util :only (escape-html)]
[hiccup.core :only (html)]
- [hiccup.page-helpers :only (xhtml include-css
- include-js javascript-tag)]
+ [hiccup.page :only (xhtml include-css include-js)]
+ [hiccup.element :only (javascript-tag)]
[ring.adapter.jetty-servlet :only (run-jetty)]
[ring.util.response :only (redirect)]
[clojure.core.incubator :only (-?> -?>> dissoc-in)]
@@ -16,7 +17,7 @@
not-empty-and-ascii?)]
[docphoto.form :only (defformpage came-from-field
req-textfield textfield req-password
- english-only-textfield)])
+ english-only-textfield make-field-label-mapping)])
(:require [compojure.route :as route]
[docphoto.salesforce :as sf]
[docphoto.persist :as persist]
@@ -28,11 +29,14 @@
[clojure.string :as string]
[clojure.set]
[docphoto.guidelines :as guidelines]
- [hiccup.page-helpers :as ph]
+ [hiccup.page :as ph]
+ [hiccup.util :as hu]
+ [hiccup.element :as he]
[ring.middleware.stacktrace :as stacktrace]
[ring.util.codec :as ring-codec]
[decline.core :as decline]
- [swank.swank])
+ ;[swank.swank]
+ )
(:import [java.io File PipedInputStream PipedOutputStream OutputStream]
[java.util.zip ZipOutputStream ZipEntry]
[javax.servlet.http HttpSession]))
@@ -313,7 +317,7 @@
(vec (list-all-editor-css-files)))
(defmacro theme-css [editor-css?]
- (if cfg/debug
+ (if cfg/debug-css
(let [debug-css-files ["/public/css/google/common.css"
"/public/css/uni-form.css"
"/public/css/docphoto.css"]]
@@ -325,7 +329,7 @@
["/public/css/docphoto-min.css"]))
(defmacro theme-js [include-upload-js?]
- (if cfg/debug
+ (if cfg/debug-js
(let [debug-js-file "http://localhost:9810/compile?id=docphoto"]
`(apply
include-js
@@ -354,7 +358,7 @@
"Generate a string link from the parts. They are joined together with str"
[fn-name args & uri-parts]
`(defn ~fn-name ~args
- (ph/url "/" ~@(interpose "/" uri-parts))))
+ (str "/" ~@(interpose "/" uri-parts))))
(defmacro deflinks [& deflink-specs]
`(do ~@(for [spec deflink-specs]
@@ -417,7 +421,7 @@
(when user
(list
[:div#update-profile
- (ph/link-to (profile-update-link (:id user)) (i18n/translate :update-profile))]
+ (he/link-to (profile-update-link (:id user)) (i18n/translate :update-profile))]
(let [apps (query-applications (:id user))]
(when (not-empty apps)
[:div#applications-list
@@ -443,10 +447,10 @@
[:div#admin
[:h2 "Admin"]
[:ul
- [:li (ph/link-to (admin-password-reset-link) "Reset User Password")]
- [:li (ph/link-to (admin-create-vetter-link) "Create Vetter Account")]
- [:li (ph/link-to (admin-download-link) "Download Images")]
- [:li (ph/link-to (admin-login-as-link) "Login As Other User")]]]))))))
+ [:li (he/link-to (admin-password-reset-link) "Reset User Password")]
+ [:li (he/link-to (admin-create-vetter-link) "Create Vetter Account")]
+ [:li (he/link-to (admin-download-link) "Download Images")]
+ [:li (he/link-to (admin-login-as-link) "Login As Other User")]]]))))))
(defmacro when-multiple-languages [& body]
(cond
@@ -473,7 +477,7 @@
[:body
[:div#wrapper
[:div#header
- [:div#osf-logo (ph/image "/public/osf-logo.png"
+ [:div#osf-logo (he/image "/public/osf-logo.png"
"Open Society Foundations")]
(when-multiple-languages
[:div#language
@@ -484,11 +488,11 @@
[:li
(if (= (keyword lang) current-language)
text
- (ph/link-to
+ (he/link-to
(switch-language-link lang came-from) text))]))]])
[:div#heading-section
- [:div#contact (ph/link-to "mailto:docphoto@sorosny.org" "Contact Us")]
- [:h1#heading (ph/link-to
+ ;[:div#contact (he/link-to "mailto:docphoto@sorosny.org" "Contact Us")]
+ [:h1#heading (he/link-to
"/"
(str (heading-apply-text request) ": " (i18n/translate :apply-online)))]]]
[:div#page
@@ -574,6 +578,25 @@
(defn logout [request]
(session/delete request))
+;; move to form maybe?
+(defn error-map->errors-list [errors-map field-name->field-label]
+ (for [[field-name error-msg] errors-map
+ :let [field-label (field-name->field-label field-name)]
+ :when field-label]
+ {:label field-label
+ :msg error-msg}))
+
+(defn display-error-summary [errors-map field->label]
+ (when (seq errors-map)
+ (when-let [errors-list (error-map->errors-list errors-map field->label)]
+ [:div.form-errors
+ [:p (i18n/translate :there-were-errors)]
+ [:ul
+ (for [{:keys [label msg]} errors-list]
+ [:li
+ (str (i18n/translate label) ": ")
+ [:span (i18n/translate msg)]])]])))
+
(defformpage login-view []
[(req-textfield :userName__c :username)
(req-password :password__c :password)
@@ -584,6 +607,7 @@
(list
[:form.uniForm {:method :post :action (login-link)}
[:h2 (i18n/translate :login)]
+ (display-error-summary errors field->label)
[:fieldset
(when-let [user (session/get-user request)]
[:p ((i18n/translate :already-logged-in) (:name user))])
@@ -700,6 +724,7 @@
{}
[:form.uniForm {:method :post :action (register-link)}
[:h2 (i18n/translate :register)]
+ (display-error-summary errors field->label)
(render-fields request params errors)
[:input {:type :submit :value (i18n/translate :register)}]])
(let [{password1 :password__c password2 :password2
@@ -883,7 +908,7 @@
{:label "Multimedia Link"
:description
"Moving Walls has the capacity to exhibit multimedia in addition to (but not in place of) the print exhibition. A multimedia sample should be submitted only if it complements or enhances, rather than duplicates, the other submitted materials. The sample will be judged on its ability to present complex issues through compelling multimedia storytelling, and will not negatively impact the print submission. If you are submitting a multimedia piece for consideration, please post the piece on a free public site such as YouTube or Vimeo and include a link. If the piece is longer than five minutes, let us know what start time to begin watching at."}]}
-
+
;; prodgrant fields
:pg-project-title {:field [:text {} :title__c {:label :pg-project-title}]
:validator {:fn not-empty-and-ascii? :msg :required-english-only}}
@@ -961,7 +986,7 @@
{:title (str (:name exhibit) " Closed")}
[:div
[:p "We are no longer accepting applications for " (:name exhibit) "."]
- [:p "If you attempted to submit your application before or on the May 2nd deadline and had trouble with the online application system, please contact Felix Endara at " (ph/link-to "mailto:docphoto@sorosny.org" "docphoto@sorosny.org") "."]])
+ [:p "If you attempted to submit your application before or on the May 2nd deadline and had trouble with the online application system, please contact Felix Endara at " (he/link-to "mailto:docphoto@sorosny.org" "docphoto@sorosny.org") "."]])
(defn exhibit-apply-view [request exhibit]
(when-logged-in
@@ -969,6 +994,7 @@
(exhibit-closed-view request exhibit)
(let [params (:params request)
fields (exhibit-apply-fields exhibit)
+ field->label (make-field-label-mapping fields)
render-form (fn [params errors]
(let [field (form/field-render-fn params errors)]
(layout
@@ -980,6 +1006,7 @@
[:form.uniForm {:method :post :action (:uri request)
:enctype "multipart/form-data"}
[:h2 (str (i18n/translate :apply-to) (:name exhibit))]
+ (display-error-summary errors field->label)
[:fieldset
[:legend "Apply"]
(letfn [(render-field [field-stanza]
@@ -1015,6 +1042,7 @@
(let [params (:params request)
exhibit (:exhibit__r application)
fields (application-update-fields application)
+ field->label (make-field-label-mapping fields)
render-form (fn [params errors]
(let [field (form/field-render-fn params errors)]
(layout
@@ -1025,6 +1053,7 @@
[:div
[:form.uniForm {:method :post :action (:uri request)
:enctype "multipart/form-data"}
+ (display-error-summary errors field->label)
[:fieldset
[:legend "Update application"]
(letfn [(render-field [field-stanza]
@@ -1097,7 +1126,7 @@
(defn render-image [request image]
(list
[:div.image-container.goog-inline-block
- (ph/image (image-link (:id image) "small" (:filename__c image)))]
+ (he/image (image-link (:id image) "small" (:filename__c image)))]
[:input {:type :hidden :name :imageids :value (:id image)}]
[:textarea {:name "captions" :class "image-caption"}
(or (:caption__c image) "")]
@@ -1317,7 +1346,7 @@
(for [image (query-images app-id)]
[:li
[:div.image-container.goog-inline-block
- (ph/image (image-link (:id image) "small" (:filename__c image)))]
+ (he/image (image-link (:id image) "small" (:filename__c image)))]
[:div.goog-inline-block.image-caption (:caption__c image)]])]
[:a {:href (application-upload-link app-id)} (i18n/translate :update)]]
(if errors
@@ -1522,6 +1551,7 @@
fields (application-review-fields application)]
[:div
[:h2 "Review Application"]
+ (display-error-summary errors field->label)
[:dl
[:dt "Applicant"]
[:dd (:name (query-user-by-id (:contact__c application)))]
@@ -1557,7 +1587,7 @@
[:input {:type "submit" :name :submit :value "Save"}]
[:p.note
"Submit means your review is final. You will have to contact: "
- (ph/link-to "mailto:docphoto@sorosny.org" "docphoto")
+ (he/link-to "mailto:docphoto@sorosny.org" "docphoto")
" if you need to update your review."]
[:input {:type "submit" :name :submit :value "Submit"}]]])])
(let [updated-params (update-in params [:rating__c] #(Double/valueOf ^String %))
@@ -1581,7 +1611,7 @@
[:p "Thank you for your review. "
(when-not final?
(list "You may "
- (ph/link-to (:uri request) "update")
+ (he/link-to (:uri request) "update")
" it at any time."))]])))
(defn can-view-review-request [request review-request-id f]
@@ -1752,7 +1782,7 @@
(prepare-exhibit-routes
(ANY "/apply" [] (exhibit-apply-view request exhibit))
(GET "/" [] (exhibit-view request exhibit))))
-
+
(context "/image/:image-id" [image-id]
(prepare-image-routes
(GET "/small/*" [] (image-view request image "small"))
@@ -1818,7 +1848,7 @@
[:p
"We're sorry. We ran into an error. If the problem continues, "
"please contact "
- (ph/link-to "mailto:docphoto@sorosny.org" "docphoto@sorosny.org")]))})))))
+ (he/link-to "mailto:docphoto@sorosny.org" "docphoto@sorosny.org")]))})))))
(defn wrap-stacktrace
"wrap the appropriate stack trace handler based on if debugging"
@@ -1888,28 +1918,30 @@
(connect-to-prod)
(def server (run-server)))
-(defn start-swank-server
- "start a swank server"
- [& server-options]
- (apply swank.swank/start-server server-options))
+;; (defn start-swank-server
+;; "start a swank server"
+;; [& server-options]
+;; (apply swank.swank/start-server server-options))
-(defn stop-swank-server [] (swank.swank/stop-server))
+;; (defn stop-swank-server [] (swank.swank/stop-server))
;; used for war file init/destroy
(defn servlet-init []
(println "connecting to salesforce ...")
(connect-to-prod)
(println "connected")
- (when cfg/swank-server?
- (println "starting swank server ...")
- (start-swank-server :host "localhost" :port 4005 :dont-close true)
- (println "swank server ready")))
+ ;; (when cfg/swank-server?
+ ;; (println "starting swank server ...")
+ ;; (start-swank-server :host "localhost" :port 4005 :dont-close true)
+ ;; (println "swank server ready"))
+ )
(defn servlet-destroy []
(println "disconnecting from sf")
(sf/disconnect conn)
(println "disconnected!")
- (when cfg/swank-server?
- (println "stopping swank server")
- (stop-swank-server)
- (println "swank server stopped")))
+ ;; (when cfg/swank-server?
+ ;; (println "stopping swank server")
+ ;; (stop-swank-server)
+ ;; (println "swank server stopped"))
+ )
View
9 src/docphoto/form.clj
@@ -132,6 +132,14 @@
`(fn [~'params ~'errors]
~form-render-body))
+(defn make-field-label-mapping [fieldspecs]
+ (into
+ {}
+ (for [fieldspec fieldspecs
+ :let [{[_ _ field-id {label :label}] :field} fieldspec]
+ :when (and field-id label)]
+ [field-id label])))
+
(defmacro defformpage
"Should write a lot of documentation here. Especially on anaphora. And what's expected. Fieldspecs need to be documented too. The fact that the body parameters need to be single forms too."
[fn-name args fieldspecs form-render-body success-body]
@@ -140,6 +148,7 @@
~'validate-fields ~(make-validator-fn fieldspecs)]
(defn ~fn-name [~'request ~@args]
(let [~'params (:params ~'request)
+ ~'field->label ~(make-field-label-mapping fieldspecs)
~'render-form ~(make-form-render-fn form-render-body)]
(onpost
(if-let [~'errors (~'validate-fields ~'params)]
View
2  src/docphoto/guidelines.clj
@@ -1,5 +1,5 @@
(ns docphoto.guidelines
- (:use [hiccup.page-helpers :only (link-to)]))
+ (:use [hiccup.element :only (link-to)]))
(defn link
"gudielines have many cases where the text of the link is the link itself"
View
22 src/docphoto/i18n.clj
@@ -1,5 +1,5 @@
(ns docphoto.i18n
- (:require [hiccup.page-helpers :as ph]
+ (:require [hiccup.element :as he]
[docphoto.guidelines :as guidelines]))
(def ^:dynamic *language* :en)
@@ -35,24 +35,24 @@
:new-password "New Password" "Новый пароль"
:update-password "Update Password" "Обновление пароля"
:reset-password-text
- (fn [reset-link] (list (ph/link-to reset-link "Reset") " your password instead."))
- (fn [reset-link] (list (ph/link-to reset-link "Сбросить ") " пароль вместо."))
+ (fn [reset-link] (list (he/link-to reset-link "Reset") " your password instead."))
+ (fn [reset-link] (list (he/link-to reset-link "Сбросить ") " пароль вместо."))
:already-logged-in (fn [username] (str "Already logged in as: " username))
(fn [username] (str "Уже вошли как: " username))
:invalid-credentials "Invalid Credentials" "Неверное Полномочия"
:forgot-your-password-reset (fn [forgot-link]
(list "Forgot your password? "
- (ph/link-to forgot-link "Reset it") "."))
+ (he/link-to forgot-link "Reset it") "."))
(fn [forgot-link]
(list "Забыли пароль? "
- (ph/link-to forgot-link "Сброс этого") "."))
+ (he/link-to forgot-link "Сброс этого") "."))
:no-account-register
(fn [register-link]
- (list "Don't have an account? " (ph/link-to register-link "Register") "."))
+ (list "Don't have an account? " (he/link-to register-link "Register") "."))
(fn [register-link]
- (list "Вы не имеете учетной записи? " (ph/link-to register-link "регистрировать") "."))
+ (list "Вы не имеете учетной записи? " (he/link-to register-link "регистрировать") "."))
:first-name "First Name" "имя"
:last-name "Last Name" "Фамилия"
@@ -88,11 +88,11 @@
:token-expired
(fn [link]
[:span "Token expired. Are you using the same browser session as when you requested a password reset? If so, you can "
- (ph/link-to link "resend")
+ (he/link-to link "resend")
" a password reset email."])
(fn [link]
[:span "Маркер истек. Используете ли вы той же сессии браузера, когда вы просили сброса пароля? Если "
- (ph/link-to link "это") " так, вы можете повторно электронной почты для сброса пароля."])
+ (he/link-to link "это") " так, вы можете повторно электронной почты для сброса пароля."])
:reset-password-for
(fn [username] (str "Reset password for: " username))
@@ -177,6 +177,10 @@ To reset your password, please click on the following link:
"Before submitting your application, please correct the following:"
"Перед подачей заявки, пожалуйста, исправьте следующие:"
+ :there-were-errors
+ "There were errors. Please correct:"
+ "Были ошибки. Пожалуйста, исправьте:"
+
:application-review "Application Review" "Обзор приложений"
:review-application-before-submitting
"Review your application before submitting."

No commit comments for this range

Something went wrong with that request. Please try again.