<?php $excerptlimit = isset($excerptlimit) ? $excerptlimit : 'words'; ?> <?php $excerptlenght = isset($excerptlenght) ? $excerptlenght : 40; ?> <description> <![CDATA[ <?php echo $item->{$textfield}()->kirbytext()->excerpt($excerptlenght, $excerptlimit); ?> <?php if ($excerptimage == true) { ?> <?php echo figure($item->images()->first(), array('lazyload' => false)); ?> <?php } ?> ]]> </description> <?php } else { ?> <description> <![CDATA[ <?php echo $item->{$textfield}()->kirbytext(); ?> ]]>
?> <description><![CDATA[ <?php echo $item->{$textfield}()->kirbytext(); ?> <?php $images = isset($images) ? $images : false; ?> <?php if ($images == true) { ?> <?php foreach ($item->images() as $image) { ?> <?php echo figure($image, array('cropratio' => '2/3', 'lazyload' => false)); ?> <?php } ?> <?php } ?> ]]></description> <?php } ?> </item> <?php } ?>
<?php figure("fig.tiles_spritesheet", "tiles_spritesheet.png", "<kbd>tiles_spritesheet.png</kbd> spritesheet", 35, "", ""); ?> <p>In addition, I've created a couple backdrops for my game. You can't interact with the backdrops, but I think it is more interesting to have a backdrop than just have a solid color. The backdrop was created using the <a href="http://sourceforge.net/projects/tiled/">Tiled Map Editor</a> and Kenney's <a href="http://opengameart.org/content/platformer-art-buildings">Buildings</a> sprite sheet. <?php figure("fig.background", "background_01.png", "<kbd>background_01.png</kbd>", 35, "", ""); ?> <p>This is the backdrop for Level 2. <?php figure("fig.background", "background_02.png", "<kbd>background_02.png</kbd>", 35, "", ""); ?> <p>Finally, the code! This code builds off the other platformer examples on this website. I've divided the code up into several files to make it easier to navigate. <p>The first file just has some variables that represent constant values. It makes the code easier to read by using variables like <kbd>WHITE</kbd> and allows me to change the screen size easily. <?php include_python_file('', "constants.py", True); ?>
function connectors($doc, $media, $id) { $large = $_SESSION['prma']['content']; $largb = round($large * 0.5); $xt = strtolower(strrchr($doc, '.')); $xfp = strrpos($doc, ':'); $xf = substr($doc, $xfp); $pdoc = substr($doc, 0, $xfp); if (rstr(70)) { $xf = retape_conn($xf, $id); } //list($d,$p)=good_param($pdoc); switch ($xf) { case ':no': return; break; case ':br': return "\n"; break; case ':u': return '<u>' . $pdoc . '</u>'; break; case ':i': return '<i>' . $pdoc . '</i>'; break; case ':b': return '<b>' . $pdoc . '</b>'; break; case ':h': return '<h3>' . $pdoc . '</h3>'; break; case ':h1': return '<h1>' . $pdoc . '</h1>'; break; case ':h2': return '<h2>' . $pdoc . '</h2>'; break; case ':h4': return '<h4>' . $pdoc . '</h4>'; break; case ':e': return '<sup>' . $pdoc . '</sup>'; break; case ':l': return '<small>' . $pdoc . '</small>'; break; case ':k': return '<strike>' . $pdoc . '</strike>'; break; case ':q': return '<blockquote>' . $pdoc . '</blockquote>'; break; case ':t': return btn("txtit", $pdoc); break; case ':c': return btn("txtclr", $pdoc); break; case ':s': return btn("stabilo", $pdoc); break; case ':r': return pub_clr($pdoc . '§ff0000'); break; case ':list': return make_li($pdoc, 'ul'); break; case ':css': return pub_css($pdoc); break; case ':font': return pub_font($pdoc); break; case ':size': return pub_size($pdoc); break; case ':color': return pub_clr($pdoc); break; case ':html': return pub_html($pdoc); break; case ':pub': return pubart($pdoc); break; //pub //pub case ':w': return lkc('', goodroot($pdoc), $pdoc); break; case ':read': return str_replace('<br />', '', read_msg($pdoc, $media)); break; //read //read case ':photo': return photo_thumbs($pdoc, $id); break; //gallery //gallery case ':photo1': return plugin('flashgallery', $pdoc, $id); break; //flash //flash case ':photo2': return gallery_j($pdoc, $id); break; //ajax //ajax case ':gallery': return gallery($pdoc); break; case ':slides': return slides($pdoc, $id); break; //diapo //diapo case ':slider': return slider($pdoc, $id); break; //flash //flash case ':sliderJ': return sliderj($pdoc, $id); break; //ajax //ajax case ':jukebox': return jukebox($pdoc, $media, $id); break; //jukebox //jukebox case ':radio': return radio($pdoc, $media, $id); break; //radio //radio case ':import': return import_art($pdoc, $media); break; //import //import case ':numlist': return make_li($pdoc, 'ol'); break; case ':forum': return plugin('forum', $pdoc ? $pdoc : $id); break; //forum //forum case ':search': return rech_internal($pdoc); break; //search //search case ':articles': return arts_mod($pdoc, $id); break; //articles //articles case ':formail': return make_form($pdoc, 'mailform' . $id, '_formail___' . ajx($pdoc, '') . '____'); break; //mail //mail case ':chat': return plugin('chat', $pdoc ? $pdoc : $id, 5); break; //chat //chat case ':chatxml': return plugin('chatxml', $pdoc ? $pdoc : $id); break; case ':room': return call_plug('', 'popup', 'chatxml', $pdoc, pictxt('chat', $pdoc)); break; case ':shop': return plugin('shop', 'shop', $pdoc, $id); break; //shop //shop case ':prod': return plugin('shop', 'prod', $pdoc, $id); break; //prod //prod case ':bkg': return mk_bkg($pdoc, $id); break; case ':draw': return plugin('draw'); break; case ':icon': return icon($pdoc); break; case ':center': return bal("center", $pdoc); break; case ':right': return divc('" align="right', $pdoc); break; case ':clear': if (is_image($pdoc)) { $pdoc = place_image($pdoc, $media, $large, $largb); } return str_replace('float:left;', '', $pdoc) . "\n\n"; break; case ':table': return mk_table($pdoc); break; case ':divtable': return mk_dtable($pdoc); break; case ':nh': if ($media == 'nl') { return lka('#nb' . $pdoc . '" name="nh' . $pdoc, $pdoc); } else { return lj('" name="nh' . $pdoc, 'popup_nbp___' . $pdoc . '_' . $id, $pdoc); } break; case ':nb': if ($media != 'nl') { $go = urlread($id); } return lka($go . '#nh' . $pdoc . '" name="nb' . $pdoc, $pdoc); break; //nbp //nbp case ':pre': return bal("pre", entities($pdoc)); break; case ':code': return bal('pre', bal('code', $pdoc)); break; case ':php': return progcode($pdoc); break; case ':link': return special_link($pdoc); break; case ':console': return divc("console", $pdoc); break; case ':figure': return figure($pdoc, $large); break; case ':scan': return scan_txt($pdoc); break; //fopen_txt //fopen_txt case ':iframe': return iframe($pdoc, ''); break; case ':imgtxt': return create_img_txt($pdoc); break; case ':download': return download($pdoc); break; case ':msql': return msqread(msq_goodtable_b($pdoc), $id); break; case ':microsql': return msqread(msq_goodtable($pdoc), $id); break; case ':microread': return microread($pdoc); break; case ':msq_conn': return msqconn($pdoc, $id); break; case ':msq_html': return msqconn($pdoc, $id); break; //obso //obso case ':msq_lasts': return msqlasts($pdoc); break; case ':msq_count': return msqcount($pdoc); break; case ':msq_bin': return msqbin($pdoc); break; case ':msq_graph': return msqgraph($pdoc, $media); break; case ':data': return msqdata($pdoc, $id); break; case ':microform': return plugin('microform', $pdoc, $id); break; break; case ':module': req('mod'); return build_mod_r($pdoc); break; case ':modpop': return lj('', 'popup_modpop__3_' . ajx($pdoc), picto('get')); break; case ':ajxget': return ajx($pdoc); break; case ':ajax': return ajxlink($pdoc, randid(), 0, 1); break; case ':rss_input': return rssin($pdoc); break; case ':twitter': return plugin_func('twit', 'twit_build', ajx($pdoc)); break; case ':twitter_cached': return twitart($pdoc, $id); break; case ':poptwit': return poptwit($pdoc); break; case ':last-update': return lastup($pdoc, $id); break; case ':pdf': return pdfreader($pdoc); break; case ':swf': return popswf($pdoc); break; case ':jpg': return place_image($pdoc, $media, $large, $largb); break; case ':img': $im = vacuum_image($pdoc, $id); return place_image($im, $media, $large, $largb); break; //img //img case ':image': return image($pdoc); break; case ':mini': if (substr($pdoc, 0, 4) == 'http') { return vacuum_image($pdoc, $id); } return make_mini_b($pdoc, $id); break; //mini //mini case ':thumb': return make_mini_c($pdoc); break; //thumb //thumb case ':video': return video_auto($pdoc, $large, $id, $media); break; case ':popvideo': return popvideo($pdoc); break; case ':poptxt': return call_j($pdoc, 'poptxt'); break; case ':popmsqt': return call_j($pdoc, 'popmsqt'); break; case ':popmsql': return call_j($pdoc, 'popmsql'); break; case ':popread': return call_j($pdoc, 'popread'); break; case ':pop': return call_pop($pdoc); break; case ':jopen': return jopen($pdoc, 0); break; //jopen //jopen case ':jconn': return jopen($pdoc, 1); break; //jconn //jconn case ':popurl': return popurl($pdoc); break; case ':popart': return pop_art($pdoc); break; case ':rss_art': return rss_art($pdoc, 0, 0); break; case ':rss_read': return rss_art($pdoc, 1, 0); break; case ':webpage': return lj('txtbox', 'popup_webpage___' . ajx($pdoc), preplink($pdoc)); break; case ':web': return weblink($pdoc); break; case ':idart': return id_of_suj($pdoc); break; case ':petition': return plugin('petition', $id, 10); break; case ':book': return plugin('book', $pdoc, $id); break; case ':popbook': return plugin('book', $pdoc, 'x'); break; case ':track': return tracks_read($pdoc); break; case ':2cols': if ($media > 2) { return columns($pdoc, 2); } else { return $pdoc; } break; case ':3cols': if ($media > 2) { return columns($pdoc, 3); } else { return $pdoc; } break; case ':svg': return svg($pdoc); break; case ':svgcode': list($p, $o) = split_one('§', $pdoc, 1); return plugin_func('svg', 'svg_j', $p, $o); break; case ':plugin': list($p, $o) = split_one('§', $pdoc, 1); return plugin($p, $o); break; case ':plug': list($p, $o, $conn) = decompact_conn($pdoc); return plugin($conn, $p, $o); break; case ':pluf': list($fnc, $plg) = explode('§', $pdoc); return plugin_func($plg, $fnc, ''); break; case ':plup': list($p, $o, $conn) = decompact_conn($pdoc); list($plg, $bt) = split_one('§', $conn, 1); return lj('', 'popup_plupin___' . $plg . '_' . ajx($p) . '_' . ajx($o), $bt ? $bt : $plg); break; case ':openapp': list($p, $o, $d) = decompact_conn($pdoc); return openapp($d, $p, $o); break; case ':popapp': list($p, $o, $d) = decompact_conn($pdoc); return lj('', 'popup_openapp___' . $d, $d); break; case ':apps': return read_apps_link($pdoc); break; case ':bubble': return bubble_menus($pdoc, 'inline'); case ':header': list($d, $p) = explode('§', $pdoc); Head::add($p ? $p : 'code', delbr($d, "\n")); return; break; case ':jscode': Head::add('jscode', delbr($pdoc, "\n")); return; break; case ':jslink': Head::add('jslink', delbr($pdoc, "\n")); return; break; case ':basic': list($func, $var) = good_param($pdoc); return cbasic($func, $var); break; case ':bazx': return plugin('bazx', $pdoc); break; case ':version': return $_SESSION['philum']; break; case ':ver': $phi = $_SESSION['philum']; return substr($phi, 0, 2) . '.' . substr($phi, 2, 2); break; case ':picto': @(list($p, $o) = explode('§', $pdoc)); return picto($p, $o); break; case ':on': return '[' . $pdoc . ']'; break; } if ($doc == '--') { return hr(); } //hr if (is_image($doc) && strpos($doc, '§') === false && strpos($doc, '<') === false) { //images if (substr($d, 0, 4) == 'http' && !$_GET['callj']) { $doc = vacuum_image($doc, $id); } return place_image($doc, $media, $large, $largb); } if (strpos($doc, "¬") !== false) { return mk_dtable($doc); } //tables if ($xt == ".mp3") { return audio(goodroot($doc), $id); } //mp3 if ($xt == ".mp4") { return video_html(goodroot($doc)); } //mp4 if ($xt == ".pdf") { return pdfdoc($doc, $media, $large); } //pdf if ($xt == ".svg") { list($p, $w, $h) = subparams($doc); return image($p, $w, $h); } //svg //if($xt==".flv")return jwplayer($doc,$large);//flv if ($xt == ".swf") { return flash_prep($doc, ''); } //swf if ($xt == ".txt") { $doc = goodroot($doc); return lkt('', $doc, strrchr($doc, "/")); } if ($xt == ".gz") { return download($doc); } //tar if ($xt && $xt != ".") { //video if (strpos('.ogg.mp4.m4a.mov.mpg.wmv.h264.aac', $xt) !== false) { if ($media != 3) { return lj('txtx', 'pagup_popvideo___' . ajx($doc), pictxt('video', strrchr_b($doc, "/"))); } if ($xt == '.mp4' or $xt == '.m4a' or $xt == '.mov') { return video_html(goodroot($doc)); } } } if (substr($pdoc, 0, 1) == '@') { return poptwit(substr($pdoc, 1)); } //liens if ((strpos($doc, '§') !== false or strpos($doc, 'http') !== false or strpos($doc, '@') !== false) && strpos($doc, '<a href') === false) { $lk = prepdlink($doc); if (is_image($lk[0])) { //link2image§text if (substr($lk[0], 0, 4) == 'http') { $lk[0] = vacuum_image($lk[0], $id); } if (substr($lk[1], 0, 4) == 'http') { $lk[1] = lkt('', $lk[1], preplink($lk[1])); } if (is_image($lk[1])) { return popim(goodroot($lk[0]), image(goodroot($lk[1])), $id); } //mini //return place_image($lk[0],$media,$large,$largb,$lk[1],''); return popim(goodroot($lk[0], 1), $lk[1]); } elseif (is_image($lk[1])) { //link§image if (substr($lk[1], 0, 4) == 'http') { $lk[1] = vacuum_image($lk[1], $id); } if (strpos($lk[0], '.pdf') !== false) { return pdfdoc($doc, $media, $large); } if (is_numeric($lk[0])) { $lk[0] = urlread($lk[0]); } return lkc('', $lk[0], place_image($lk[1], $media, $large, $largb)) . "\n\n"; } elseif (substr($lk[0], 0, 4) == 'http') { return lka($lk[0], $lk[1]); } elseif (strpos($lk[0], '<img') !== false) { return $lk[0] . divc('blocktext', $lk[1]); } elseif (strpos($lk[1], '<img') !== false) { return $lk[0] . ' ' . $lk[1]; } elseif (substr($lk[0], 0, 1) == '/') { return lka($lk[0], $lk[1]); } elseif (strpos($lk[0], '/') !== false) { return lkc('', goodroot($lk[0]), $lk[1]); } elseif (strpos($lk[0], '.pdf') !== false) { return pdfdoc($doc, $media, $large); } elseif (substr($lk[0], 0, 1) == '#') { list($lien, $name) = explode('-', $lk[0]); return lka($lien . '" name="' . $name, $lk[1]); } elseif (strpos($lk[0], '@') !== false && strpos($lk[0], '.') !== false) { return lka('mailto:' . $lk[0], $lk[1] ? $lk[1] : $lk[0]); } elseif (substr($doc, 0, 1) == '@' && ($tw = substr($doc, 1))) { return poptwit($tw); } elseif (is_numeric($lk[0])) { return jread('', $lk[0], $lk[1]); } } //cols if (substr($xf, 0, 2) == ":/") { $nb = substr($xf, 2); if (is_numeric($nb)) { $nw = $large / $nb - 5; if ($media < 3) { return $pdoc; } else { return divs('float:left; width:' . $nw . 'px; padding-right:5px;', $pdoc); } } } //codeline_join $xxf = substr($xf, 1); $clvr = sesmk('clvars'); if ($clvr[$xxf]) { $rb = decompact_conn($doc); return codeline($rb[0], $rb[1], $rb[2]); } //user_conn $is = strpos($xf, ':') !== false ? 1 : 0; if ($xxf && $is && $xxf != 'stop' && $xxf != 'attr' && $xxf != 'rect' && $xxf != 'defs') { $func = msql_read('', ses('qb') . '_connectors', $xxf); if (!$func) { $func = msql_read('', 'public_connectors', $xxf); } if ($func && !is_array($func)) { return cbasic($func, $pdoc); } //plugin if (reqp($xxf)) { list($p, $o) = explode('§', $pdoc); $ret = plugin($xxf, $p, $o); } if ($ret) { return delbr($ret, "\n"); } } return '[' . $doc . ']'; }
function figure($id = null) { // Each figure is to be accompanied by an associative array: // filename: where the actual figure is to be found // caption: text to be displayed with the figure // id: unique label for recovering figure numbers. // Figures may be in a grid, in which case numbers are supplemented // by subnumbers within the figure. // Keep the unique numbers used to identify figures as they are added. static $number = 0, $subnumber = 0; static $allNull = [filename => null, caption => null, id => null, width => 0, height => 0]; static $ids = array(); // Keep id=>number association for later reference. static $level = 0; // Remember how deeply recursed this call is. static $tally = 0; // How many figures are in this call. // array of parameters given, and its length. $len = count($sources = func_get_args()); //$foo = rCount(func_get_args())[filename]; //echo PHP_EOL."[[[[$foo]]]]".PHP_EOL; $result = ''; if ($len == 0) { $result .= ''; // Do nothing } else { if (is_string($id)) { // Section 1: if given ids, return a Figures label. X_labels($ids, $sources, 'Figure'); } else { //_____________________________________________________________________ // Section 2: Place Figures in a table. if ($level == 0) { $number++; $subnumber = 0; $tally = 0; $result .= "<table align=\"left\" border=\"1\"><tr>" . PHP_EOL; } $tally += $len; $level++; $singles = 0; foreach ($sources as $source) { //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //gossip($source); //TODO handle nested arrays $specific = function ($source) use($result, $singles, $tally) { }; $F = $source['filename']; if (!$F) { //vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv $singles++; if ($singles > 1) { $result .= "</tr><tr>" . PHP_EOL; } foreach ($source as $single) { $result .= figure($single); $tally++; } //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } else { //vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv extract($allNull); // Install defaults $N = extract($source); // Get the figure variables $width2 = $width == 0 ? '' : $width + 2; $S = " src=\"{$filename}\""; // Prepare img tag attributes $W = $width == 0 ? "" : " width=\"{$width}\""; $W2 = $width == 0 ? "" : " width=\"{$width2}\""; $H = $height == 0 ? "" : " height=\"{$height}\""; $subnumber++; $figno = "{$number}"; // Generate the figure number if ($tally > 1) { $figno .= ".{$subnumber}"; } $ids[$id] = $figno; // Generate the HTML $result .= "<td align=\"center\" valign=\"top\"{$W2}>" . PHP_EOL . "<div><img{$S}{$W}{$H}></div>" . PHP_EOL . "<div align=\"center\">Figure {$figno}: {$caption}</div>" . PHP_EOL . '</td>' . PHP_EOL; //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } //----------------------------------------------------------------- } $level--; if ($level == 0) { $result .= "</tr></table>" . PHP_EOL; } } } return $result; }
<!-- start: load photos from folder --> <?php if ($page->hasImages()) { ?> <h2>Photo(s) form page</h2> <?php foreach ($page->images() as $image) { ?> <?php $caption = $image->caption() == '' ? $image->title() : ''; ?> <?php echo figure($image, array('cropratio' => 1 / 2, 'caption' => $caption)); ?> <?php } ?> <?php } ?> <!-- end --> <?php snippet('share_page'); ?> </article>