/* Perforce Documentation Styles */ /* body styling -------------------------------------------------------- */ body { background-color: #bcbab1; color: #333; } noscript { position: relative; } #noscript { position: absolute; top: 10em; left: 50%; background-color: #fff; color: #000; margin: 0 -15em; width: 30em; padding: 2em 4em; border: 1em solid #f00; font-weight: bold; } div.body { position: fixed; top: 50px; bottom: 0; left: 0; right: 0; width: 100%; -webkit-transition: top .3s ease-in-out; -moz-transition: top .3s ease-in-out; -ms-transition: top .3s ease-in-out; -o-transition: top .3s ease-in-out; transition: top .3s ease-in-out; margin: 0; padding: 0; display: none; } .container { position: relative; padding: 0; margin: 0 auto; max-width: 1156px; min-width: 320px; } div.body .container { height: 100%; } #content { position: absolute; display: block; width: 100%; overflow: auto; top: 0; -webkit-transition: bottom .3s ease-in-out; -moz-transition: bottom .3s ease-in-out; -ms-transition: bottom .3s ease-in-out; -o-transition: bottom .3s ease-in-out; transition: bottom .3s ease-in-out; bottom: 32px; } #content.nofooter { bottom: 0; } #content .content-container { position: absolute; left: 0; right: 0; min-height: 100%; background: #fff; -webkit-transition: left .3s ease-in-out, right .3s ease-in-out; -moz-transition: left .3s ease-in-out, right .3s ease-in-out; -ms-transition: left .3s ease-in-out, right .3s ease-in-out; -o-transition: left .3s ease-in-out, right .3s ease-in-out; transition: left .3s ease-in-out, right .3s ease-in-out; padding: 2% 5%; } h1, h2, h3, h4, h5, h6 { -webkit-transition: font-size .3s ease-in-out, line-height .3s ease-in-out; -moz-transition: font-size .3s ease-in-out, line-height .3s ease-in-out; -ms-transition: font-size .3s ease-in-out, line-height .3s ease-in-out; -o-transition: font-size .3s ease-in-out, line-height .3s ease-in-out; transition: font-size .3s ease-in-out, line-height .3s ease-in-out; } @media (min-width: 875px) { #content { bottom: 0; } #content .content-container { left: 291px; } } @media (max-width: 768px) { h1 { font-size: 26px; } h2 { font-size: 22px; } h3 { font-size: 18px; } h4 { font-size: 14px; } h5 { font-size: 14px; } h6 { font-size: 14px; } } @media (max-height: 320px) { div.body { top: 30px; } h1 { font-size: 18px; } h2 { font-size: 16px; } h3 { font-size: 13px; } h4 { font-size: 13px; } h5 { font-size: 13px; } h6 { font-size: 13px; } } /* header styling ------------------------------------------------------ */ header { position: fixed; top: 0; left: 0; right: 0; background-color: #e6e4dc; height: 50px; z-index: 100; box-shadow: 0 0 2px rgba(0, 0, 0, 0.5); -webkit-transition: height .3s ease-in-out; -moz-transition: height .3s ease-in-out; -ms-transition: height .3s ease-in-out; -o-transition: height .3s ease-in-out; transition: height .3s ease-in-out; display: none; } header button { position: absolute; top: 0; display: block; width: 50px; height: 50px; text-align: center; background-color: transparent; border: 0 none; color: rgba(0, 0, 0, 0.2); font-size: 20px; } header button .text { display: none; } header button.toc { left: 0; } header button.search { right: 0; } header button:hover, header button:focus, header button.active { background-color: rgba(0, 0, 0, 0.2); color: #fff; } header h1 { margin: 2px 64px; text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 24px; font-weight: normal; line-height: 1.9; } header h1 a { vertical-align: bottom; text-decoration: none; color: #333; } header h1 a:hover { color: #00f; text-decoration: none; } header h1 a.brand { display: inline-block; } header img { margin: -6px 8px 0 0; } @media (min-width: 875px) { header button.toc { display: none; } } @media (max-width: 768px) { header .brand img { width: 120px; height: auto; } header .brand { width: 26px; overflow: hidden; } } @media (max-height: 320px) { header { height: 30px; } header h1 { font-size: 13px; margin: 4px 36px; } header h1 a.brand { display: none; } header button { font-size: 14px; width: 30px; height: 30px; } } /* footer styling ------------------------------------------------------ */ footer { position: fixed; display: none; width: 100%; bottom: 0; left: 0; height: 32px; background-color: #e6e4dc; z-index: 100; box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.5); -webkit-transition: height .3s ease-in-out, bottom .3s ease-in-out; -moz-transition: height .3s ease-in-out, bottom .3s ease-in-out; -ms-transition: height .3s ease-in-out, bottom .3s ease-in-out; -o-transition: height .3s ease-in-out, bottom .3s ease-in-out; transition: height .3s ease-in-out, bottom .3s ease-in-out; } footer.close { bottom: -35px; } footer a { position: absolute; box-sizing: border-box; display: block; padding: 0 20px; text-decoration: none; white-space: nowrap; background-color: transparent; -webkit-transition: margin .3s ease-in-out; -moz-transition: margin .3s ease-in-out; -ms-transition: margin .3s ease-in-out; -o-transition: margin .3s ease-in-out; transition: margin .3s ease-in-out; top: 6px; width: 49%; color: #444; } footer a:hover { text-decoration: none; color: #00f; } footer a.nav-prev { left: 0; text-align: left; } footer a.nav-prev span { display: block; float: left; height: 25px; padding: 0 3px; } footer a.nav-next { right: 0; text-align: right; } footer a.nav-next span { display: block; float: right; height: 25px; padding: 0 3px; } footer .label, footer .title { overflow: hidden; pointer-events: none; text-overflow: ellipsis; font-size: 13px; line-height: 17px; color: inherit; padding: 0; font-weight: normal; text-align: inherit; } footer .label { display: none; } @media (min-width: 875px) { footer { bottom: -35px; } } @media (max-width: 568px) { footer .label { display: block; } footer .title { display: none; } } /* navigation styling -------------------------------------------------- */ nav { position: absolute; display: block; top: 0; left: 0; height: 100%; min-height: 100%; width: 290px; z-index: 10; background-color: #f5f3ea; -webkit-transition: left .3s ease-in-out, right .3s ease-in-out, width .3s ease-in-out; -moz-transition: left .3s ease-in-out, right .3s ease-in-out, width .3s ease-in-out; -ms-transition: left .3s ease-in-out, right .3s ease-in-out, width .3s ease-in-out; -o-transition: left .3s ease-in-out, right .3s ease-in-out, width .3s ease-in-out; transition: left .3s ease-in-out, right .3s ease-in-out, width .3s ease-in-out; } nav.open { left: 0; } ul.toc { font-size: 13px; line-height: 17px; height: 100%; overflow-y: auto; } nav ul, nav li { margin: 0; padding: 0; list-style: none; position: relative; } nav ul.toc ul { margin-left: 12px; display: block; max-height: 0; overflow: hidden; border-left: 1px solid rgba(0, 0, 0, 0.2); -webkit-transition: max-height .3s ease-in-out; -moz-transition: max-height .3s ease-in-out; -ms-transition: max-height .3s ease-in-out; -o-transition: max-height .3s ease-in-out; transition: max-height .3s ease-in-out; } nav ul.toc li.active > ul { max-height: 999999px; } .nav > li > a { display: block; position: relative; border-bottom: 1px solid #ddd; padding: 13px 30px 14px 12px; color: #555; text-decoration: none; border-right: 1px solid transparent; } /* this selector necessary to override Bootstrap styling */ .nav > li > a:hover { background-color: rgba(0, 0, 0, 0.2); text-decoration: none; color: #00f; } nav li.active > a { border-right: 1px solid rgba(0, 0, 0, 0.3); font-weight: bold; } nav li > a.expander { position: absolute; top: 0; right: 0; color: rgba(0, 0, 0, 0.2); border: 0 none; padding: 13px 12px; z-index: 10; } nav ul.toc li.expanded > a.expander { color: rgba(0, 0, 0, 0.5); } nav ul.toc li > a.expander:hover { color: rgba(255, 255, 255, 0.75); } @media (max-width: 874px) { nav { box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.2); pointer-events: none; left: -568px; } } /* search styling ------------------------------------------------------ */ .search-interface { position: absolute; top: 0; right: -420px; overflow: auto; width: 290px; height: 100%; z-index: 10; opacity: 0; background-color: #f5f3ea; box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.1); -webkit-transition: right .3s ease-in-out, opacity .1s ease-in-out .2s; -moz-transition: right .3s ease-in-out, opacity .1s ease-in-out .2s; -ms-transition: right .3s ease-in-out, opacity .1s ease-in-out .2s; -o-transition: right .3s ease-in-out, opacity .1s ease-in-out .2s; transition: right .3s ease-in-out, opacity .1s ease-in-out .2s; } .search-interface.open { right: 0px; opacity: 1; -webkit-transition: right .3s ease-in-out, opacity .1s ease-in-out; -moz-transition: right .3s ease-in-out, opacity .1s ease-in-out; -ms-transition: right .3s ease-in-out, opacity .1s ease-in-out; -o-transition: right .3s ease-in-out, opacity .1s ease-in-out; transition: right .3s ease-in-out, opacity .1s ease-in-out; } .search-interface .input, .search-interface .count, .search-interface .results { padding: 12px; } .search-interface input { box-sizing: border-box; font-size: 14px; color: #444; height: 30px; width: 100%; border-radius: 16px; border: 1px solid #bcbab1; padding: 0 11px; } .search-interface button.clear { position: absolute; top: 17px; right: 17px; width: 18px; height: 18px; padding: 0; border: 0; background-color: transparent; overflow: hidden; color: #999; font-size: 15px; } .search-interface button.clear:hover { color: #000; } .search-interface .results { font-size: 13px; line-height: 17px; } .search-interface .results ul, .search-interface .results li { margin: 0; padding: 0; list-style: none; } .search-interface .results a { display: block; position: relative; border-top: 1px solid #ddd; padding: 14px 12px 13px 12px; color: #555; text-decoration: none; } .search-interface .results li:last-child a { border-bottom: 1px solid #ddd; padding: 14px 12px 14px 12px; } .search-interface .results a:hover { text-decoration: none; color: #00f; } .search-results li:last-child { border-bottom: 1px solid #bcbab1; } .search-highlight { float: right; } .search-highlight a { color: #666; } .search-highlight a:hover { text-decoration: none; color: #ff6; } /* content styling ----------------------------------------------------- */ span.command { color: #000; font-family: Monaco,Menlo,Consolas,"Courier New", monospace; font-size: 14px; } span.command strong { font-weight: normal; } code { color: #000; background-color: inherit; padding: 0; font-size: 14px; border-radius: 0; border: 0 none; white-space: normal; } code.uri a { color: #00f; text-decoration: none; } .highlight { background-color: #ff0; } h1 { color: #000; } h2 { color: #111; } h3 { color: #222; } /* table styling ------------------------------------------------------- */ div.informaltable { margin-bottom: 10px; } div.informaltable table { border: 0 none; border-collapse: collapse; font-size: 14px; } div.informaltable table thead tr:last-child th { border-bottom: 1px solid #000; } div.informaltable table th { background-color: #ddd; vertical-align: top; padding: 10px 10px; } div.informaltable table td { vertical-align: top; padding: 10px 10px; } div.informaltable table tbody tr td { border-bottom: 1px solid #bcbab1; } div.informaltable table tbody tr:last-child td { border-bottom: 2px solid #000; } div.informaltable table tbody tr:nth-child(even) td { background-color: #eee; } div.informaltable table p:last-child { margin: 0; } /* TOC styling --------------------------------------------------------- */ dl.toc span.preface, dl.toc span.chapter, dl.toc span.appendix { display: block; border-bottom: 1px solid #bcbab1; margin-top: 12px; } dl.toc dl { margin: 0; } dl.toc dd { margin-left: 18px; } dl.toc a { color: #000; text-decoration: none; } dl.toc a:hover { color: #ddd; } /* admonition styling -------------------------------------------------- */ div.admonition { position: relative; margin: 0 0 10px 104px; border-left: 6px solid #ccc; border-right: 1px dotted #ccc; padding: 9px 12px; background-color: #eee; color: #000; z-index: 10; } div.admonition h1, div.admonition h2, div.admonition h3 { position: absolute; top: 0; left: 0; border-top: 1px solid #ccc; border-left: 1px solid #ccc; border-bottom: 1px solid #ccc; border-top-left-radius: 12px; border-bottom-left-radius: 12px; margin: 0 0 0 -104px; font-size: 10px; text-transform: uppercase; letter-spacing: 1px; width: 100px; padding: 6px 12px 6px 8px; box-shadow: 0 3px 4px -2px #333; z-index: 0; } div.admonition p:last-child { margin-bottom: 0; } /* warning */ div.admonition.warning { border-color: #f00; background-color: #fee; } div.admonition.warning h1, div.admonition.warning h1, div.admonition.warning h3 { color: #f00; border-color: #f00; } /* caution */ div.admonition.caution { border-color: #f79319; background-color: #fdeedc; } div.admonition.caution h1, div.admonition.caution h1, div.admonition.caution h3 { color: #f79319; border-color: #f79319; } /* important */ div.admonition.important { border-color: #408; background-color: #e3d9ed; } div.admonition.important h1, div.admonition.important h1, div.admonition.important h3 { color: #408; border-color: #408; } /* note */ div.admonition.note { border-color: #068; background-color: #d9e8ed; } div.admonition.note h1, div.admonition.note h1, div.admonition.note h3 { color: #068; border-color: #068; } /* tip */ div.admonition.tip { border-color: #00f; background-color: #eef; } div.admonition.tip h1, div.admonition.tip h1, div.admonition.tip h3 { color: #00f; border-color: #00f; } /* media queries ------------------------------------------------------- */ @media (max-width: 768px) { div.admonition { margin: 30px 0 10px 0; border: 0 none; border-top: 6px solid #ccc; border-bottom: 1px dotted #ccc; } div.admonition h1, div.admonition h2, div.admonition h3 { border-bottom: 0 none; border-right: 1px solid #ccc; border-bottom-left-radius: 0; border-top-right-radius: 12px; margin: -30px 0 0 0; width: auto; padding-right: 8px; box-shadow: 0 0 0 0; } }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 13895 | Paul Allen | Copying using p4convert-docbook | ||
//guest/perforce_software/doc_build/main/perforce/assets/webhelp/css/perforce.css | |||||
#6 | 12727 | eedwards |
Further presentation tweaks to the prototype HTML docs: - improve the presentation of the noscript warning when javascript is disabled. - customize the javascript disabled text to refer to 'documentation' instead of 'this site' - remove some stray styles and cruft that interfered with the intended presentation |
||
#5 | 12726 | eedwards |
Tweaks to the TOC presentation in prototype HTML for docs: - Animated open/close of TOC section - Reflect open/close state in TOC section expansion button - Made section nesting more visually apparent |
||
#4 | 12725 | eedwards |
Fixes for prototype HTML presentation: - don't attempt to highlight search terms when there are none - adjust inline-block styling in the header so that the text-overflow property takes effect as expected - use smaller font sizes for headings for narrower browsers, and apply transitions to heading font sizes - unroll transition styles to include all browser-specific transition styles. |
||
#3 | 12724 | eedwards |
Tweak prototype HTML's CSS to prevent a problem where the body content's left margin could be off-screen on initial page load for narrow browsers. |
||
#2 | 12721 | eedwards |
Tweaks to the prototype HTML presentation for docs: - use CSS classes rather than hard-coded values in javascript to implement sidebar open/close - made the search sidebar disappear when not open, not just to the right where it can be seen in wide browsers - made the TOC sidebar disappear when the search sidebar appears (at narrow browser widths), and vice-versa. |
||
#1 | 12720 | eedwards |
Apply better organization for DocBook transformation assets. In the future, other output target assets will appear as peers of webhelp, within the assets directory. |
||
//guest/perforce_software/doc_build/main/perforce/webhelp_assets/css/perforce.css | |||||
#4 | 12719 | eedwards |
Minor updates to prototype HTML presentation: - make ScrollSpy work, so that the current section of the documentation is highlighted in the sidebar TOC. - add expander buttons to the TOC so that users can manually explore the TOC. - remove the now-unused SIDR code. - remove some cruft. |
||
#3 | 12718 | eedwards |
WebHelp transformation improvements: - consolidate the Java indexer's output files into a single file to reduce HTTP requests, and tidy up the search assets the indexer created - move the search interface and results into their own pane on the right side of the display - make search incremental as users type - replace existing navigation links with a TOC sidebar that is displayed when the browser is wide enough, or use a footer with prev/next links when the browser is too narrow. In the narrow presentation, the TOC sidebar can be toggled open. - Various improvements to colours, formatting, at various browser sizes. |
||
#2 | 12717 | eedwards |
Initial prototype of new HTML generation intended to exist on the Perforce public web site. The updates features a more responsive design, removal of frames, styling improvements. More work needs to be done to ensure robust presentation across various devices, and further design tweaks may be required once various stakeholders get a chance to have a look. Future infrastructure work will need to be done: - incorporate PDF generation - some organizational tweaks to make additional output targets easy to add - HTML validation assets need to be added/incorporated |
||
#1 | 12716 | eedwards |
Initial checkin of infrastructure to process DocBook XML into WebHelp format. The purpose of this change is to lay the groundwork that will allow all published Perforce documentation to be converted to HTML (and eventually PDF and other formats) in a consistent manner, independent of tools, and eventually allow for automated documentation builds. The latest versions of DocBook (1.78.1), Saxon (6.5.5), Xalan-J (2.7.1), and XSLTHL (2.1.0) are included, as well as generic customization capability and per-guide customizations. More work needs to be done to the customization layers to fully support their use from an XML authoring tool, such as oXygen, which will appear in a future change. Note: This change only includes configuration to build WebHelp for the P4SAG. Further work is required before the infrastructure can be applied to other guides. WARNING: For anyone using oXygen to produce WebHelp, there is a known incompatibility: <imagedata> tags in oXygen are verified for file existence, and the HTML is subsequently patched to resolve to the output directory. The non-oXygen WebHelp generation does not include the patch operation, so images are broken. The <imagedata> can be updated to indicate the relative path in the output directory, but then the oXygen transformation will fail. This will be fixed in a future change. |