Check-in [686e87487e]
Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Comment: | Updated stylesheet to use table-layout for #main/#sidebar split. Padding still needs work. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
686e87487eb9e83a2cbea0f8b0b79247 |
User & Date: | mario 2015-03-24 18:23:10 |
2015-03-24
| ||
18:24 | Mini template includes for new table #mainsplit and .container-width check-in: 783542f508 user: mario tags: trunk | |
18:23 | Updated stylesheet to use table-layout for #main/#sidebar split. Padding still needs work. check-in: 686e87487e user: mario tags: trunk | |
2015-03-11
| ||
22:41 | Autoupdate support for LaunchPad project URLs. (Uses `release_notes` field from Launchpad devel API.) check-in: 8057ad9fad user: mario tags: trunk | |
Changes to config.php.
1 2 3 4 5 | <?php /** * api: freshcode * title: Freshcode.club config * description: initialization code | | > > > > | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | <?php /** * api: freshcode * title: Freshcode.club config * description: initialization code * version: 0.8.0 * plugin-register: include_once("$FN"); * * * Automatic and manual dependencies. * Base configuration. * */ // base chdir(__DIR__); // autoloader include("./shared.phar"); #include("./lib/curl.php"); #error_reporting(E_ALL); // input filter define("INPUT_QUIET", 1); define("INPUT_DIRECT", "raw"); include_once("lib/input.php"); include_once("tags.php"); include_once("release.php"); // database include_once("lib/db.php"); db(new PDO("sqlite:freshcode.db")); db()->in_clause = 0; db()->setAttribute(PDO::ATTR_TIMEOUT, "15"); // auth+session define("LOGIN_REQUIRED", 0); define("CAPTCHA_REQUIRED", 0); define("HTTP_HOST", $_SERVER->id["HTTP_HOST"]); include_once("lib/deferred_openid_session.php"); // utility functions include_once("aux.php"); define("FRESHCODE_USER_AGENT", "freshcode/0.7.9.3 (Linux x86-64; HHVM/3.6.x) projects-autoupdate/0.7.9 (img,news,regex,xpath) github-poll/0.7 launchpad-poll/0.3 +http://freshcode.club/"); curl::$defaults["useragent"] = FRESHCODE_USER_AGENT; ini_set("user_agent", FRESHCODE_USER_AGENT); // List of administrative OpenID handles $moderator_ids = array(); include("config.local.php"); // stats define("IS_ADMIN", in_array($_SESSION["openid"], $moderator_ids)); ?> |
Changes to cron.daily/autoupdate.php.
︙ | ︙ | |||
23 24 25 26 27 28 29 | // run in cron context chdir(dirname(__DIR__)); include("config.php"); // go $_SESSION["submitter"] = ""; $run = new Autoupdate(); | | > | 23 24 25 26 27 28 29 30 31 32 33 34 35 | // run in cron context chdir(dirname(__DIR__)); include("config.php"); // go $_SESSION["submitter"] = ""; $run = new Autoupdate(); $run->debug = 3; $run->msg_html = 0; $run->all(); #print_r($run->test("regex", "linux")); #print_r($run->test("regex", "php")); #print_r($run->test("github", "pgweb")); |
Changes to freshcode.css.
1 2 3 4 5 | /** * api: css * type: stylesheet * title: freshcode.club layout+style * description: Simulates the late freecode.com layout and looks; well mostly. | | | 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{}. * */ |
︙ | ︙ | |||
79 80 81 82 83 84 85 86 87 88 89 90 91 92 | padding: 1px 4px; margin-left: 5pt; } @keyframes blink { to { color: #119; } } /** * Page header, info bar and logo box * */ #topbar { background: #555599; | > > > > > > > > > > > > > > > > > > | | < < < < < < < < < < | < | 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | padding: 1px 4px; margin-left: 5pt; } @keyframes blink { to { color: #119; } } /** * Layout (main table, container size) * */ .container-width { max-width: 1100px; width: 80%; margin-left: auto; margin-right: auto; } section#main.container-width { padding-left: 30pt; } #mainsplit, #mainsplit tr, #mainsplit td { border: 0; } /** * Page header, info bar and logo box * */ #topbar { background: #555599; padding: 3pt; color: #fff; } #topbar a { color: #fec; } #topbar a:hover { color: #fc7; } #logo { padding: 7pt; height: 95pt; border-bottom: 2.5pt solid #bbb; background: #dddedf; background: linear-gradient(to bottom, #e5e6e9 0%, #dddedf 100%); } #logo img { padding: 0px 10px; } #logo #stats { display: inline-block; font-size: 70%; float: right; width: 150px; color: #999; margin: 0; padding-top: 5pt; } #logo #stats li { list-style: none; text-align: right; } #logo #stats li var { box-shadow: 0 0 3px 2px #f3f3f3; background: #e7e7e7; } /** * Main action link box, hovering halfway over header box. * */ #tools { padding: 3pt 5pt 2pt 5pt; border: 1.75pt solid #bbb; border-top: 1pt solid #ccc; border-radius: 5pt; background: #e5e7e9; background: linear-gradient(to bottom, #ffffff, #fdfefe, #f5f7f9, #eaecee, #e5e7e9, #e1e3e5, #d0d1d2); position: relative; |
︙ | ︙ | |||
213 214 215 216 217 218 219 | } /** * Sidebar floats right to #main, usually just a fifth of its width. * */ #sidebar { | < < | 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 | } /** * Sidebar floats right to #main, usually just a fifth of its width. * */ #sidebar { width: 15%; min-width: 175pt; min-height: 400pt; background: #fefdfd; } #sidebar.absolute-float { position: absolute; margin: 25pt 150pt 25pt 68%; |
︙ | ︙ | |||
277 278 279 280 281 282 283 | } /** * Main content area (project listings, frontpage, articles, etc.) * */ #main { | < < > > | 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 | } /** * Main content area (project listings, frontpage, articles, etc.) * */ #main { min-height: 700pt; min-width: 620px; padding-right: 30pt; } #main h2, #main h3, #main h4 { background: #ddd; background: linear-gradient(#f3f3f3,#f0f0f0,#eee,#e7e7e7,#d3d3d3); border-radius: 2pt; padding: 3.5pt 5pt 1.5pt 5pt; |
︙ | ︙ | |||
366 367 368 369 370 371 372 373 374 375 | /** * Project listing on frontpage and /projects/xyz * */ #main .project { margin: 5pt 0 20pt 0; } #main .project h3 { white-space: nowrap; | > | | 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 | /** * Project listing on frontpage and /projects/xyz * */ #main .project { margin: 5pt 0 20pt 0; min-width: 620px; } #main .project h3 { white-space: nowrap; margin: 1pt 2pt 3pt 1pt; } #main .project h3 a { color: #000; display: inline-block; max-width: 400pt; overflow: hidden; text-overflow: ellipsis; |
︙ | ︙ | |||
774 775 776 777 778 779 780 | * Page footer * */ #spotlight { margin-top: 50pt; border-top: 3pt solid #B7C0BB; background: #E7E7D0; | < | 780 781 782 783 784 785 786 787 788 789 790 791 792 793 | * Page footer * */ #spotlight { margin-top: 50pt; border-top: 3pt solid #B7C0BB; background: #E7E7D0; color: #111; height: 120pt; } #spotlight a { display: inline-block; float: left; margin: 10pt; |
︙ | ︙ | |||
812 813 814 815 816 817 818 | #spotlight a small { color: #444; } #bottom { border-top: 3pt solid #5F677F; background: #444477; | | > | 817 818 819 820 821 822 823 824 825 826 827 828 829 830 | #spotlight a small { color: #444; } #bottom { border-top: 3pt solid #5F677F; background: #444477; padding-top: 15pt; padding-bottom: 15pt; color: #fff; height: 50pt; } #bottom a { color: #fc9; } |
Changes to handler_api.php.
︙ | ︙ | |||
467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 | function auth_filter($data) { if (!$this->is_authorized($data)) { unset( $data["lock"], $data["submitter_openid"], $data["submitter"], $data["submitter_image"], $data["hidden"], $data["deleted"], $data["flag"], $data["social_links"], $data["autoupdate_regex"], $data["autoupdate_url"], $data["t_changed"] ); } return $data; } | > > | 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 | function auth_filter($data) { if (!$this->is_authorized($data)) { unset( $data["lock"], $data["submitter_openid"], $data["submitter"], $data["submitter_image"], $data["hidden"], $data["deleted"], $data["flag"], $data["social_links"], $data["autoupdate_module"], $data["autoupdate_delay"], $data["autoupdate_regex"], $data["autoupdate_url"], $data["editor_note"], $data["t_changed"] ); } return $data; } |
︙ | ︙ |
Changes to index.php.
1 2 3 4 5 6 | <?php /** * api: php * type: main * title: Freshcode.club * description: FLOSS software release tracking website | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php /** * api: php * type: main * title: Freshcode.club * description: FLOSS software release tracking website * version: 0.8.0 * author: mario * license: AGPL * * Implements a freshmeat/freecode-like directory for open source * release publishing / tracking. * */ |
︙ | ︙ |
Changes to page_drchangelog.php.
1 2 3 4 5 | <?php /** * type: page * title: Dr. Changelog * description: Tool to experiment and try out Autoupdate modules | | | < < < < < < < < < < < < < < < < < < | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <?php /** * type: page * title: Dr. Changelog * description: Tool to experiment and try out Autoupdate modules * version: 0.2 * license: AfferoGPL * * Reuses fields from /submit form to start a live check run with * actual Autoupdate modules. * */ $header_add = "<meta name=robots content=noindex>"; include("template/header.php"); include("template/table_main.php"); #-- Output formatted results class TestProject extends ArrayObject { function update($result) { #-- output formatted print "<dl>\n"; foreach ($result as $key=>$value) { print "<dt><b>$key</b></dt>\n<dd>" . input::html($value) . "</dd>\n"; } print "</dl>"; } } // run test if ($_REQUEST->has("test")) { #-- prepare $run = new Autoupdate(); $run->debug = $_REQUEST->boolean["debug"] ? 3 : 0; $project = new TestProject(array( "name" => "testproject", "version" => "0.0.0.0.0.0.1", "t_published" => 0, "homepage" => "", "download" => "", "urls" => "", |
︙ | ︙ | |||
218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 | <li>The <b>changelog</b> parser allows a <code>header = /^Name ([\d.]+)/m</code> customization rule, btw.</li> <li>Generic rules like <code>interval = 3 days</code> and <code>exclude = 0.9.9, 1.2.3</code> work for all retrieval methods.</li> </small> </label> </p> <p> <input type=submit name=test value=Test-Run> </p> </form> FORM; } include("template/bottom.php"); ?> | > > > > > > > > > > > > > > > > > > > > > | 200 201 202 203 204 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 | <li>The <b>changelog</b> parser allows a <code>header = /^Name ([\d.]+)/m</code> customization rule, btw.</li> <li>Generic rules like <code>interval = 3 days</code> and <code>exclude = 0.9.9, 1.2.3</code> work for all retrieval methods.</li> </small> </label> </p> <p> <input type=submit name=test value=Test-Run> <label style="font-weight: normal"><input style="display: inline" type=checkbox name=debug value=yes> with some debug notices</label> </p> </form> FORM; } ?> <td id=sidebar> <section> <h5>Know your audience</h5> <small> <p> Whatever source you choose for release announcements, try to keep them <b>user-friendly</b>. </p> <p> End users aren't fond of commit logs. While "merged pull request XY" might be technically highly relevant (for e.g. libraries), it's gibberish to most everyone else.</p> <p> So be careful with the <em>GitHub</em> module in particular. If you're not using githubs /release tool, a commit log may be used still. Only basic filtering is applied. <em>π§ And it's sort of broken at the momement :/</em></p> <p> Likewise write <em>Changelogs</em> as <b>summaries</b>. (They're better and more correctly called NEWS or RELEASE-NOTES files actually.)</p> </small> </section> </td> <?php include("template/table_end.php"); include("template/bottom.php"); ?> |
Changes to page_error.php.
︙ | ︙ | |||
9 10 11 12 13 14 15 | * Drop-in page for generic error message * or anything pushed in via `$error`. * */ include("template/header.php"); | | > | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | * Drop-in page for generic error message * or anything pushed in via `$error`. * */ include("template/header.php"); include("template/table_main.php"); print "<h2>Error</h2>\n"; print isset($error) ? "<p>$error</p>" : "<p>Sorry. Some problem occured (entry not accessible etc.)</p>"; include("template/table_end.php"); include("template/bottom.php"); ?> |
Changes to page_feed.php.
︙ | ︙ | |||
178 179 180 181 182 183 184 | } #-- else print an info page else { include("template/header.php"); ?> | | | 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 | } #-- else print an info page else { include("template/header.php"); ?> <section id=main class=container-width> <h4>Feeds</h4> <p> You can get any projects <b>releases.json</b> feed using <ul> <li> <tt>http://freshcode.club/feed/<em>projectname</em><var style="color: #ccc">.json</var></tt> </ul> Alternatively as RSS/Atom feed |
︙ | ︙ | |||
202 203 204 205 206 207 208 209 210 211 212 | <li> <tt>http://freshcode.club/projects.rss</tt> or <tt>/?format=rss</tt> <li> <tt>http://freshcode.club/projects.atom</tt> or <tt>/?format=atom</tt> </ul> </p> <p> JSON feeds are using a post-1.0 MIME type of <em>json/vnd.freshcode.club</em> for now. </p> <?php include("template/bottom.php"); } | > | 202 203 204 205 206 207 208 209 210 211 212 213 | <li> <tt>http://freshcode.club/projects.rss</tt> or <tt>/?format=rss</tt> <li> <tt>http://freshcode.club/projects.atom</tt> or <tt>/?format=atom</tt> </ul> </p> <p> JSON feeds are using a post-1.0 MIME type of <em>json/vnd.freshcode.club</em> for now. </p> </section> <?php include("template/bottom.php"); } |
Changes to page_flag.php.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php /** * type: page * title: Flagging * description: Allows users to flag project listings for moderator attention. * * A submission here will both increase the `release`.`flag` counter, * as well as leave a documentation entry in the `flags` table. * */ include("template/header.php"); | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php /** * type: page * title: Flagging * description: Allows users to flag project listings for moderator attention. * * A submission here will both increase the `release`.`flag` counter, * as well as leave a documentation entry in the `flags` table. * */ include("template/header.php"); ?> <section id=main class=container-width> <?php $name = $_REQUEST->proj_name["name"]; // submit if ($_REQUEST->has("reason", "note", "name")) { |
︙ | ︙ | |||
98 99 100 101 102 103 104 | <p>This is also a reasonable contact mechanism if you want to report any system / site bug. For reclaiming a disjunct OpenID logon alternatively write a mail (info#freshcode:club).</p> HTML; } | | | 98 99 100 101 102 103 104 105 106 107 108 | <p>This is also a reasonable contact mechanism if you want to report any system / site bug. For reclaiming a disjunct OpenID logon alternatively write a mail (info#freshcode:club).</p> HTML; } ?></section><?php include("template/bottom.php"); ?> |
Changes to page_forum.php.
1 2 3 4 5 6 7 8 9 10 11 12 | <?php /** * api: freshcode * type: main * title: meta/forum * description: Simple threaded discussion / documentation forum. * version: 0.2 * * Distinct layout from main site and harbours its own dispatcher. * Editing/post features. CSS is melted in, as there's no subpaging. * */ | < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php /** * api: freshcode * type: main * title: meta/forum * description: Simple threaded discussion / documentation forum. * version: 0.2 * * Distinct layout from main site and harbours its own dispatcher. * Editing/post features. CSS is melted in, as there's no subpaging. * */ #-- custom config include_once("./shared.phar"); // autoloader define("INPUT_QUIET", 1) and include_once("lib/input.php"); // input filter define("HTTP_HOST", $_SERVER->id["HTTP_HOST"]); include_once("lib/deferred_openid_session.php"); // auth+session |
︙ | ︙ |
Changes to page_githubreleases.php.
︙ | ︙ | |||
63 64 65 66 67 68 69 | padding: 0.5pt 1pt; border: dotted 1px #eef; background: #f1f3ff; color: #aae; } </style> | | | 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | padding: 0.5pt 1pt; border: dotted 1px #eef; background: #f1f3ff; color: #aae; } </style> <section id=main style="width:75%" class=container-width> <h2>GitHub Releases</h2> <article class=github-releases> <table id=githubreleases> <colgroup> <col width="5%"> <col width="25%"> |
︙ | ︙ |
Changes to page_index.php.
︙ | ︙ | |||
19 20 21 22 23 24 25 | * β RSS/Atom links for update feed comprised of all projects. * */ $header_add = "<link rel=alternate type=application/rss+xml href=/projects.rss>\n<link rel=alternate type=application/atom+xml href=/projects.atom>"; include("template/header.php"); | | < | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | * β RSS/Atom links for update feed comprised of all projects. * */ $header_add = "<link rel=alternate type=application/rss+xml href=/projects.rss>\n<link rel=alternate type=application/atom+xml href=/projects.atom>"; include("template/header.php"); include("template/table_main.php"); // query projects $page_no = $_GET->int->rangeβ¦1β¦100["n"]; $releases = db(" SELECT * FROM release_versions |
︙ | ︙ | |||
45 46 47 48 49 50 51 52 53 54 | include("template/index_project.php"); } // Add pseudo pagination for further pages. pagination($page_no, "n"); include("template/bottom.php"); ?> | > > | 44 45 46 47 48 49 50 51 52 53 54 55 | include("template/index_project.php"); } // Add pseudo pagination for further pages. pagination($page_no, "n"); include("template/index_sidebar.php"); include("template/table_end.php"); include("template/bottom.php"); ?> |
Changes to page_launchpadreleases.php.
︙ | ︙ | |||
11 12 13 14 15 16 17 | */ #-- switch database db(new PDO("sqlite:launchpad.db")); include("template/header.php"); ?> | | | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | */ #-- switch database db(new PDO("sqlite:launchpad.db")); include("template/header.php"); ?> <section id=main style="width:75%" class=container-width> <h2><img src="https://help.launchpad.net/moin_static192/lp20/img/logo.png" width=28 height=31> Launchpad Releases</h2> <article class=launchpad-releases> <style> /** table **/ .launchpad-releases { width: 100%; |
︙ | ︙ |
Changes to page_links.php.
︙ | ︙ | |||
24 25 26 27 28 29 30 | ?> <style> #sidebar dl, #sidebar dl dd, #sidebar ul { margin: 0; padding: 0; } #sidebar dl dt { font-weight: 700; } </style> | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | < < < < < | < < < < < < < < < < < < < < < < < < < < | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | ?> <style> #sidebar dl, #sidebar dl dd, #sidebar ul { margin: 0; padding: 0; } #sidebar dl dt { font-weight: 700; } </style> <table id=mainsplit class=container-width style="height: 3000pt; min-width: 700px;"> <tr><td id=main> <h4>Other FLOSS/Linux software directories</h4> <p> <?php $links = [ |
︙ | ︙ | |||
324 325 326 327 328 329 330 | <img src="/img/links/$entry[1]" width=200 height=150 align=bottom border=0> <b>$entry[2]</b> </a> $entry[3] </div>\n HTML; } | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 199 200 201 202 203 204 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 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 | <img src="/img/links/$entry[1]" width=200 height=150 align=bottom border=0> <b>$entry[2]</b> </a> $entry[3] </div>\n HTML; } ?> </td> <td id=sidebar class="community-web" style="padding-top: 30pt;"> <section> <b>News sites / Blogs</b> <li> <a href="http://slashdot.org/">slashdot</a> <li> <a href="http://lxer.com/">LXer</a> <li> <a href="http://lwn.net/">LWN</a> <li> <a href="http://osdir.com/">OSdir</a> <li> <a href="http://www.linuxtoday.com/">LinuxToday</a> <li> <a href="http://www.phoronix.com/">Phoronix</a> <li> <a href="http://www.osnews.com/">OSnews</a> <li> <a href="http://www.omgubuntu.co.uk/">OMG!Ubuntu</a> <li> <a href="http://www.webupd8.org/">Web Upd8</a> <li> <a href="http://ostatic.com/">OStatic</a> </section> <section> <b>Boards / Forums</b> <li> <a href="http://www.reddit.com/r/opensource/">/r/opensource</a> <li> <a href="http://www.linuxquestions.org/">LinuxQuestions</a> <li> <a href="http://www.linuxforums.org/forum/">LinuxBoards</a> </section> <section> <b>Support / Q&A</b> <li> <a onclick="return confirm('If you want to find something specific, don\'t be vague. Instead of asking for \'best\' software, provide a constrained set of feature requirements.');" href="http://softwarerecs.stackexchange.com/">Software Recommendations</a> <li> <a onclick="return confirm('AskUbuntu is for technical questions, not a Google substitute for finding software.');" href="http://askubuntu.com/">askubuntu.com</a> </section> <section> <b>Wikis / Howtos</b> <li> <a href="https://wiki.archlinux.org/">Arch Linux Wiki</a> <li> <a href="https://wiki.ubuntu.com/">Ubuntu Wiki</a> <li> <a href="http://www.howtoforge.com/">HowtoForge</a> </section> <section> <b>Chat channels</b> <li> <a href="http://freenode.net/">Freenode</a><br> and its <a href="https://webchat.freenode.net/">web chat</a> </section> <p> They are more software forges and hosters though: </p> <section> <ul> <li> <a href="https://gitorious.org/">Gitorious</a> <li> <a href="https://bitbucket.org/">Bitbucket</a> <li> <a href="http://www.tigris.org/">Tigris</a> <li> <a href="https://alioth.debian.org/">Alioth</a> <li> <a href="http://gna.org/">GNA!</a> <li> <a href="https://freepository.com/home/">FreePository</a> <li> <a href="http://ourproject.org/">OurProject</a> <li> <a href="https://www.assembla.com/search/home">Assembla</a> <li> <a href="https://code.google.com/">Google Code</a> <li> <a href="http://www.codeplex.com/">CodePlex</a> <li> <a href="http://www.cloudforge.com/">CloudForge</a> <li> <a href="https://www.bountysource.com/projects">(BountySource)</a> <li> <a href="http://pgfoundry.org/">PgFoundry</a> <li> <a href="https://www.nuget.org/packages">nuGet (.NET)</a> <li> <a href="http://www.antepedia.com/">Antepedia (search)</a> <li> <a href="http://www.krugle.org/projects/">Krugle (meta list)</a> </ul> <small>See also <a href="http://alternativeto.net/software/sourceforge/">SF alternatives</a>.</small> </section> <p> Programming-language specific developer hubs and package repositories often allow uncovering new software as well. </p> <section> <dl> <dt>Python</dt> <dd> <li> <a href="https://pypi.python.org/" title="Python Package Index">PyPI</a> </dd> <dt>Perl</dt> <dd> <li> <a href="http://www.cpan.org/" title="Comprehensive Perl Archive Network">CPAN</a> <li> <a href="http://perltricks.com/">Perl Tricks</a> </dd> <dt>PHP</dt> <dd> <li> <a href="https://packagist.org/explore/" title="Composers Package Repo">Packagegist</a> <li> <a href="http://phptrends.com/">PHP Trends</a> </dd> <dt>Ruby</dt> <dd> <li> <a href="https://rubygems.org/gems">Gems</a> </dd> <dt>Vala</dt> <dd> <li> <a href="https://bbs.archlinux.org/viewtopic.php?id=173563" title="Arch Linux Bulletin Board about Vala projects">Arch BBS</a> </dd> <dt>Javascript</dt> <dd> <li> <a href="http://plugins.jquery.com/">jQuery Plugins</a> </dd> </dl> </section> <section> <b>Windows software</b> <li> <a href="https://help.ubuntu.com/community/ListOfOpenSourcePrograms">LOOP</a> <li> <a href="http://eos.osbf.eu/start/">EOS directory</a> <li> <a href="http://opensourcewindows.org/">OpenSource Windows</a> <li> <a href="http://osswin.sourceforge.net/">OSSWin</a> </section> <section> <b>More games</b> <li> <a href="http://osgameclones.com/">OS Game Clones</a> <li> <a href="http://freegamer.blogspot.de/">FreeGamer</a> </section> <section> <b>Code snippets</b> <li> <a href="http://snipplr.com/">snipplr</a> </section> <?php if (in_array("de", $langs)): ?> <p>Local websites</p> <section> <b>.de</b> <li> <a href="http://www.pro-linux.de/">Pro Linux</a> + <a href="http://www.pro-linux.de/cgi-bin/DBApp/check.cgi">DBApp</a> <li> <a href="http://www.linux-magazin.de/">Linux Magazin</a> <li> <a href="http://www.heise.de/open/">Heise Open</a> + <a href="http://www.heise.de/download/top-downloads-50000505000/?f=5s">SW-Cat</a> <li> <a href="http://www.linux-community.de/">Linux Community</a> <li> <a href="http://wiki.ubuntuusers.de/Software">Ubuntu Users: Software</a> <li> <a href="http://ubuntunews.de/">Ubuntu News</a> </section> <?php endif; ?> <?php include("template/table_end.php"); include("template/bottom.php"); ?> |
Changes to page_login.php.
︙ | ︙ | |||
28 29 30 31 32 33 34 | exit(include("page_error.php")); } } // else include("template/header.php"); | | | 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | exit(include("page_error.php")); } } // else include("template/header.php"); ?> <section id=main class=container-width><div style="width: 70%"><?php // display login form if (empty($_SESSION["openid"])) { print<<<HTML <h3>Login</h3> |
︙ | ︙ | |||
79 80 81 82 83 84 85 86 87 88 | print isset($login_hint) ? "<p>$login_hint</p>" : "<p>You have already associated an OpenID name (<var>$_SESSION[openid]</var>). <form action='/login/logout' method=POST><button>Logout</button></form></p>"; } include("template/bottom.php"); ?> | > | 79 80 81 82 83 84 85 86 87 88 89 | print isset($login_hint) ? "<p>$login_hint</p>" : "<p>You have already associated an OpenID name (<var>$_SESSION[openid]</var>). <form action='/login/logout' method=POST><button>Logout</button></form></p>"; } ?></div></section><?php include("template/bottom.php"); ?> |
Changes to page_names.php.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php /** * type: page * title: Browse Projects by Name * description: Alphabetical project lists * version: 0.3 * * Minimal column styling, just project base names used, * */ include("template/header.php"); | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php /** * type: page * title: Browse Projects by Name * description: Alphabetical project lists * version: 0.3 * * Minimal column styling, just project base names used, * */ include("template/header.php"); ?><section id=main class=container-width> </article> <aside class=pagination-links style="margin-bottom: 20pt;"> <a href="names/AE">A-E</a> <a href="names/FH">F-H</a> <a href="names/IN">I-N</a> <a href="names/OQ">O-Q</a> <a href="names/RT">R-T</a> |
︙ | ︙ | |||
42 43 44 45 46 47 48 49 50 51 52 | // Show foreach ($names as $proj) { $proj = array_map("input::_html", $proj); print "<a href=/projects/$proj[name] title=\"$proj[description]β¦\"><img src='img/screenshot/$proj[name].jpeg' width=100 height=75 align=top> $proj[name]</a> <br> "; } include("template/bottom.php"); ?> | > | 42 43 44 45 46 47 48 49 50 51 52 53 | // Show foreach ($names as $proj) { $proj = array_map("input::_html", $proj); print "<a href=/projects/$proj[name] title=\"$proj[description]β¦\"><img src='img/screenshot/$proj[name].jpeg' width=100 height=75 align=top> $proj[name]</a> <br> "; } ?></section><?php include("template/bottom.php"); ?> |
Changes to page_projects.php.
1 2 3 4 5 6 | <?php /** * type: page * title: Project detail view * description: List project entry with all URLs and releases * license: AGPL | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php /** * type: page * title: Project detail view * description: List project entry with all URLs and releases * license: AGPL * version 0.6 * * Shows: * β General project description * β Sidebar with project links, submitter, management links, social share count * β Release history and changelogs * Adds: * β RSS/Atom links to header template |
︙ | ︙ | |||
40 41 42 43 44 45 46 | . "<link rel=alternate type=json/vnd.freshcode.club href=/feed/$name.json>"; $title = input::html($entry["title"]) . " - freshcode.club"; include("template/header.php"); // Show sidebar + long project description prepare_output($entry); | > | > > > | 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | . "<link rel=alternate type=json/vnd.freshcode.club href=/feed/$name.json>"; $title = input::html($entry["title"]) . " - freshcode.club"; include("template/header.php"); // Show sidebar + long project description prepare_output($entry); $sb_entry = $entry; include("template/table_main.php"); include("template/projects_description.php"); #-- Display all other released versions ?> <article class=release-list> <h4>Recent Releases</h4> <?php do { include("template/projects_release_entry.php"); } while ($entry = $releases->fetch() and prepare_output($entry) + 1); ?> </article> <?php // html tail $entry = $sb_entry; include("template/projects_sidebar.php"); include("template/table_end.php"); include("template/bottom.php"); } // No entry found else { exit($error = "Project name doesn't exist." and include("page_error.php")); } ?> |
Changes to page_rc.php.
︙ | ︙ | |||
9 10 11 12 13 14 15 | * (To detect sneak spam while we're not requiring OpenID logons.) * */ // page header include("template/header.php"); | | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | * (To detect sneak spam while we're not requiring OpenID logons.) * */ // page header include("template/header.php"); ?><section id=main class=container-width><?php /** * Fields to inspect/diff. * Using different sets depending on publicness. * */ |
︙ | ︙ |
Changes to page_search.php.
︙ | ︙ | |||
15 16 17 18 19 20 21 | * */ $header_add = '<meta robots=noindex,nofollow>'; include("template/header.php"); | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | * */ $header_add = '<meta robots=noindex,nofollow>'; include("template/header.php"); ?> <section id=main class=container-width><div style="width: 70%;"> <?php // Display form if ($_GET->no("tag,tags,trove,user,license,q")) { include("template/search_form.php"); |
︙ | ︙ | |||
82 83 84 85 86 87 88 89 90 91 | include("template/search_entry.php"); } } } include("template/bottom.php"); ?> | > | 82 83 84 85 86 87 88 89 90 91 92 | include("template/search_entry.php"); } } } ?></div></section><?php include("template/bottom.php"); ?> |
Changes to page_submit.php.
1 2 3 4 5 6 | <?php /** * api: freshcode * type: page * title: Submit/edit project or release * description: Single-page edit form for projects and their releases | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php /** * api: freshcode * type: page * title: Submit/edit project or release * description: Single-page edit form for projects and their releases * version: 0.7.2 * category: form * license: AGPLv3 * * Prepares the submission form. On POST checks a few constraints, * but UPDATE itself is handled by release::update() and ::store(). * * Tags: http://aehlke.github.io/tag-it/ |
︙ | ︙ | |||
52 53 54 55 56 57 58 | exit(include("page_error.php")); } // Start page output include("template/header.php"); | | | 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | exit(include("page_error.php")); } // Start page output include("template/header.php"); include("template/table_main.php"); /** * Fetch form input on submit. * Check some constraints. * Then insert into database. * |
︙ | ︙ | |||
108 109 110 111 112 113 114 115 116 117 118 119 120 | #-- Output input form with current $data else { $data = array_map("input::html", $data); include("template/submit_form.php"); } include("template/bottom.php"); ?> | > > | 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | #-- Output input form with current $data else { $data = array_map("input::html", $data); include("template/submit_form.php"); } include("template/submit_sidebar.php"); include("template/table_end.php"); include("template/bottom.php"); ?> |
Changes to page_tags.php.
︙ | ︙ | |||
13 14 15 16 17 18 19 | * should delegate this to a proper /search feature. * */ $header_add = '<meta robots=noindex,nofollow>'; include("template/header.php"); | | < < < < < < < < | | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | * should delegate this to a proper /search feature. * */ $header_add = '<meta robots=noindex,nofollow>'; include("template/header.php"); include("template/table_main.php"); #-- print tag cloud ?> <section style="min-height: 1750pt"> <h2>Tags</h2> <p id=tag_cloud> <?php // Query `tags` table to generate a cloud $tags = db("SELECT COUNT(name) AS cnt, tag FROM tags GROUP BY tag")->fetchAll(); $count = array_column($tags, "cnt"); |
︙ | ︙ | |||
63 64 65 66 67 68 69 | // output print " <a href=\"/search?tag=" . urlencode($t["tag"]) . "\" class=tag style=\"font-size: $q%;\"> $t[tag]</a> "; } } | | > > > > > > > > > > > > | 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | // output print " <a href=\"/search?tag=" . urlencode($t["tag"]) . "\" class=tag style=\"font-size: $q%;\"> $t[tag]</a> "; } } ?></p></section><?php #-- sidebar with Trove list ?> <td id=sidebar> <div id=trove_tags class=pick-tags> <?php print tags::trove_select(tags::$tree); ?> </div> </td><?php include("template/table_end.php"); include("template/bottom.php"); ?> |
Changes to template/bottom.php.
|
| | > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <footer id=spotlight> <div class=container-width style="min-width:720pt"> <?php include("template/spotlight.htm"); ?> </div> </footer> <footer id=bottom> <div class=container-width> <a href="http://fossil.include-once.org/freshcode/wiki/About">About</a> | <a href="http://fossil.include-once.org/freshcode/wiki/Privacy">Privacy / Policy</a> | <a href="http://fossil.include-once.org/freshcode/wiki/Contribute">Contribute</a> | <small> <a href="/login"><i>optional</i> Login</a> </small> | <span style="color:#9AF"><b>π¦</b> twitter</span> <a href="https://twitter.com/versiontracker">@versiontracker</a> <small style=float:right> <span style="display:inline-block; vertical-align:middle;">bookmark<br>freshcode</span> on <?php print social_share_links("freshcode", "http://freshcode.club/"); ?> </small> <br> <small style="font-size:90%"> This is a non-commercial project. <br> All project entries are licensed as CC-BY-SA. There will be <a href="/feed">/atom+json feeds</a>.. </small> </div> </footer> </body> </html> |
Changes to template/header.php.
1 2 3 4 5 6 | <?php /** * api: freshcode * type: template * title: HTML page header * description: Starts <html> and <head>, outputs top bar / menus etc. | | | | > | > > > | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | <?php /** * api: freshcode * type: template * title: HTML page header * description: Starts <html> and <head>, outputs top bar / menus etc. * version: 0.8.0 * * Optionally injects a `$header_add` list, or allows to override the * page $title. * */ // Content license header("X-Content-License: Creative Commons (CC-BY-SA); version=0.8.0; spdx=CC-BY-3.0; source=https://creativecommons.org/licenses/by-sa/3.0/"); ?> <!DOCTYPE html> <html> <head> <title><?= isset($title) ? $title : "freshcode.club" ?></title> <meta name=version content=0.7.6> <meta charset=UTF-8> <link rel=stylesheet href="/freshcode.css?0.7.9"> <link rel="shortcut icon" href="/img/changes.png"> <base href="/index"> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <!--[if lt IE 9]><script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js"></script><![endif]--> <script src="/gimmicks.js?2"></script> <?php if (isset($header_add)) { print $header_add . "\n"; } ?> </head> <body> <nav id=topbar> <div class=container-width> Open source software release tracking. <?= is_int(strpos(HTTP_HOST, ".")) ? '<small style="color:#cd9" class=version>[0.8.0 beta]</small>' : '<b style="color:#c54">[local dev]</b>'; ?> <span style=float:right> <a href="//freshmeat.club/">freshmeat.club</a> | <a href="//freecode.club/">freecode.club</a> | <b><a href="//freshcode.club/">freshcode.club</a></b> </span> </div> </nav> <footer id=logo> <div class=container-width> <a href="/" title="freshcode.club"><img src="img/logo.png" width=200 height=110 alt="fresh(code)" title="ππ«ππ¬π‘(code) - a freshmeat/freecode continuation" border=0></a> <ul id=stats><?=file_get_contents("template/stats.htm");?><?=IS_ADMIN ? file_get_contents("template/stats.admin.htm") : "";?></ul> </div> </footer> <nav id=tools class=container-width> <a href="/">Home</a> <a href="/submit" class=submit>Submit</a> <span class=submenu> <a href="/names">Browse</a> <a href="/tags" style="left:-5pt;">Projects by Tag</a> </span> <form id=search_q style="display:inline" action=search><input name=q size=5><a href="/search">Search</a></form> <a rel="vcs-fossil" href="//fossil.include-once.org/freshcode/wiki/About">About</a> <a href="/links">Links</a> <a href="/meta" class=meta>Meta</a> </nav> |
Changes to template/index_sidebar.php.
︙ | ︙ | |||
9 10 11 12 13 14 15 | * by cron.daily/newsfeeeds. Thus does not need * further processing here. * */ ?> | > | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | * by cron.daily/newsfeeeds. Thus does not need * further processing here. * */ ?> <!--aside--> <td id=sidebar> <section class="article-links untrimmed"> <h5>Linux.com Software</h5> <?php readfile("template/feed.linuxcom.htm"); ?> </section> <section class="article-links untrimmed feed-fossies"> |
︙ | ︙ | |||
67 68 69 70 71 72 73 | </section> <section class="article-links"> <a href="/launchpad-releases"><h5>LaunchPad news β</h5></a> <?php readfile("template/feed.launchpad.htm"); ?> </section> | | | | 68 69 70 71 72 73 74 75 76 | </section> <section class="article-links"> <a href="/launchpad-releases"><h5>LaunchPad news β</h5></a> <?php readfile("template/feed.launchpad.htm"); ?> </section> </td> <!--/aside--> |
Changes to template/projects_sidebar.php.
︙ | ︙ | |||
13 14 15 16 17 18 19 | * β Social sharing links and β star count. * */ $_ = "trim"; print <<<SIDEBAR | | | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | * β Social sharing links and β star count. * */ $_ = "trim"; print <<<SIDEBAR <td id=sidebar> <section> <h5>Links</h5> <a href="$entry[homepage]"><img src="img/home.png" width=11 height=11> Project Website</a><br> <a href="$entry[download]"><img src="img/disk.png" width=11 height=11> Download</a><br> {$_(proj_links($entry["urls"], $entry))} </section> |
︙ | ︙ | |||
37 38 39 40 41 42 43 | or <a href="/flag/$entry[name]">flagging</a> this entry for moderator attention. </section> <section style="font-size:90%"> <h5>Share project {$_(social_share_count($entry["social_links"]))}</h5> {$_(social_share_links($entry["name"], $entry["homepage"]))} </section> | | < | 37 38 39 40 41 42 43 44 45 46 47 48 49 | or <a href="/flag/$entry[name]">flagging</a> this entry for moderator attention. </section> <section style="font-size:90%"> <h5>Share project {$_(social_share_count($entry["social_links"]))}</h5> {$_(social_share_links($entry["name"], $entry["homepage"]))} </section> </td> SIDEBAR; ?> |
Changes to template/submit_form.php.
︙ | ︙ | |||
19 20 21 22 23 24 25 | // inline placeholders if (!strlen(trim($data["urls"]))) { $data["urls"] = "wiki = \r\ngithub = \r\nrelease-notes = \r\n"; } // editors note | | | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | // 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>" : ""; // varexpressions $select = "form_select_options"; $_ = "trim"; // output print <<<HTML |
︙ | ︙ | |||
48 49 50 51 52 53 54 | <h3>General Project Info</h3> {$editor_note} <p> <label> Project ID <input name=name size=20 placeholder=projectname value="$data[name]" | | | 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | <h3>General Project Info</h3> {$editor_note} <p> <label> 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]" |
︙ | ︙ |
Changes to template/submit_sidebar.php.
1 2 3 4 5 6 7 8 9 10 | <?php /** * type: template * title: Project submit #sidebar * description: Generic advises for project submissions * * */ ?> | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php /** * type: template * title: Project submit #sidebar * description: Generic advises for project submissions * * */ ?> <td id=sidebar> <section> <h5>Submit project<br>and/or release</h5> <p> You can submit <em title="Free, Libre, and Open Source Software">FLOSS</em> or <em title="or Solaris/Darwin/Hurd">BSD/Linux</em> software here. It's not required that you're a developer of said project. |
︙ | ︙ | |||
29 30 31 32 33 34 35 | style='color:blue'>import</a> a project..</p>"; } ?> </section> <?php include("template/submit_import.php"); ?> | | < | 29 30 31 32 33 34 35 36 37 | style='color:blue'>import</a> a project..</p>"; } ?> </section> <?php include("template/submit_import.php"); ?> </td> |