cleanup: Add remarkbox experiment, cleanup tabs in blagh

This commit is contained in:
Nuno Sempere 2022-08-12 11:19:28 +00:00
parent a0794a363e
commit e52d392560
4 changed files with 166 additions and 4 deletions

View File

@ -46,7 +46,7 @@ fn blagh_init {
if not if(~ $req_path $blagh_uri^index.rss) if not if(~ $req_path $blagh_uri^index.rss)
blagh_setup_feed_handlers rss20.tpl 'text/xml; charset=utf-8' blagh_setup_feed_handlers rss20.tpl 'text/xml; charset=utf-8'
if not if(~ $req_path $blagh_uri^feed.json) if not if(~ $req_path $blagh_uri^feed.json)
blagh_setup_feed_handlers jsonfeed.tpl 'application/json; charset=utf-8' blagh_setup_feed_handlers jsonfeed.tpl 'application/json; charset=utf-8'
if not if(~ $req_path $blagh_uri^new_post && ! ~ $#editor_mode 0) { if not if(~ $req_path $blagh_uri^new_post && ! ~ $#editor_mode 0) {
@ -84,16 +84,16 @@ fn blagh_body {
for(p in `{get_post_list $blagh_root^$blagh_dirs}) { for(p in `{get_post_list $blagh_root^$blagh_dirs}) {
l=`{echo -n $p|sed 's!'$sitedir^'/?(.*)([0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9])(/[^/]+/)!\2 /\1\2\3!'} l=`{echo -n $p|sed 's!'$sitedir^'/?(.*)([0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9])(/[^/]+/)!\2 /\1\2\3!'}
sed '1s!.*![&]('^$l(2)^') ('^$l(1)^')!' < $p/index.md sed '1s!.*![&]('^$l(2)^') ('^$l(1)^')!' < $p/index.md
# cat $p/index.md | sed '1s!.*![&]('^$l(2)^') ('^$l(1)^')!' | sed -n '/^.\{15\}/p' | echo # cat $p/index.md | sed '1s!.*![&]('^$l(2)^') ('^$l(1)^')!' | sed -n '/^.\{15\}/p' | echo
echo # Needed extra \n so markdown doesn't mess up the formatting, probably can be done in sed. echo # Needed extra \n so markdown doesn't mess up the formatting, probably can be done in sed.
echo # echo #
} | head -n 9 | $formatter | sed 's/h[2-9]/i/g'| sed 's/h1/h3/g' } | head -n 9 | $formatter | sed 's/h[2-9]/i/g'| sed 's/h1/h3/g'
# HTML posts # HTML posts
for(p in `{get_post_list $blagh_root^$blagh_dirs}) { for(p in `{get_post_list $blagh_root^$blagh_dirs}) {
cat < $p/index.html cat < $p/index.html
echo # Needed extra \n so markdown doesn't mess up the formatting, probably can be done in sed. echo # Needed extra \n so markdown doesn't mess up the formatting, probably can be done in sed.
} | sed 's/h[2-9]/i/g' | sed 's/h1/h3/g' | head -n 5 } | sed 's/h[2-9]/i/g' | sed 's/h1/h3/g' | head -n 5
# XXX BUG! Markdown [references] break because multiple markdown documents are merged. Should format each blog post independently. # XXX BUG! Markdown [references] break because multiple markdown documents are merged. Should format each blog post independently.
# TODO: use fltr_cache directly, that can fix the previous bug plus provide a perf boost by caching title generation. # TODO: use fltr_cache directly, that can fix the previous bug plus provide a perf boost by caching title generation.
echo '<p><a href="../sitemap">More content</a></p>' echo '<p><a href="../sitemap">More content</a></p>'
} }

103
apps/remarkbox/app.rc Normal file
View File

