1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
\r
2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
\r
4 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
\r
5 <title>YOURLS: Your Own URL Shortener Readme</title>
\r
6 <style type="text/css" media="screen">
\r
9 font-family: Verdana, Arial;
\r
12 background: #FFFFFF;
\r
18 margin: 10px 20px 0px 20px;
\r
20 border: 1px solid #8d8d8d;
\r
21 background-color: #f5f5f5;
\r
29 A, A:active, A:link, A:visited {
\r
31 text-decoration: none;
\r
35 text-decoration: underline;
\r
37 /* Place Holder Style */
\r
41 margin-right: auto;
\r
44 background-color: #fafafa;
\r
45 border: 1px solid #a2b6cb;
\r
51 font-family: Verdana, Arial;
\r
55 border-bottom: 1px solid #389aff;
\r
56 margin-bottom: 10px;
\r
59 font-family: Verdana, Arial;
\r
65 font-family: Verdana, Arial;
\r
72 font-family: Verdana, Arial;
\r
75 list-style-type: none;
\r
76 padding-bottom: 28px;
\r
77 border-bottom: 1px solid #a2b6cb;
\r
78 margin-bottom: 12px;
\r
84 background-color: #deedfb;
\r
85 margin: 2px 0px 0px 5px;
\r
86 border: 1px solid #a2b6cb;
\r
92 text-decoration: none;
\r
95 #Tabs LI.Tab A:hover {
\r
96 background-color: #bfe0fe;
\r
97 border-bottom: 1px solid #bfe0fe;
\r
100 #Tabs LI.SelectedTab {
\r
103 background-color: #fafafa;
\r
104 margin: 2px 0px 0px 5px;
\r
105 border-top: 1px solid #a2b6cb;
\r
106 border-right: 1px solid #a2b6cb;
\r
107 border-bottom: 1px solid #fafafa;
\r
108 border-left: 1px solid #a2b6cb;
\r
110 #Tabs LI.SelectedTab A {
\r
114 text-decoration: none;
\r
120 text-align: center;
\r
123 <script type="text/javascript">
\r
128 document.getElementById('IndexTab').className = 'SelectedTab';
\r
129 document.getElementById('ChangelogTab').className = 'Tab';
\r
130 document.getElementById('InstallTab').className = 'Tab';
\r
131 document.getElementById('ConfigTab').className = 'Tab';
\r
132 document.getElementById('FAQTab').className = 'Tab';
\r
134 document.getElementById('Index').style.display= 'block';
\r
135 document.getElementById('Changelog').style.display = 'none';
\r
136 document.getElementById('Install').style.display = 'none';
\r
137 document.getElementById('Config').style.display = 'none';
\r
138 document.getElementById('Faq').style.display = 'none';
\r
141 function changelog() {
\r
143 document.getElementById('IndexTab').className = 'Tab';
\r
144 document.getElementById('ChangelogTab').className = 'SelectedTab';
\r
145 document.getElementById('InstallTab').className = 'Tab';
\r
146 document.getElementById('ConfigTab').className = 'Tab';
\r
147 document.getElementById('FAQTab').className = 'Tab';
\r
149 document.getElementById('Index').style.display = 'none';
\r
150 document.getElementById('Changelog').style.display = 'block';
\r
151 document.getElementById('Install').style.display = 'none';
\r
152 document.getElementById('Config').style.display = 'none';
\r
153 document.getElementById('Faq').style.display = 'none';
\r
155 // Installation Page
\r
156 function install() {
\r
158 document.getElementById('IndexTab').className = 'Tab';
\r
159 document.getElementById('ChangelogTab').className = 'Tab';
\r
160 document.getElementById('InstallTab').className = 'SelectedTab';
\r
161 document.getElementById('ConfigTab').className = 'Tab';
\r
162 document.getElementById('FAQTab').className = 'Tab';
\r
164 document.getElementById('Index').style.display= 'none';
\r
165 document.getElementById('Changelog').style.display = 'none';
\r
166 document.getElementById('Install').style.display = 'block';
\r
167 document.getElementById('Config').style.display = 'none';
\r
168 document.getElementById('Faq').style.display = 'none';
\r
171 function config() {
\r
173 document.getElementById('IndexTab').className = 'Tab';
\r
174 document.getElementById('ChangelogTab').className = 'Tab';
\r
175 document.getElementById('InstallTab').className = 'Tab';
\r
176 document.getElementById('ConfigTab').className = 'SelectedTab';
\r
177 document.getElementById('FAQTab').className = 'Tab';
\r
179 document.getElementById('Index').style.display= 'none';
\r
180 document.getElementById('Changelog').style.display = 'none';
\r
181 document.getElementById('Install').style.display = 'none';
\r
182 document.getElementById('Config').style.display = 'block';
\r
183 document.getElementById('Faq').style.display = 'none';
\r
188 document.getElementById('IndexTab').className = 'Tab';
\r
189 document.getElementById('ChangelogTab').className = 'Tab';
\r
190 document.getElementById('InstallTab').className = 'Tab';
\r
191 document.getElementById('ConfigTab').className = 'Tab';
\r
192 document.getElementById('FAQTab').className = 'SelectedTab';
\r
194 document.getElementById('Index').style.display= 'none';
\r
195 document.getElementById('Changelog').style.display = 'none';
\r
196 document.getElementById('Install').style.display = 'none';
\r
197 document.getElementById('Config').style.display = 'none';
\r
198 document.getElementById('Faq').style.display = 'block';
\r
204 <div id="Container">
\r
206 <div id="Title">YOURLS: Your Own URL Shortener <span style="color: #aaaaaa;">Readme</span></div>
\r
210 <li id="FAQTab" class="Tab"><a href="#Usage" onclick="faq(); return false;" title="Usage Instructions">FAQ</a></li>
\r
211 <li id="ConfigTab" class="Tab"><a href="#Upgrade" onclick="config(); return false;" title="Upgrade Instructions">Configuration</a></li>
\r
212 <li id="InstallTab" class="Tab"><a href="#Installation" onclick="install(); return false;" title="Installation Instructions">Installation</a></li>
\r
213 <li id="ChangelogTab" class="Tab"><a href="#Changelog" onclick="changelog(); return false;" title="Changelog">Changelog</a></li>
\r
214 <li id="IndexTab" class="SelectedTab"><a href="#Index" onclick="index(); return false;" title="Index Instructions">Index</a></li>
\r
221 <div class="SubTitle">» Index</div>
\r
222 <div class="SubSubTitle">Plugin Information</div>
\r
224 <strong>Author:</strong><br />
\r
225 <strong>»</strong> Richard Ozh, Lester Chan
\r
228 <strong>Website:</strong><br /><strong>»</strong> <a href="http://planetozh.com/" title="http://planetozh.com/">http://planetozh.com/</a>, <a href="http://lesterchan.net/" title="http://lesterchan.net/">http://lesterchan.net/</a>
\r
231 <strong>Features:</strong><br />
\r
232 <strong>»</strong> YOURLS is a PHP script that will allow you to run your own URL shortener, a la TinyURL. You can make it private or public, and a WordPress plugin makes integration with your WordPress blog a snap.
\r
235 <strong>Download:</strong><br />
\r
236 <strong>»</strong> <a href="http://code.google.com/p/yourls/downloads/list" title="http://code.google.com/p/yourls/downloads/list">YOURLS 1.0.0 Beta 1</a><br />
\r
239 <strong>Demo:</strong><br /><strong>»</strong> <a href="http://yourls.org" title="http://yourls.org">yourls.org</a>, <a href="http://lc.sg" title="http://lc.sg">lc.sg</a>, <a href="http://ozh.in" title="http://ozh.in">ozh.in</a>
\r
242 <strong>Development:</strong><br />
\r
243 <strong>»</strong> <a href="http://code.google.com/p/yourls/" title="http://code.google.com/p/yourls/">http://code.google.com/p/yourls/</a>
\r
246 <strong>Bugs Reporting:</strong><br />
\r
247 <strong>»</strong> <a href="http://code.google.com/p/yourls/issues/list" title="http://code.google.com/p/yourls/issues/list">http://code.google.com/p/yourls/issues/list</a>
\r
250 <strong>Credits:</strong><br />
\r
251 <strong>»</strong> Blah Blah
\r
254 <strong>Note:</strong><br />
\r
255 <strong>»</strong> The <strong>Changelog</strong>, <strong>Installation</strong>, <strong>Upgrade</strong>, <strong>Usage</strong> Tab at the top of the page.
\r
260 <div id="Changelog" style="display: none;">
\r
261 <div class="SubTitle">Changelog</div>
\r
264 <strong>Version 1.0.0 (01-07-2009)</strong>
\r
266 <li>NEW: Initial Release</li>
\r
272 <!-- Installation Instructions -->
\r
273 <div id="Install" style="display: none;">
\r
274 <div class="SubTitle">» Installation Instructions</div>
\r
277 Unzip <strong>yourls1.0.0.zip</strong>
\r
280 Rename includes/config-sample.php to <strong>includes/config.php</strong>
\r
283 Open up <strong>includes/config.php</strong> and fill in the required settings
\r
286 Upload the unzipped files to your domain <strong>public_html</strong> or <strong>www</strong> folder
\r
289 Point your browser to <strong>http://yoursite.com/install.php</strong>
\r
294 <!-- Configuration Instructions -->
\r
295 <div id="Config" style="display: none;">
\r
296 <div class="SubTitle">» Configuration</div>
\r
297 <div class="SubSubTitle">In includes/config.php</div>
\r
300 <strong>YOURLS_DB_USER</strong>
\r
303 <strong>YOURLS_DB_PASS</strong>
\r
306 <strong>YOURLS_DB_NAME</strong>
\r
309 <strong>YOURLS_DB_HOST</strong>
\r
312 <strong>YOURLS_DB_TABLE_URL</strong>
\r
315 <strong>YOURLS_DB_TABLE_NEXTDEC</strong>
\r
318 <strong>YOURLS_SITE</strong>
\r
321 <strong>YOURLS_HOURS_OFFSET</strong>
\r
324 <strong>YOURLS_PRIVATE</strong>
\r
327 <strong>YOURLS_PRIVATE</strong>
\r
332 <!-- FAQ Instructions -->
\r
333 <div id="Faq" style="display: none;">
\r
334 <div class="SubTitle">» FAQ</div>
\r
335 <div class="SubSubTitle">Requirements</div>
\r
337 <li>At least PHP 4.3</li>
\r
338 <li>At least MYSQL 4.1</li>
\r
339 <li>PHP <a href="http://www.php.net/curl" title="http://www.php.net/curl">CURL extension</a> installed</li>
\r
340 <li>PHP <a href="http://www.php.net/bccomp" title="http://www.php.net/bccomp">BCCOMP extension</a> for handling large integers</li>
\r
342 <div class="SubSubTitle">Limitations</div>
\r
344 <li>Maximum length of custom keyword is <strong>12 characters</strong></li>
\r
345 <li><strong>4,738,381,338,321,617,846</strong> available URLs</li>
\r
347 <div class="SubSubTitle">Difference Between Base 36 And Vase 62 Encoding</div>
\r
349 <li>Base 36 encoding uses 0123456789abcdefghijklmnopqrstuvwxyz</li>
\r
350 <li>Base 62 encoding uses 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz</li>
\r
355 <p id="Copyright">YOURLS: Your Own URL Shortener<br />Copyright © 2009 YOURLS. All Rights Reserved.</p>
\r