1 <?php # vim:ts=2:sw=2:et:
2 /* For licensing and copyright terms, see the file named LICENSE */
4 die("snippet needs migrating");
6 require_once 'SyntaxHighlight.php';
8 MTrackACL::requireAllRights('Snippets', 'read');
10 if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['submit'])) {
11 MTrackACL::requireAllRights('Snippets', 'create');
13 $snip = new MTrack_Snippet;
14 $snip->snippet = $_POST['code'];
15 $snip->description = $_POST['description'];
16 $snip->lang = $_POST['lang'];
17 $cs = MTrackChangeset::begin("snippet:?", $snip->description);
19 //$cs->setObject("snippet:$snip->snid");
21 header("Location: {$ABSWEB}snippet.php/$snip->snid");
25 $pi = mtrack_get_pathinfo();
27 if ($_SERVER['REQUEST_METHOD'] == 'POST') {
28 $snip = new MTrack_Snippet;
29 $snip->description = $_POST['description'];
30 $snip->lang = $_POST['lang'];
31 $snip->snippet = $_POST['code'];
32 } elseif (strlen($pi)) {
33 $snip = MTrack_Snippet::loadById($pi);
35 throw new Exception("Invalid snippet ID");
43 $code = $snip->snippet;
44 $desc = $snip->description;
45 mtrack_head("Snippet $pi");
48 $code = 'Enter your snippet here';
49 $desc = 'Enter a descriptive message here; you may use wiki syntax';
50 mtrack_head("New Snippet");
56 /* collect recent snippets */
57 $recent = MTrackDB::q('select snid, description, who, changedate
59 left join changes on snippets.updated = changes.cid
60 order by changes.changedate desc
61 limit 10')->fetchAll(PDO::FETCH_OBJ);
64 <td id='recentsnippets'>
65 <em>Snippets are a way to share text or code fragments</em><br><br>
68 if (MTrackACL::hasAllRights('Snippets', 'create')) {
70 <button id='newsnippet'>New Snippet</button><br>
72 \$(document).ready(function () {
73 \$('#newsnippet').click(function () {
74 document.location.href = "{$ABSWEB}snippet.php";
82 <b>Recent Snippets</b>
85 foreach ($recent as $s) {
86 $url = "{$ABSWEB}snippet.php/$s->snid";
87 $sum = MTrackWiki::format_to_oneliner($s->description);
88 $who = mtrack_username($s->who, array('no_image' => true));
89 $when = mtrack_date($s->changedate);
91 <div class='snippetsummary'>
94 <a href='$url'>view snippet</a>
100 if (MTrackACL::hasAllRights('Snippets', 'create') &&
101 (!$snip || $_SERVER['REQUEST_METHOD'] == 'POST')) {
102 echo "<form method='post' class='snippetform' action='{$ABSWEB}snippet.php'>";
103 echo "<textarea name='description' class='wiki shortwiki'>$desc</textarea>\n";
104 echo MTrack_SyntaxHighlight::getLangSelect('lang', $lang);
105 echo "<br><textarea name='code' class='code' rows='20' cols='78'>";
106 echo htmlentities($code, ENT_QUOTES, 'utf-8');
107 echo "</textarea><br>";
108 echo "<button type='submit' name='preview'>Preview</button>\n";
109 echo "<button type='submit' name='submit'>Submit</button>\n";
114 echo "<div class='snippetview'>";
115 echo "<h1>Snippet</h1>";
116 if ($snip->created) {
117 $created = MTrackChangeset::get($snip->created);
119 $created = new stdclass;
122 echo "<span id='snippetmug'>",
123 mtrack_username($created->who, array('no_name' => true, 'size' => 48)),
125 echo "<b>Created</b>: ",
126 mtrack_date($created->when),
128 mtrack_username($created->who, array('no_image' => true)),
130 echo "<a href='{$ABSWEB}snippet.php/$snip->snid'>Link to this snippet</a><br>";
132 echo MTrackWiki::format_to_html($snip->description);
134 echo MTrack_SyntaxHighlight::getSchemeSelect();
135 echo MTrack_SyntaxHighlight::highlightSource($code, $lang, null, true);
137 } else if (!MTrackACL::hasAllRights('Snippets', 'create')) {
138 echo "<p>You do not have rights to create snippets</p>";
141 echo "</td></tr></table>";