βŒˆβŒ‹ βŽ‡ branch:  freshcode


Check-in [cd58099048]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Introduced "summary" field on /submit form. Currently .semi-visible because it's not displayed yet anywhere, and existing project entries need update first.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: cd5809904846573902b00400187d946268720642
User & Date: mario 2015-04-20 22:57:24
Context
2015-04-20
23:00
Separate 501-Not-Implemented for unknown request methods. Copy "image" URL as literal field, but use "image" link from urls{} dict only with valid file "extensions". Use 495-Cert-Error for SSL authorization (status code from nginx). Use HTTP_USER_AGENT now generally as `submitter_openid` placeholder. check-in: 82a553d62c user: mario tags: trunk
22:57
Introduced "summary" field on /submit form. Currently .semi-visible because it's not displayed yet anywhere, and existing project entries need update first. check-in: cd58099048 user: mario tags: trunk
22:56
Broke up main RewriteRule for readability and constraining subpage input. check-in: baa05022e2 user: mario tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to freshcode.css.

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
 * api: css
 * type: stylesheet
 * title: freshcode.club layout+style
 * description: Simulates the late freecode.com layout and looks; well mostly.
 * version: 0.7.9
 *
 * Centered two-pane layout. The #main section is usually 33% of the screen width,
 * while the #sidebar floats at the right. They're repositioned only using padding:
 * to the outer html,body{}.
 *
 */






|







1
2
3
4
5
6
7
8
9
10
11
12
13
/**
 * api: css
 * type: stylesheet
 * title: freshcode.club layout+style
 * description: Simulates the late freecode.com layout and looks; well mostly.
 * version: 0.8.0
 *
 * Centered two-pane layout. The #main section is usually 33% of the screen width,
 * while the #sidebar floats at the right. They're repositioned only using padding:
 * to the outer html,body{}.
 *
 */

53
54
55
56
57
58
59






60
61
62
63
64
65
66
kbd { box-shadow: 0 0 3px 2px #dfd; }

table {}
tr, th, td {
   align: left;
   vertical-align: top;
}







/* presentational shortcuts */
.grey { color: grey; }
.black { color: black; }
.green { color: green; }
.blue { color: blue; }
.red { color: red; }







>
>
>
>
>
>







53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
kbd { box-shadow: 0 0 3px 2px #dfd; }

table {}
tr, th, td {
   align: left;
   vertical-align: top;
}
.semi-visible {
   opacity: 0.4;
}
.semi-visible:hover {
   opacity: 1.0;
}

/* presentational shortcuts */
.grey { color: grey; }
.black { color: black; }
.green { color: green; }
.blue { color: blue; }
.red { color: red; }
307
308
309
310
311
312
313



314
315
316
317
318
319
320
#main h2.no-margin, #main h3.no-margin, #main h4.no-margin {
    margin-top: 0;
}
#main label, #sidebar label {
    display: block;
    margin: 10pt 0;
    font-weight: 700;



}
#main label input, #sidebar label input, #main label textarea {
    display: block;
    font-weight: 400;
}
#main label input[type=radio] {
    display: inline;







>
>
>







313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
#main h2.no-margin, #main h3.no-margin, #main h4.no-margin {
    margin-top: 0;
}
#main label, #sidebar label {
    display: block;
    margin: 10pt 0;
    font-weight: 700;
}
#main table label {
    margin: 3pt 0;
}
#main label input, #sidebar label input, #main label textarea {
    display: block;
    font-weight: 400;
}
#main label input[type=radio] {
    display: inline;
833
834
835
836
837
838
839

    padding-top: 15pt;
    padding-bottom: 15pt;
    color: #fff;
    height: 50pt;
}
#bottom a { color: #fc9; }









>
842
843
844
845
846
847
848
849
    padding-top: 15pt;
    padding-bottom: 15pt;
    color: #fff;
    height: 50pt;
}
#bottom a { color: #fc9; }

