├── .gitignore ├── README.md ├── fonts ├── people.eot ├── people.svg ├── people.ttf └── people.woff ├── images ├── autocomplete-shadow.png ├── baseline.svg └── bg-texture-00.svg ├── index.php ├── js ├── common.js ├── external │ └── mousetrap.min.js ├── html5shiv.js └── master.js ├── styles ├── defaults.css ├── doc.css ├── master.css ├── people.css ├── qa.css ├── snaps.css ├── svn.css ├── user-autocomplete.css └── wiki.css └── templates ├── footer.inc └── header.inc /.gitignore: -------------------------------------------------------------------------------- 1 | shared 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This repo contains CSS stylesheets and PHP code/templates that are shared 2 | across multiple .php.net websites to make code and layout reuse easier. 3 | 4 | In production (e.g. hostname ends with '.php.net') it will point to 5 | shared.php.net for all CSS+JS. It is also magically included via rsync 6 | so there is no submodule required. 7 | 8 | When running locally, you have to clone this repo and put it into your 9 | web root as 'shared'. 10 | 11 | To see the styles that are defined, you can run the standalone PHP server and 12 | access the test page: 13 | 14 | ```sh 15 | $ ln -s . shared 16 | $ php -S localhost:9000 17 | # view http://localhost:9000 18 | ``` 19 | 20 | If you are running a local version of one of the sites that uses 21 | web-shared, you can also just access `http://localhost:PORT/shared/` 22 | -------------------------------------------------------------------------------- /fonts/people.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/php/web-shared/6bf31bc98429079bc9876a57c16b807316e2e881/fonts/people.eot -------------------------------------------------------------------------------- /fonts/people.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by Fontastic.me 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /fonts/people.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/php/web-shared/6bf31bc98429079bc9876a57c16b807316e2e881/fonts/people.ttf -------------------------------------------------------------------------------- /fonts/people.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/php/web-shared/6bf31bc98429079bc9876a57c16b807316e2e881/fonts/people.woff -------------------------------------------------------------------------------- /images/autocomplete-shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/php/web-shared/6bf31bc98429079bc9876a57c16b807316e2e881/images/autocomplete-shadow.png -------------------------------------------------------------------------------- /images/baseline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/bg-texture-00.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | '//www.php.net', 'text' => 'Main website' ], 15 | [ 'href' => './', 'text' => 'Current' ], 16 | [ 'href' => '//example.com', 'text' => 'Example' ], 17 | ]; 18 | $HEAD_WIKI = ''; 19 | $HEAD_RAND = ''; 20 | if (in_array($requested_style, $available_styles)) { 21 | $SUBDOMAIN = "{$requested_style}(test)"; 22 | $CSS[] = "/styles/{$requested_style}.css"; 23 | } else { 24 | $SUBDOMAIN = "test"; 25 | $CSS = [ ]; 26 | } 27 | $SEARCH = [ 28 | 'method' => 'get', 29 | 'action' => '//php.net/search.php', 30 | 'placeholder' => 'Text to search', 31 | 'name' => 'pattern', 32 | 'hidden' => [], 33 | ]; 34 | $CURRENT_PAGE = 'Current'; 35 | 36 | $lipsum = << 52 | 53 |
54 |

This is the H1

55 | 56 |

57 | 58 |

This is an H2

59 | 60 |

61 | 62 |

This is an H3

63 | 64 |

Text with a superscript and a subscript. 65 | 66 |

This is an H4

67 | 68 |

This is a link to the PHP website. 69 | 70 |

This is an H5
71 | 72 |

73 | 74 |

This is an H6
75 | 76 |

77 | 78 |

Warning

79 | 80 |
81 | 82 |
83 | 84 |

Lists

85 | 86 |

Ordered List

87 | 88 |
    89 |
  1. 90 |
  2. 91 |
  3. 92 |
  4. 93 |
      94 |
    1. 95 |
    2. 96 |
    97 |
  5. 98 |
  6. 99 |
  7. 100 |