@ -0,0 +1,103 @@
comment_file_types=(md html)
fn conf_enable_comments {
if(~ $1 -n) {
allow_new_user_comments=yes
shift
}
if not if(~ $1 -a) {
bridge_anon_comments=yes
}
enable_comments=yes
groups_allowed_comments=$*
conf_enable_app bridge
}
fn bridge_init {
if(~ $#enable_comments 1 && ! ~ `{ls $local_path.$comment_file_types >[2]/dev/null|wc -l} 0) {
comments_dir=$sitedir$req_path'_werc/comments'
if(~ $REQUEST_METHOD GET && test -d $comments_dir)
ll_add handlers_body_foot template apps/bridge/comments_list.tpl
if(check_user $groups_allowed_comments || {~ $#logged_user 0 && ~ 1 $#allow_new_user_comments $#bridge_anon_comments}) {
if(~ $#post_arg_bridge_post 1) {
ll_add handlers_body_foot template apps/bridge/foot.tpl
if(mk_new_comment $comments_dir)
post_redirect $base_url^$req_path
if not
saved_comment_text=$post_arg_comment_text
}
if not if(~ $REQUEST_METHOD GET)
ll_add handlers_body_foot template apps/bridge/foot.tpl
}
if not if(~ $REQUEST_METHOD GET)
ll_add handlers_body_foot echo '<hr><p>To post a comment you need to <a href="/_users/login">login</a> first.</p>'
}
}
fn validate_new_user {
usr=$1; pass=$2; pass2=$3
_status=()
if(~ $"usr '' || ! echo $usr |sed 1q|grep -s '^'$allowed_user_chars'+$')
_status='Requested user name is invalid, must match: '^$allowed_user_chars^'+'
if not if(test -d etc/users/$usr)
_status='Sorry, user name '''^$usr^''' already taken, please pick a different one.'
if(~ $"pass '' || ! ~ $"pass $"pass2)
_status=($_status 'Provided passwords don''t match.')
status=$_status
}
fn mk_new_comment {
_status=()
dir=$1
if(~ $"post_arg_comment_text '')
_status='Provide a comment!'
if not if(~ $#logged_user 0) {
if(! ~ $#allow_new_user_comments 0) {
if(validate_new_user $"post_arg_comment_user $post_arg_comment_passwd $post_arg_comment_passwd2) {
u=$post_arg_comment_user':'$post_arg_comment_passwd
dir=$comments_dir^'_pending'
# XXX: This doesn't work because we then do a redirect.
notify_notes='Saved comment and registration info, they will be enabled when approved by an admin.'
}
if not
_status=$status
}
if not if(! ~ $#bridge_anon_comments 0) {
if(~ $"post_arg_ima_robot 'not')
u='Glenda' # Anonymous
if not
_status='You are a robot!'
}
if not
_status='You need to log in to comment.'
}
if not if(check_user $groups_allowed_comments)
u=$logged_user
if not
_status='You are not a member of a group allowed to comment.'
if(~ $#_status 0) {
umask 002
dir=$dir'/'`{date -n} # FIXME Obvious race
mkdir -m 775 -p $dir &&
echo $u > $dir/user &&
echo $current_date_time > $dir/posted &&
echo $post_arg_comment_text > $dir/body
_s=$status
if(! ~ $"_s '') {
dprint 'ERROR XXX: Could not create comment: ' $_s
_status='Could not post comment due internal error, sorry.'
}
}
notify_errors=$_status
status=$_status
}

View File

@ -0,0 +1,17 @@
<hr>
<h2>Comments</h2>
% for(c in `{ls $comments_dir/}) {
% if(test -s $c/body) {
<div class="comment">
<h5>By:
<b><i>%
(`{cat $c/user | sed 's/:.*//g'}%)
</i></b>
(%(`{cat $c/posted}%))
</h5>
% cat $c/body | escape_html | sed 's,$,<br>,'
<hr></div>
% }
% }

42
apps/remarkbox/foot.tpl Executable file
View File

@ -0,0 +1,42 @@
<hr>
% notices_handler
<form action="" method="post">
<textarea name="comment_text" id="comment_text" cols="80" rows="16">%($"saved_comment_text%)</textarea>
<br>
<input type="submit" name="bridge_post" value="Post a comment">
% if(~ $#logged_user 0) {
% if(~ $#allow_new_user_comments 1) {
</br>
</br>
<label>New user name:
<input type="text" name="comment_user" value="%($"post_arg_comment_user%)">
</label>
</br>
<label>Password:
<input type="password" name="comment_passwd" value="">
</label>
</br>
<label>Repeat password:
<input type="password" name="comment_passwd2" value="">
</label>
</br>
</br>
<div style="font-size: 70%">
Enter your desired user name/password and after your comment has been reviewed by an admin it will be posted and your account will be enabled. If you are already registered please <a href="/_users/login">login</a> before posting.
</div>
% }
% if not if(~ $#bridge_anon_comments 1) {
<label>Is <a href="http://glenda.cat-v.org">Glenda a cute bunny</a>?
<select name='ima_robot'>
<option value="yes">No</option>
<option value="not">Yes</option>
<option value="foobar">I hate bunnies!</option>
<option value="robot">I'm a robot!</option>
</select>
</label>
% }
% }
</form>