tinycm annotate plugins/blog/blog.cgi @ rev 27

Add small blog plugin
author Christophe Lincoln <pankso@slitaz.org>
date Sun Jan 05 23:20:19 2014 +0000 (2014-01-05)
parents
children 09f5185ff6e0
rev   line source
pankso@27 1 #!/bin/sh
pankso@27 2 #
pankso@27 3 # TinyCM Plugin - Blog
pankso@27 4 #
pankso@27 5 . /usr/lib/slitaz/httphelper
pankso@27 6
pankso@27 7 blog="$tiny/$content/blog"
pankso@27 8
pankso@27 9 # Blog tools
pankso@27 10 blog_tools() {
pankso@27 11 cat << EOT
pankso@27 12 <div id="tools">
pankso@27 13 <a href="$script?blogedit&amp;d=new">$(gettext "New post")</a>
pankso@27 14 <a href="$script?dashboard">Dashboard</a>
pankso@27 15 $([ "$index" == "blog" ] && echo "<a href='$script?d=index'>Index</a>")
pankso@27 16 $([ "$HG" == "yes" ] && echo "<a href='$script?hg'>Hg Log</a>")
pankso@27 17 </div>
pankso@27 18 EOT
pankso@27 19 }
pankso@27 20
pankso@27 21 # Post tools
pankso@27 22 post_tools() {
pankso@27 23 cat << EOT
pankso@27 24 <div class="post-tools">
pankso@27 25 ${d}: <a href="$script?blogedit&amp;d=${d}">$(gettext "Edit post")</a>
pankso@27 26 </div>
pankso@27 27 EOT
pankso@27 28 }
pankso@27 29
pankso@27 30 # Display blog post: show_posts nb
pankso@27 31 show_posts() {
pankso@27 32 for p in $(find $blog -type f | head -n $1)
pankso@27 33 do
pankso@27 34 name=$(basename $p)
pankso@27 35 d=${name%.txt}
pankso@27 36 echo "<div class=\"blogpost\">"
pankso@27 37 cat ${blog}/${d}.txt | wiki_parser
pankso@27 38 echo "</div>"
pankso@27 39 # Post tools for auth users
pankso@27 40 if check_auth; then
pankso@27 41 post_tools
pankso@27 42 fi
pankso@27 43 done
pankso@27 44 }
pankso@27 45
pankso@27 46 #
pankso@27 47 # Index main page can display the lastest Blog posts
pankso@27 48 #
pankso@27 49 if fgrep -q '[BLOG]' $tiny/$wiki/index.txt && [ ! "$(GET)" ]; then
pankso@27 50 d="Blog"
pankso@27 51 index="blog"
pankso@27 52 header
pankso@27 53 html_header
pankso@27 54 user_box
pankso@27 55 echo "<h2>$(gettext "Latest blog posts")</h2>"
pankso@27 56 # Post tools for auth users
pankso@27 57 if check_auth; then
pankso@27 58 blog_tools
pankso@27 59 fi
pankso@27 60 show_posts 5
pankso@27 61 echo "<p><a href='$script?blog'>$(gettext "More blog posts")</a></p>"
pankso@27 62 html_footer && exit 0
pankso@27 63 fi
pankso@27 64
pankso@27 65 case " $(GET) " in
pankso@27 66 *\ blogedit\ *)
pankso@27 67 d="$(GET d)"
pankso@27 68 header
pankso@27 69 html_header
pankso@27 70 user_box
pankso@27 71 # Blog tools for auth users
pankso@27 72 if ! check_auth; then
pankso@27 73 gettext "You must be logged in to create a new Blog post"
pankso@27 74 html_footer && exit 0
pankso@27 75 fi
pankso@27 76 # New post
pankso@27 77 if [ "$d" == "new" ]; then
pankso@27 78 d=$(date '+%Y%m%d')
pankso@27 79 [ -f "$blog/$d.txt" ] && d=$(date '+%Y%m%d-%H%M')
pankso@27 80 fi
pankso@27 81 cat << EOT
pankso@27 82 <h2>$(gettext "Blog post"): $d</h2>
pankso@27 83
pankso@27 84 <div id="edit">
pankso@27 85 <form method="get" action="$script" name="editor">
pankso@27 86 <input type="hidden" name="blogsave" value="$d" />
pankso@27 87 <textarea name="content">$(cat "$blog/$d.txt")</textarea>
pankso@27 88 <input type="submit" value="$(gettext "Post content")" />
pankso@27 89 $(gettext "Code Helper:")
pankso@27 90 $(cat lib/jseditor.html)
pankso@27 91 </form>
pankso@27 92 </div>
pankso@27 93 EOT
pankso@27 94 html_footer && exit 0 ;;
pankso@27 95
pankso@27 96 *\ blogsave\ *)
pankso@27 97 d="$(GET blogsave)"
pankso@27 98 if check_auth; then
pankso@27 99 [ -d "$blog" ] || mkdir -p ${blog}
pankso@27 100 sed "s/$(echo -en '\r') /\n/g" > ${blog}/${d}.txt << EOT
pankso@27 101 $(GET content)
pankso@27 102 EOT
pankso@27 103 fi
pankso@27 104 header "Location: $script?blog" ;;
pankso@27 105
pankso@27 106 *\ blog\ *)
pankso@27 107 d="Latest blog posts"
pankso@27 108 nb="20"
pankso@27 109 header
pankso@27 110 html_header
pankso@27 111 user_box
pankso@27 112 echo "<h2>$(gettext "Latest blog posts")</h2>"
pankso@27 113 # Blog tools for auth users
pankso@27 114 if check_auth; then
pankso@27 115 blog_tools
pankso@27 116 fi
pankso@27 117 # Exit if plugin is disabled
pankso@27 118 if [ ! -d "$blog" ]; then
pankso@27 119 echo "<p class='error box'>"
pankso@27 120 gettext "Blog plugin is not yet active."; echo "</p>"
pankso@27 121 html_footer && exit 0
pankso@27 122 fi
pankso@27 123 show_posts ${nb}
pankso@27 124 html_footer
pankso@27 125 exit 0 ;;
pankso@27 126 esac