101 | 102 |

Unordered List

103 | 104 | 116 | 117 |

Definition List

118 | 119 |
120 |
Definition term 121 |
122 |
Another definition 123 |
124 |
125 | 126 |

Horizontal Rule

127 | 128 |
129 | 130 |

Code

131 | 132 |
133 | 134 |

Table

135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 |
Table caption
Column 1Column 2Column 3Column 4
Column 1Column 2Column 3Column 4
Column 1Column 2Column 3Column 4
Column 1Column 2Column 3Column 4
Column 1Column 2Column 3Column 4
Column 1Column 2Column 3Column 4
Table footer
184 | 185 |

More text

186 | 187 |

188 |

189 | 190 |
191 |

192 |

Styles

193 | 199 |

Another H2

200 |

201 |

202 | 203 | 360) { 105 | rotate = 0; 106 | } 107 | $("html").css("-webkit-transform", "rotate(" + rotate + "deg)"); 108 | $("html").css("-moz-transform", "rotate(" + rotate + "deg)"); 109 | $("html").css("-o-transform", "rotate(" + rotate + "deg)"); 110 | $("html").css("-ms-transform", "rotate(" + rotate + "deg)"); 111 | $("html").css("transform", "rotate(" + rotate + "deg)"); 112 | }); 113 | var scale = 1; 114 | Mousetrap.bind("m i r r o r enter", function(e) { 115 | scale *= -1; 116 | $("html").css("-webkit-transform", "scaleX(" + scale + ")"); 117 | $("html").css("-moz-transform", "scaleX(" + scale + ")"); 118 | $("html").css("-o-transform", "scaleX(" + scale + ")"); 119 | $("html").css("-ms-transform", "scaleX(" + scale + ")"); 120 | $("html").css("transform", "scaleX(" + scale + ")"); 121 | }); 122 | Mousetrap.bind("l o g o enter", function(e) { 123 | var time = new Date().getTime(); 124 | $(".home img").attr("src", "//php.net/images/logo.php?refresh&time=" + time); 125 | $(window).scrollTop(0); 126 | }); 127 | 128 | 129 | // vim: set ts=4 sw=4 et: 130 | -------------------------------------------------------------------------------- /js/external/mousetrap.min.js: -------------------------------------------------------------------------------- 1 | /* mousetrap v1.4.6 craig.is/killing/mice */ 2 | (function(J,r,f){function s(a,b,d){a.addEventListener?a.addEventListener(b,d,!1):a.attachEvent("on"+b,d)}function A(a){if("keypress"==a.type){var b=String.fromCharCode(a.which);a.shiftKey||(b=b.toLowerCase());return b}return h[a.which]?h[a.which]:B[a.which]?B[a.which]:String.fromCharCode(a.which).toLowerCase()}function t(a){a=a||{};var b=!1,d;for(d in n)a[d]?b=!0:n[d]=0;b||(u=!1)}function C(a,b,d,c,e,v){var g,k,f=[],h=d.type;if(!l[a])return[];"keyup"==h&&w(a)&&(b=[a]);for(g=0;gg||h.hasOwnProperty(g)&&(p[h[g]]=g)}e=p[d]?"keydown":"keypress"}"keypress"==e&&f.length&&(e="keydown");return{key:c,modifiers:f,action:e}}function F(a,b,d,c,e){q[a+":"+d]=b;a=a.replace(/\s+/g," ");var f=a.split(" ");1":".","?":"/","|":"\\"},G={option:"alt",command:"meta","return":"enter",escape:"esc",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"},p,l={},q={},n={},D,z=!1,I=!1,u=!1;for(f=1;20>f;++f)h[111+f]="f"+f;for(f=0;9>=f;++f)h[f+96]=f;s(r,"keypress",y);s(r,"keydown",y);s(r,"keyup",y);var m={bind:function(a,b,d){a=a instanceof Array?a:[a];for(var c=0;carticle,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}"; 6 | c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| 7 | "undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f); 8 | if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d