tinycm annotate plugins/blog/blog.cgi @ rev 121
Remove ashism ==
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Tue Feb 26 12:26:25 2019 +0100 (2019-02-26) |
parents | 798212b3ce40 |
children |
rev | line source |
---|---|
pankso@27 | 1 #!/bin/sh |
pankso@27 | 2 # |
pankso@27 | 3 # TinyCM Plugin - Blog |
pankso@27 | 4 # |
pankso@27 | 5 |
pankso@27 | 6 blog="$tiny/$content/blog" |
pankso@27 | 7 |
pankso@62 | 8 # # Blog tools for admin users only |
pankso@27 | 9 blog_tools() { |
pankso@62 | 10 if check_auth && admin_user; then |
pankso@62 | 11 cat << EOT |
pankso@27 | 12 <div id="tools"> |
pankso@62 | 13 <a href="$script?blog">$(gettext "Blog")</a> |
pankso@62 | 14 <a href="$script?blog=edit&p=new">$(gettext "New post")</a> |
pankso@72 | 15 <a href="$script?blog=archives">$(gettext "Archives")</a> |
pankso@27 | 16 <a href="$script?dashboard">Dashboard</a> |
pascal@121 | 17 $([ "$index" = "blog" ] && echo "<a href='$script?d=index'>Index</a>") |
pascal@121 | 18 $([ "$HG" = "yes" ] && echo "<a href='$script?hg'>Hg Log</a>") |
pankso@27 | 19 </div> |
pankso@27 | 20 EOT |
pankso@62 | 21 fi |
pankso@27 | 22 } |
pankso@27 | 23 |
pankso@27 | 24 # Post tools |
pankso@27 | 25 post_tools() { |
pankso@27 | 26 cat << EOT |
pankso@62 | 27 - <a href="$script?blog=edit&p=${p}">$(gettext "Edit it!")</a> |
pankso@62 | 28 || <a href="$script?blog=rm&p=${p}">$(gettext "Remove")</a> |
pankso@27 | 29 EOT |
pankso@62 | 30 } |
pankso@62 | 31 |
pankso@62 | 32 # Create a XML feed for a new post |
pankso@62 | 33 gen_rss() { |
pankso@62 | 34 pubdate=$(date "+%a, %d %b %Y %X") |
pankso@62 | 35 desc="$(cat ${blog}/${p}/post.txt | grep ^[A-Za-z] | head -n 4)" |
pankso@62 | 36 . ${blog}/${p}/post.conf |
pankso@62 | 37 cat > ${blog}/${p}/post.xml << EOT |
pankso@62 | 38 <item> |
pankso@62 | 39 <title>$TITLE</title> |
pankso@62 | 40 <link>http://${SERVER_NAME}?blog&p=$p</link> |
pankso@62 | 41 <guid>blog-$p</guid> |
pankso@62 | 42 <pubDate>$pubdate</pubDate> |
pankso@62 | 43 <description>$desc</description> |
pankso@62 | 44 </item> |
pankso@62 | 45 EOT |
pankso@62 | 46 } |
pankso@62 | 47 |
pankso@62 | 48 # RSS Feed |
pankso@62 | 49 rss() { |
pankso@62 | 50 pubdate=$(date "+%a, %d %b %Y %X") |
pankso@62 | 51 cat << EOT |
pankso@62 | 52 Content-Type: text/xml |
pankso@62 | 53 |
pankso@62 | 54 <?xml version="1.0" encoding="utf-8" ?> |
pankso@62 | 55 <rss version="2.0"> |
pankso@62 | 56 <channel> |
pankso@62 | 57 <title>TinyCM RSS</title> |
pankso@62 | 58 <description>The Blog feed</description> |
pankso@62 | 59 <link>http://${SERVER_NAME}</link> |
pankso@62 | 60 <lastBuildDate>$pubdate GMT</lastBuildDate> |
pankso@62 | 61 <pubDate>$pubdate GMT</pubDate> |
pankso@62 | 62 EOT |
pankso@62 | 63 for p in $(ls $blog | sort -r -n | head -n 8) |
pankso@62 | 64 do |
pankso@62 | 65 cat $blog/$p/post.xml |
pankso@62 | 66 done |
pankso@62 | 67 cat << EOT |
pankso@62 | 68 </channel> |
pankso@62 | 69 </rss> |
pankso@62 | 70 EOT |
pankso@27 | 71 } |
pankso@27 | 72 |
pankso@27 | 73 # Display blog post: show_posts nb |
pankso@28 | 74 show_post() { |
pankso@62 | 75 [ -f "$blog/$1/post.conf" ] || return 1 |
pankso@62 | 76 p="$1" |
pankso@62 | 77 . ${blog}/${p}/post.conf |
pankso@62 | 78 d="$TITLE" |
pankso@120 | 79 |
pankso@62 | 80 # Author info |
pankso@62 | 81 if [ -f "${PEOPLE}/${AUTHOR}/account.conf" ]; then |
pankso@62 | 82 . ${PEOPLE}/${AUTHOR}/account.conf |
pankso@28 | 83 else |
pankso@62 | 84 echo "ERROR: ${PEOPLE}/${AUTHOR}/account.conf" |
pankso@28 | 85 fi |
pankso@120 | 86 |
pankso@62 | 87 echo "<h2>$TITLE</h2>" |
pankso@62 | 88 echo "<div class='blogpost'>" |
pankso@62 | 89 cat ${blog}/${p}/post.txt | wiki_parser |
pankso@28 | 90 cat << EOT |
pankso@28 | 91 <div class="post-tools"> |
pankso@28 | 92 <a href="$script?user=$USER">$(get_gravatar $MAIL 24)</a> |
pankso@62 | 93 <span class="date">$DATE</span> |
pankso@28 | 94 EOT |
pankso@48 | 95 # Post tools for admin users |
pankso@48 | 96 if check_auth && admin_user; then |
pankso@28 | 97 post_tools |
pankso@28 | 98 echo "</div>" |
pankso@28 | 99 else |
pankso@28 | 100 echo "</div>" |
pankso@28 | 101 fi |
pankso@28 | 102 echo "</div>" |
pankso@28 | 103 } |
pankso@28 | 104 |
pankso@28 | 105 # Display blog post: show_posts count |
pankso@27 | 106 show_posts() { |
pankso@49 | 107 for p in $(ls $blog | sort -r -n | head -n $1) |
pankso@27 | 108 do |
pankso@28 | 109 show_post ${p} |
pankso@27 | 110 done |
pankso@27 | 111 } |
pankso@27 | 112 |
pankso@120 | 113 # RSS feed requested |
pascal@121 | 114 if [ "$(GET blog)" = "rss" ]; then |
pankso@120 | 115 rss && exit 0 |
pankso@120 | 116 fi |
pankso@120 | 117 |
pankso@27 | 118 # |
paul@64 | 119 # Index main page can display the latest Blog posts |
pankso@27 | 120 # |
pankso@27 | 121 if fgrep -q '[BLOG]' $tiny/$wiki/index.txt && [ ! "$(GET)" ]; then |
pankso@28 | 122 d="Blog posts" |
pankso@27 | 123 index="blog" |
pankso@27 | 124 header |
pankso@27 | 125 html_header |
pankso@27 | 126 user_box |
pankso@27 | 127 # Post tools for auth users |
pankso@30 | 128 if admin_user; then |
pankso@27 | 129 blog_tools |
pankso@27 | 130 fi |
pankso@27 | 131 show_posts 5 |
pankso@27 | 132 echo "<p><a href='$script?blog'>$(gettext "More blog posts")</a></p>" |
pankso@27 | 133 html_footer && exit 0 |
pankso@27 | 134 fi |
pankso@27 | 135 |
pankso@60 | 136 # |
pankso@60 | 137 # Handle GET requests |
pankso@60 | 138 # |
pankso@60 | 139 |
pankso@111 | 140 |
pankso@111 | 141 case " $(GET blog) " in |
pankso@111 | 142 *\ edit\ *) |
pankso@111 | 143 d="Editing: $(GET p)" |
pankso@111 | 144 p="$(GET p)" |
pankso@111 | 145 header |
pankso@111 | 146 html_header |
pankso@111 | 147 user_box |
pankso@111 | 148 if ! check_auth && admin_user; then |
pankso@111 | 149 gettext "You must be admin to create a new Blog post" |
pankso@111 | 150 html_footer && exit 0 |
pankso@111 | 151 fi |
pankso@111 | 152 blog_tools |
pankso@111 | 153 # New post |
pascal@121 | 154 if [ "$p" = "new" ]; then |
pankso@111 | 155 last=$(ls $blog | sort -r -n | head -n 1) |
pankso@111 | 156 p=$(($last + 1)) |
pankso@111 | 157 AUTHOR="$user" |
pankso@111 | 158 DATE=$(date '+%Y-%m-%d') |
pankso@111 | 159 else |
pankso@111 | 160 . ${blog}/${p}/post.conf |
pankso@120 | 161 fi |
pankso@111 | 162 cat << EOT |
pankso@62 | 163 <h2>$(gettext "Blog post"): $p</h2> |
pankso@27 | 164 |
pankso@27 | 165 <div id="edit"> |
pankso@60 | 166 <form method="get" action="$script?" name="editor"> |
pankso@62 | 167 <input type="text" name="title" value="$TITLE" placeholder="Title" /> |
pankso@60 | 168 <input type="hidden" name="blog" value="save" /> |
pankso@62 | 169 <input type="hidden" name="p" value="$p" /> |
pankso@62 | 170 <textarea name="content">$(cat "$blog/$p/post.txt")</textarea> |
pankso@62 | 171 <div> |
pankso@62 | 172 <input type="submit" value="$(gettext "Post content")" /> |
pankso@120 | 173 <input style="width: 20%;" type="text" |
pankso@62 | 174 name="author" value="$AUTHOR" /> |
pankso@62 | 175 <input style="width: 20%; display: inline;" type="text" |
pankso@62 | 176 name="date" value="$DATE" /> |
pankso@62 | 177 </div> |
pankso@120 | 178 |
pankso@62 | 179 <p> |
pankso@27 | 180 $(gettext "Code Helper:") |
pankso@27 | 181 $(cat lib/jseditor.html) |
pankso@62 | 182 </p> |
pankso@27 | 183 </form> |
pankso@27 | 184 </div> |
pankso@27 | 185 EOT |
pankso@111 | 186 html_footer && exit 0 ;; |
pankso@111 | 187 |
pankso@111 | 188 *\ save\ *) |
pankso@111 | 189 p="$(GET p)" |
pankso@111 | 190 if check_auth && admin_user; then |
pankso@111 | 191 [ -d "$blog/$p" ] || mkdir -p ${blog}/${p} |
pankso@111 | 192 # New post ? |
pankso@111 | 193 if [ ! -f "${blog}/${p}/post.txt" ]; then |
pankso@111 | 194 echo "New Blog post: <a href='$script?blog&p=$p'>Read it!</a>" \ |
pankso@111 | 195 | log_activity |
pankso@111 | 196 fi |
pankso@111 | 197 # Write config file |
pankso@111 | 198 cat > ${blog}/${p}/post.conf << EOT |
pankso@62 | 199 # TinyCM Blog post configuration |
pankso@62 | 200 AUTHOR="$(GET author)" |
pankso@62 | 201 DATE="$(GET date)" |
pankso@62 | 202 TITLE="$(GET title)" |
pankso@62 | 203 EOT |
pankso@111 | 204 # Write content to file |
pankso@111 | 205 sed "s/$(echo -en '\r') /\n/g" > ${blog}/${p}/post.txt << EOT |
pankso@27 | 206 $(GET content) |
pankso@27 | 207 EOT |
pankso@111 | 208 fi |
pankso@111 | 209 [ -f "${blog}/${p}/post.xml" ] || gen_rss |
pankso@111 | 210 header "Location: $script?blog&p=$p" ;; |
pankso@120 | 211 |
pankso@111 | 212 *\ rm\ *) |
pankso@111 | 213 if check_auth && admin_user; then |
pankso@111 | 214 rm -rf ${blog}/"$(GET p)" |
pankso@111 | 215 fi |
pankso@111 | 216 header "Location: $script?blog" ;; |
pankso@120 | 217 |
pankso@111 | 218 *\ archives\ *) |
pankso@111 | 219 # List all posts with title only |
pankso@111 | 220 d="Blog archives" |
pankso@111 | 221 header |
pankso@111 | 222 html_header |
pankso@111 | 223 user_box |
pankso@111 | 224 blog_tools |
pankso@120 | 225 cat << EOT |
pankso@120 | 226 <h2>Blog archives</h2> |
pankso@120 | 227 <div id="plugins"> |
pankso@120 | 228 <table> |
pankso@120 | 229 <thead> |
pankso@120 | 230 <td>$(gettext "Date")</td> |
pankso@120 | 231 <td>$(gettext "Title")</td> |
pankso@120 | 232 </thead> |
pankso@120 | 233 EOT |
pankso@111 | 234 for p in $(ls $blog | sort -nr) |
pankso@111 | 235 do |
pankso@111 | 236 . ${blog}/${p}/post.conf |
pankso@120 | 237 cat << EOT |
pankso@120 | 238 <tr> |
pankso@120 | 239 <td>$DATE</td> |
pankso@120 | 240 <td><a href='$script?blog&p=$p'>$TITLE</a></td> |
pankso@120 | 241 </tr> |
pankso@120 | 242 EOT |
pankso@120 | 243 done |
pankso@120 | 244 echo "</table></div>" |
pankso@111 | 245 html_footer && exit 0 ;; |
pankso@120 | 246 |
pankso@112 | 247 *\ blog\ *) |
pankso@111 | 248 d="Blog posts" |
pankso@111 | 249 count="10" |
pankso@111 | 250 header |
pankso@111 | 251 html_header |
pankso@111 | 252 user_box |
pankso@111 | 253 blog_tools |
pankso@120 | 254 |
pankso@111 | 255 # Exit if plugin is disabled |
pankso@111 | 256 if [ ! -d "$blog" ]; then |
pankso@111 | 257 echo "<p class='error box'>" |
pankso@111 | 258 gettext "Blog plugin is not yet active."; echo "</p>" |
pankso@111 | 259 html_footer && exit 0 |
pankso@111 | 260 fi |
pankso@120 | 261 |
pankso@111 | 262 # Single post |
pankso@111 | 263 if [ "$(GET p)" ]; then |
pankso@111 | 264 show_post "$(GET p)" |
pankso@111 | 265 else |
pankso@111 | 266 show_posts ${count} |
pankso@111 | 267 echo "<p><a href='$script?blog=archives'>$(gettext "Blog archives")</a></p>" |
pankso@120 | 268 fi |
pankso@120 | 269 |
pankso@111 | 270 html_footer && exit 0 ;; |
pankso@111 | 271 esac |
pankso@111 | 272 |
pankso@120 | 273 |