[5~

Changes to page_submit.php.

16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 */



// Form field names
$form_fields = array(
    "name", "title", "homepage", "description", "license", "tags", "image",
    "version", "state", "scope", "changes", "download", "urls",
    "autoupdate_module", "autoupdate_url", "autoupdate_regex",
    "submitter", "lock",
);


// Get project ID from request
$name = $_REQUEST->proj_name->length…3…33["name"];







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 */



// Form field names
$form_fields = array(
    "name", "title", "homepage", "description", "license", "tags", "image",
    "version", "state", "scope", "changes", "download", "urls", "summary",
    "autoupdate_module", "autoupdate_url", "autoupdate_regex",
    "submitter", "lock",
);


// Get project ID from request
$name = $_REQUEST->proj_name->length…3…33["name"];

Changes to template/submit_form.php.

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 * Also prints out a trivial diversion form for crawlbots.
 *
 */


// inline placeholders
if (!strlen(trim($data["urls"]))) {
    $data["urls"] = "wiki = \r\ngithub = \r\nrelease-notes = \r\n";
}

// editors note
$editor_note = !empty($data["editor_note"]) ? "<var class=editor-note>$data[editor_note]</var>" : "";

// lock field from OpenID and/or password
$lock_default = $_SESSION["openid"];







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 * Also prints out a trivial diversion form for crawlbots.
 *
 */


// inline placeholders
if (!strlen(trim($data["urls"]))) {
    $data["urls"] = "SourceForge = \r\nGitHub = \r\nForum-Manual = \r\n";
}

// editors note
$editor_note = !empty($data["editor_note"]) ? "<var class=editor-note>$data[editor_note]</var>" : "";

// lock field from OpenID and/or password
$lock_default = $_SESSION["openid"];
60
61
62
63
64
65
66

67
68
69
70
71






72
73
74
75
76
77
78
               Project ID
               <input name=name size=20 placeholder=projectname value="$data[name]"
                      maxlength=33 required pattern="^\w[-_\w]+\w(\.\w{1,7})?$">
               <small>A short moniker which becomes your http://freshcode.club/projects/<var>name</var>.<br>
               <small>May contain letters, numbers, hyphen or underscore.</small></small>
           </label>


           <label>
               Title
               <input name=title size=50 placeholder="Awesome Software" value="$data[title]"
                      maxlength=100 required>
           </label>







           <label>
               Homepage
               <input name=homepage size=50 type=url placeholder="http://project.example.org/" value="$data[homepage]"
                      maxlength=250>
           </label>








>
|

|

|
>
>
>
>
>
>







60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
               Project ID
               <input name=name size=20 placeholder=projectname value="$data[name]"
                      maxlength=33 required pattern="^\w[-_\w]+\w(\.\w{1,7})?$">
               <small>A short moniker which becomes your http://freshcode.club/projects/<var>name</var>.<br>
               <small>May contain letters, numbers, hyphen or underscore.</small></small>
           </label>

           <table border=0 cellpadding=0 cellspacing=0><tr>
           <td width=35%><label>
               Title
               <input name=title size=20 placeholder="Awesome Software" value="$data[title]"
                      maxlength=100 required>
           </label></td>
           <td width=65%><label class=semi-visible>
               <span class=semi-visible>Summary</span>
               <input name=summary size=44 placeholder="brief description or project slogan" value="$data[summary]"
                      maxlength=160>
           </label></td>
           </tr></table>

           <label>
               Homepage
               <input name=homepage size=50 type=url placeholder="http://project.example.org/" value="$data[homepage]"
                      maxlength=250>
           </label>

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
184
185
186
187
188
189
190
191
192
193
194
195
               <small>Indicate the significance and primary scope of this release.</small>
           </label>

           <label>
               Changes
               <textarea cols=60 rows=8 name=changes maxlength=2000>$data[changes]</textarea>
               <small>Summarize the changes in this release. Documentation additions are as
               crucial as new features or fixed issues.</small>
           </label>

           <label>
               Download URL
               <input name=download size=50 type=url placeholder="http://project.example.org/" value="$data[download]" maxlength=250>
               <small>In particular for the download link one could apply the
               <a class="action version-placeholder"><b><kbd>\$version</kbd></b> placeholder</a>.</small>
           </label>

           <label>
               Other URLs
               <textarea cols=60 rows=5 name=urls maxlength=2000>$data[urls]</textarea>
               <small>An ini-style list of URLs like <code>src = http://foo, deb = http://bar</code>.
               Use customized label tags, common link names include src / rpm / deb / txz / dvcs / release-notes / forum, etc.
               Either may contain a <a class="action version-placeholder">\$version placeholder</a>
               again.</small>
           </label>
        </p>


        <h3>Automatic Release Tracking</h3>
        <p>
           <em>You can skip this section.</em>
           But future release submissions can be automated, with  a
           normalized Changelog, or <var>releases.json</var>, or an extraction ruleset
           <a href=/drchangelog class="action drchangelog"><img src=img/drchangelog.png width=37 height=37 align=right style="padding:5pt"></a>
           for your version control system or project homepage.
           See the <a href="http://fossil.include-once.org/freshcode/wiki/Autoupdate">Autoupdate Howto</a>
           or <a href=/drchangelog class="action drchangelog">Dr.Changelog</a>.
        </p>
        <p>
           <label>
               Via
               <select name=autoupdate_module>
                   {$select("none,release.json,changelog,regex,github,sourceforge,launchpad", $data["autoupdate_module"])}
               </select>
           </label>

           <label>
               Autoupdate URL
               <input name=autoupdate_url type=url size=50 value="$data[autoupdate_url]" placeholder="https://github.com/user/repo/Changelog.md" maxlength=250>
               <small>This is the primary source for <b>releases.json</b> or a <b>Changelog</b>.
               It's also initially used for <b>Regex</b> rules in absence of override URLs. GitHub and SourceForge
               links are usually autodiscovered.</small>
           </label>

           <label>
               Rules <span style="font-weight: 100">(URLs, Regex, XPath, jQuery)</span>







|













|
|











|
|












|







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
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
               <small>Indicate the significance and primary scope of this release.</small>
           </label>

           <label>
               Changes
               <textarea cols=60 rows=8 name=changes maxlength=2000>$data[changes]</textarea>
               <small>Summarize the changes in this release. Documentation additions are as
               interesting as new features or fixed issues.</small>
           </label>

           <label>
               Download URL
               <input name=download size=50 type=url placeholder="http://project.example.org/" value="$data[download]" maxlength=250>
               <small>In particular for the download link one could apply the
               <a class="action version-placeholder"><b><kbd>\$version</kbd></b> placeholder</a>.</small>
           </label>

           <label>
               Other URLs
               <textarea cols=60 rows=5 name=urls maxlength=2000>$data[urls]</textarea>
               <small>An ini-style list of URLs like <code>src = http://foo, deb = http://bar</code>.
               Use customized label tags, common link names are e.g. RPM / DEB / Manual / Release-Notes / Forum, etc.
               Either URL may contain a <a class="action version-placeholder">\$version placeholder</a>
               again.</small>
           </label>
        </p>


        <h3>Automatic Release Tracking</h3>
        <p>
           <em>You can skip this section.</em>
           But future release submissions can be automated, with  a
           normalized Changelog, or <var>releases.json</var>, or an extraction ruleset
           <a href=/drchangelog class="action drchangelog"><img src=img/drchangelog.png width=37 height=37 align=right style="padding:5pt"></a>
           for your VCS or project homepage.
           See also the <a href="http://fossil.include-once.org/freshcode/wiki/Autoupdate">Autoupdate Howto</a>
           or <a href=/drchangelog class="action drchangelog">Dr.Changelog</a>.
        </p>
        <p>
           <label>
               Via
               <select name=autoupdate_module>
                   {$select("none,release.json,changelog,regex,github,sourceforge,launchpad", $data["autoupdate_module"])}
               </select>
           </label>

           <label>
               Autoupdate URL
               <input name=autoupdate_url type=url size=50 value="$data[autoupdate_url]" placeholder="https://github.com/user/repo/NEWS.md" maxlength=250>
               <small>This is the primary source for <b>releases.json</b> or a <b>Changelog</b>.
               It's also initially used for <b>Regex</b> rules in absence of override URLs. GitHub and SourceForge
               links are usually autodiscovered.</small>
           </label>

           <label>
               Rules <span style="font-weight: 100">(URLs, Regex, XPath, jQuery)</span>
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222


223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
        <h3>Publish</h3>
        <p>
           Please proofread again before saving.

           <label>
               Submitter
               <input name=submitter size=50 placeholder="Your Name,  optional@example.com" value="$data[submitter]" maxlength=100>
               <small>List your name or nick name here. Optinally list a gravatar email address, or user@github / username@sourceforge / name@launchpad reference to add an icon.</small>
           </label>

           <label>
               Lock Entry
               <input name=lock size=50 placeholder="$lock_default" value="$data[lock]" maxlength=250>
               <small>Normally all projects can be edited by everyone (WikiStyle).
               If you commit to yours, you can however <a class="action lock-entry"><b>lock</b> this project</a>
               against one or multiple OpenID handles (comma-separated, take care to use exact URLs;
               or <a href="/login">log in</a> beforehand).
               Or add a password hash for using the submit API.


           </label>
        </p>
        <p>
           <b>Terms and Conditions</b>
           <label class=inline><input type=checkbox name="req[os]" value=1 required> It's open source / libre / Free software or pertains BSD/Linux.</label>
           <label class=inline><input type=checkbox name="req[cc]" value=1 required> Your project description/text is shareable under the <a href="http://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a> license / fair use.</label>
        </p>
        <p>
           <input type=submit value="Submit Project/Release">
           {$_(csrf())}
        </p>
        <p style=margin-bottom:75pt>
           Thanks for your time and effort!
        </p>

    </form>    
HTML;


?>







|





|
|
<
|
|
>
>








|











212
213
214
215
216
217
218
219
220
221
222
223
224
225
226

227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
        <h3>Publish</h3>
        <p>
           Please proofread again before saving.

           <label>
               Submitter
               <input name=submitter size=50 placeholder="Your Name,  optional@example.com" value="$data[submitter]" maxlength=100>
               <small>List your name or nick name here. Optionally add a gravatar email address, or user@github / username@sourceforge / name@launchpad reference to add an icon.</small>
           </label>

           <label>
               Lock Entry
               <input name=lock size=50 placeholder="$lock_default" value="$data[lock]" maxlength=250>
               <small>
               <a class="action lock-entry"><b>β†’Lock</b> this project</a>

               if you're <a href="/login">logged in</a>. This can be a comma-separated list of
               password hashes, or OpenID handles. Note that you don't need an account. Passwords
               and lock fields exist on a per-project basis. (Hashes are also used by freecode-submit API.)
               </small>
           </label>
        </p>
        <p>
           <b>Terms and Conditions</b>
           <label class=inline><input type=checkbox name="req[os]" value=1 required> It's open source / libre / Free software or pertains BSD/Linux.</label>
           <label class=inline><input type=checkbox name="req[cc]" value=1 required> Your project description/text is shareable under the <a href="http://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a> license / fair use.</label>
        </p>
        <p>
           <input type=submit value="Submit Project/Release" style="padding: 5pt 15pt;">
           {$_(csrf())}
        </p>
        <p style=margin-bottom:75pt>
           Thanks for your time and effort!
        </p>

    </form>    
HTML;


?>