[2020-03-20 20:03:14 UTC: Added topics: "/dev/random", "Code", "Software", and "Answers" topics to better illustrate their use of space in a story. --martyb]
IMPORTANT NOTE: Rehash has altered the indentation; tabs have been replaced with spaces.
Here is the original version of the template: dispStory;misc;default
[% dispmode = dispmode || "full" %]
[% IF dispmode == "full" %]
<div class="article">
<span class="sd-info-block" style="display: none">
<span class="sd-key-sid">[% story.sid %]</span>
<span class="type">story</span>
[% IF user.is_admin %]<span class="stoid">[% story.stoid %]</span>[% END %]
</span>
[% stripped_title = story.title | strip_title %]
[% IF magic;
thisskin = Slash.db.getSkin(story.primaryskid);
IF thisskin.rootdir;
title = "<a href=\"$thisskin.rootdir/\">";
ELSE;
IF user.is_anon;
title = "<a href=\"$gSkin.rootdir/$thisskin.name/\">";
ELSE;
title = "<a href=\"$gSkin.rootdir/index.pl?section=$story.primaryskid\">";
END;
END;
title = title _ thisskin.title _ "</a>: <a href=\"$thisskin.rootdir/article.pl?sid=$story.sid\">$stripped_title</a>";
ELSE;
title = "<a href=\"$gSkin.rootdir/article.pl?sid=$story.sid\">$stripped_title</a>";
END %]
[% seen_topics = {} %]
[% PROCESS titlebar future=story.is_future %]
<div class="details">
[% IF story.journal_id;
# at some point, we should maybe have a link
# directly to the journal entry, perhaps
# in the storylinks? for now, just to the journal.
journal = Slash.getObject('Slash::Journal');
thisjournal = journal.get(story.journal_id);
IF thisjournal && thisjournal.uid;
thisuser = Slash.db.getUser(thisjournal.uid); %]
Journal written by <a href="[% constants.real_rootdir %]/~[% thisuser.nickname | fixnickforlink | strip_paramattr %]/journal/"
>[% thisuser.nickname | strip_literal %] ([% thisjournal.uid %])</a> and [%
ELSIF story.by %]
Written by [% story.by | strip_literal %] and [%
END;
END %]
posted by
[% IF author.homepage %]
<a href="[% author.homepage %]">[% author.nickname | strip_literal %]</a>
[% ELSE %]
<a href="[% constants.real_rootdir %]/~[% author.nickname | fixnickforlink | strip_paramattr %]/"> [% author.nickname | strip_literal %]</a>
[% END %]
[% story.atstorytime %]
[% IF constants.plugin.Print %]
<a href="[% gSkin.rootdir -%]/print.pl?sid=[% story.sid %]"><img src="[% constants.imagedir %]/print.gif" height="11" width="15" alt="Printer-friendly"></a>
[% END %]
[% IF constants.plugin.Email %]
<a href="[% gSkin.rootdir -%]/email.pl?sid=[% story.sid %]"><img src="[% constants.imagedir -%]/email.gif" height="14" width="20" alt="Email story" ></a>
[% END %]<br>
[% IF constants.use_dept && story.dept %]<strong>from the <b>[% story.dept %]</b> dept.</strong>[% END %]
</div>
<div class="body">
[% mypagemenu = PROCESS pagemenu; IF mypagemenu %]<br>[% mypagemenu %][% END %]
<div class="topic">
[% seen_topics.${topic.tid} = 1 %]
[% IF user.lowbandwidth || user.simpledesign || user.noicons || user.pda %]
[ <a href="[% gSkin.rootdir %]/search.pl?tid=[% topic.tid %]">[% topic.textname %]</a> ]
[% ELSIF topic.image %]
<a href="[% gSkin.rootdir %]/search.pl?tid=[% topic.tid %]">
<img src="[% constants.imagedir %]/topics/[% topic.image %]" width="[% topic.width %]" height="[% topic.height %]" alt="[% topic.textname %]" title="[% topic.textname %]" >
</a>
[% END %]
[% FOREACH tid = topiclist %]
[% IF seen_topics.$tid ; NEXT ; END %]
[% seen_topics.$tid = 1 %]
[% topic2 = Slash.db.getTopic(tid) %]
[% IF user.lowbandwidth || user.simpledesign || user.noicons %]
[ <a href="[% gSkin.rootdir %]/search.pl?tid=[% topic2.tid %]" class="topic2">[% topic2.textname %]</a> ]
[% ELSIF topic2.image %]
<a href="[% gSkin.rootdir %]/search.pl?tid=[% topic2.tid %]" class="topic2">
<img src="[% constants.imagedir %]/topics/[% topic2.image %]" width="[% topic2.width %]" height="[% topic2.height %]" alt="[% topic2.textname %]" title="[% topic2.textname %]" >
</a>
[% END %]
[% END %]
</div>
<div class="intro">
[%
# Look ye to parseDomainTags for the domaintags == [0-2] logic
%]
[% IF user.domaintags == "3" %]
[% story.introtext | apply_rehash_tags %]
[% ELSE %]
[% pretext = story.introtext | apply_rehash_tags;
pretext = Slash.addDomainTags(pretext);
pretext = Slash.parseDomainTags(pretext, 1); %]
[% pretext %]
[% END %]
</div>
[% IF !full && story.bodytext.length %]
<input type="checkbox" id="more_[% story.sid %]" class="story_more" autocomplete="off" />
<label for="more_[% story.sid %]" class="story_more">[% constants.story_more %]</label>
<div class="story_more full">
[% story.bodytext | apply_rehash_tags %]
</div>
[% END %]
[% IF full && user.is_admin %]
<br><a href="[% gSkin.rootdir -%]/admin.pl?op=edit&sid=[% story.sid %]">[ Edit ]</a>
[% IF user.acl.signoff_allowed %]
[% signed = Slash.db.hasUserSignedStory(stoid, user.uid); %]
[% UNLESS signed %]<a href="[% gSkin.rootdir -%]/admin.pl?op=edit&sid=[% story.sid %]">[ No Signoff ]</a> [% END %]
[% END %]
[% possndstory = Slash.db.getStory(stoid) %]
[% UNLESS possndstory.neverdisplay %]<a href="[% gSkin.rootdir -%]/admin.pl?op=edit&sid=[% story.sid %]">[ Display Enabled ]</a>[% END %]
[% END %]
[% IF story.is_future && !user.is_admin %]<p>See any serious problems with this story?
[% IF constants.ircslash_remarks %]
Paste a short message here (if it's a dupe, the URL would be great)
<form action="[% gSkin.rootdir %]/index.pl" method="post">
<input type="text" name="remark" size="20" maxlength="100">
<input type="hidden" name="sid" value="[% story.sid | strip_attribute %]" >
</form>
or email
[% ELSE %]
[% END %]
<a href="mailto:[% constants.adminmail %]?subject=[DP]%20[% story.title | strip_paramattr_nonhttp %]">our on-duty editor</a>.
[% END %]
[% IF full && story.bodytext %]
<div class="full">
[% story.bodytext | apply_rehash_tags %]
</div>
[% END %]
</div>
</div>
[% ELSIF dispmode == "brief" %]
[% IF story.is_future %]<div class="future">[% END %]
<div class="briefarticle">
[% storylink = Slash.linkStory ({
sid => story.sid,
link => story.title,
tid => story.tid
skin => story.primaryskid
}, 1 );
%]
[% title = ''; IF magic;
thisskin = Slash.db.getSkin(story.primaryskid);
IF thisskin.rootdir;
title = "<a href=\"$thisskin.rootdir/\">";
ELSE;
IF user.is_anon;
title = "<a href=\"$gSkin.rootdir/$thisskin.name/\">";
ELSE;
title = "<a href=\"$gSkin.rootdir/index.pl?section=$story.primaryskid\">";
END;
END;
title = "<span class=\"section\">" _ title _ thisskin.title _ "</a></span>: ";
END;
title = title _ "<span class=\"storytitle\"><a href=\"$thisskin.rootdir/article.pl?sid=$story.sid\">$story.title</a></span>";
%]
[% title %] [% IF story.commentcount %][% story.commentcount %] comment[% IF story.commentcount > 1 %]s[% END %][% END %]
[% IF user.is_admin %]<a href="[% gSkin.rootdir -%]/admin.pl?op=edit&sid=[% story.sid %]">(edit)</a>[% END %]
[% IF getintro %]
<div class="introhide" id="intro-[% story.stoid %]">
[% story.introtext | apply_rehash_tags %]
</div>
[% END %]
</div>
[% IF story.is_future %]</div>[% END %]
[% END %]
Here is the updated version of the template: dispStory;misc;default
[% dispmode = dispmode || "full" %]
[% IF dispmode == "full" %]
<div class="article">
<span class="sd-info-block" style="display: none">
<span class="sd-key-sid">[% story.sid %]</span>
<span class="type">story</span>
[% IF user.is_admin %]<span class="stoid">[% story.stoid %]</span>[% END %]
</span>
[% stripped_title = story.title | strip_title %]
[% IF magic;
thisskin = Slash.db.getSkin(story.primaryskid);
IF thisskin.rootdir;
title = "<a href=\"$thisskin.rootdir/\">";
ELSE;
IF user.is_anon;
title = "<a href=\"$gSkin.rootdir/$thisskin.name/\">";
ELSE;
title = "<a href=\"$gSkin.rootdir/index.pl?section=$story.primaryskid\">";
END;
END;
title = title _ thisskin.title _ "</a>: <a href=\"$thisskin.rootdir/article.pl?sid=$story.sid\">$stripped_title</a>";
ELSE;
title = "<a href=\"$gSkin.rootdir/article.pl?sid=$story.sid\">$stripped_title</a>";
END %]
[% seen_topics = {} %]
[% PROCESS titlebar future=story.is_future %]
<div class="details">
[% IF story.journal_id;
# at some point, we should maybe have a link
# directly to the journal entry, perhaps
# in the storylinks? for now, just to the journal.
journal = Slash.getObject('Slash::Journal');
thisjournal = journal.get(story.journal_id);
IF thisjournal && thisjournal.uid;
thisuser = Slash.db.getUser(thisjournal.uid); %]
Journal written by <a href="[% constants.real_rootdir %]/~[% thisuser.nickname | fixnickforlink | strip_paramattr %]/journal/"
>[% thisuser.nickname | strip_literal %] ([% thisjournal.uid %])</a> and [%
ELSIF story.by %]
Written by [% story.by | strip_literal %] and [%
END;
END %]
posted by
[% IF author.homepage %]
<a href="[% author.homepage %]">[% author.nickname | strip_literal %]</a>
[% ELSE %]
<a href="[% constants.real_rootdir %]/~[% author.nickname | fixnickforlink | strip_paramattr %]/"> [% author.nickname | strip_literal %]</a>
[% END %]
[% story.atstorytime %]
[% IF constants.plugin.Print %]
<a href="[% gSkin.rootdir -%]/print.pl?sid=[% story.sid %]"><img src="[% constants.imagedir %]/print.gif" height="11" width="15" alt="Printer-friendly"></a>
[% END %]
[% IF constants.plugin.Email %]
<a href="[% gSkin.rootdir -%]/email.pl?sid=[% story.sid %]"><img src="[% constants.imagedir -%]/email.gif" height="14" width="20" alt="Email story" ></a>
[% END %]<br>
[% IF constants.use_dept && story.dept %]<strong>from the <b>[% story.dept %]</b> dept.</strong>[% END %]
</div>
<div class="body">
<!-- BEGIN in-memory update 2020-03-20 --martyb -->
<div class="linkCommentPage" style="margin: 0; padding: 0; background-color: inherit !important;">
<span class="nbutton">
<b>
<style>html body div#frame div#contents div#index div#articles div.article div.body div.linkCommentPage span.nbutton b a {display: none;}</style>
<a href="#acomments">Skip to comment(s)</a>
</b>
</span>
</div>
<!-- END in-memory update 2020-03-20 --martyb -->
[% mypagemenu = PROCESS pagemenu; IF mypagemenu %]<br>[% mypagemenu %][% END %]
<div class="topic">
[% seen_topics.${topic.tid} = 1 %]
[% IF user.lowbandwidth || user.simpledesign || user.noicons || user.pda %]
[ <a href="[% gSkin.rootdir %]/search.pl?tid=[% topic.tid %]">[% topic.textname %]</a> ]
[% ELSIF topic.image %]
<a href="[% gSkin.rootdir %]/search.pl?tid=[% topic.tid %]">
<img src="[% constants.imagedir %]/topics/[% topic.image %]" width="[% topic.width %]" height="[% topic.height %]" alt="[% topic.textname %]" title="[% topic.textname %]" >
</a>
[% END %]
[% FOREACH tid = topiclist %]
[% IF seen_topics.$tid ; NEXT ; END %]
[% seen_topics.$tid = 1 %]
[% topic2 = Slash.db.getTopic(tid) %]
[% IF user.lowbandwidth || user.simpledesign || user.noicons %]
[ <a href="[% gSkin.rootdir %]/search.pl?tid=[% topic2.tid %]" class="topic2">[% topic2.textname %]</a> ]
[% ELSIF topic2.image %]
<a href="[% gSkin.rootdir %]/search.pl?tid=[% topic2.tid %]" class="topic2">
<img src="[% constants.imagedir %]/topics/[% topic2.image %]" width="[% topic2.width %]" height="[% topic2.height %]" alt="[% topic2.textname %]" title="[% topic2.textname %]" >
</a>
[% END %]
[% END %]
</div>
<div class="intro">
[%
# Look ye to parseDomainTags for the domaintags == [0-2] logic
%]
[% IF user.domaintags == "3" %]
[% story.introtext | apply_rehash_tags %]
[% ELSE %]
[% pretext = story.introtext | apply_rehash_tags;
pretext = Slash.addDomainTags(pretext);
pretext = Slash.parseDomainTags(pretext, 1); %]
[% pretext %]
[% END %]
</div>
[% IF !full && story.bodytext.length %]
<input type="checkbox" id="more_[% story.sid %]" class="story_more" autocomplete="off" />
<label for="more_[% story.sid %]" class="story_more">[% constants.story_more %]</label>
<div class="story_more full">
[% story.bodytext | apply_rehash_tags %]
</div>
[% END %]
[% IF full && user.is_admin %]
<br><a href="[% gSkin.rootdir -%]/admin.pl?op=edit&sid=[% story.sid %]">[ Edit ]</a>
[% IF user.acl.signoff_allowed %]
[% signed = Slash.db.hasUserSignedStory(stoid, user.uid); %]
[% UNLESS signed %]<a href="[% gSkin.rootdir -%]/admin.pl?op=edit&sid=[% story.sid %]">[ No Signoff ]</a> [% END %]
[% END %]
[% possndstory = Slash.db.getStory(stoid) %]
[% UNLESS possndstory.neverdisplay %]<a href="[% gSkin.rootdir -%]/admin.pl?op=edit&sid=[% story.sid %]">[ Display Enabled ]</a>[% END %]
[% END %]
[% IF story.is_future && !user.is_admin %]<p>See any serious problems with this story?
[% IF constants.ircslash_remarks %]
Paste a short message here (if it's a dupe, the URL would be great)
<form action="[% gSkin.rootdir %]/index.pl" method="post">
<input type="text" name="remark" size="20" maxlength="100">
<input type="hidden" name="sid" value="[% story.sid | strip_attribute %]" >
</form>
or email
[% ELSE %]
[% END %]
<a href="mailto:[% constants.adminmail %]?subject=[DP]%20[% story.title | strip_paramattr_nonhttp %]">our on-duty editor</a>.
[% END %]
[% IF full && story.bodytext %]
<div class="full">
[% story.bodytext | apply_rehash_tags %]
</div>
[% END %]
</div>
</div>
[% ELSIF dispmode == "brief" %]
[% IF story.is_future %]<div class="future">[% END %]
<div class="briefarticle">
[% storylink = Slash.linkStory ({
sid => story.sid,
link => story.title,
tid => story.tid
skin => story.primaryskid
}, 1 );
%]
[% title = ''; IF magic;
thisskin = Slash.db.getSkin(story.primaryskid);
IF thisskin.rootdir;
title = "<a href=\"$thisskin.rootdir/\">";
ELSE;
IF user.is_anon;
title = "<a href=\"$gSkin.rootdir/$thisskin.name/\">";
ELSE;
title = "<a href=\"$gSkin.rootdir/index.pl?section=$story.primaryskid\">";
END;
END;
title = "<span class=\"section\">" _ title _ thisskin.title _ "</a></span>: ";
END;
title = title _ "<span class=\"storytitle\"><a href=\"$thisskin.rootdir/article.pl?sid=$story.sid\">$story.title</a></span>";
%]
[% title %] [% IF story.commentcount %][% story.commentcount %] comment[% IF story.commentcount > 1 %]s[% END %][% END %]
[% IF user.is_admin %]<a href="[% gSkin.rootdir -%]/admin.pl?op=edit&sid=[% story.sid %]">(edit)</a>[% END %]
[% IF getintro %]
<div class="introhide" id="intro-[% story.stoid %]">
[% story.introtext | apply_rehash_tags %]
</div>
[% END %]
</div>
[% IF story.is_future %]</div>[% END %]
[% END %]
Read more of this story at Dev.SN.
]]>Here is a summary of the problems that have been reported against SoylentNews and that have been addressed in the release labelled: "December 2017"
Issue: #279 "Add min karma for the journals slashbox"
PROBLEM:
Accounts signing up then posting commercial spam Journal entries in order to appear on most user's view of the main SN site, within the Most Recent Journal Entries box. Whilst offering zero other contribution to the community.SOLUTION:
A. Most Recent Journal Entries only to be populated with Journal entries by accounts with a Karma > N. 5 to be the initial value for N (that would hide all currently seen Journal spam from view), but should be an easily tweaked parameter should we need to revisit this threshold).B. Addition of a link to "Unfiltered Most Recent Journal Entries" to be added to the bottom of the Most Recent Journal Entries rehashbox so users can easily compare the filtered to unfiltered lists.
ADDENDUM:
This change will need to be clearly announced and rationale explained. We will also need to monitor effectiveness in case spam accounts begin to farm Karma in order to route around this change.
Issue: #410: Spoiler tag doesn't work on Journal comments.pl
Issue: #281: Request: increase size of submission/story notes
It seems to be limited to 1024 characters. How about 8192 or 16384 characters?
Don't accidentally delete the notes!
Need to update stories and submissions tables to set the notes and comments columns to text (from varchar(1023). Then need to update all of the templates to change the maxsize attribute.
Issue: #309: Link to submission queue on side bar
Appears as a link to "https://dev.soylentnews.org/submit.pl?op=list" with link text "Subs Queue"
Issue: #413: Margins of lists are sometimes non-existent despite use of line breaks
https://soylentnews.org/comments.pl?noupdate=1&sid=22853&page=1&cid=604019#commentwrap
The margin-top or especially margin-bottom of lists does not always work as expected. See the above comment. There should be a line break between "IV" and "I believe these moderations would be extremely popular."
The spacing (margins) does not match what is seen in the "Preview Comment".
https://dev.soylentnews.org/comments.pl?sid=1401
Also <ol type="I"> is not implemented on dev.soylentnews.org
Issue: #402: Comments with no apparent subject using a unicode space
Chromas used a unicode space or zero-width space character to make a comment with no apparent subject. When you get a Message about receiving the comment, the CID is not clickable like it normally would be.
https://soylentnews.org/comments.pl?noupdate=1&sid=21276&page=1&cid=559159#commentwrap
Read more of this story at Dev.SN.
]]>some more.
Read more of this story at Dev.SN.
]]>Research has shown that smartphone sensors leave trackable fingerprints. Due to imperfections in the hardware manufacturing process, it is possible to distinguish different devices just from sensor data.
The researchers tested more than 100 devices over the course of nine months: 80 standalone accelerometer chips used in popular smartphones, 25 Android phones and two tablets.
The accelerometers in all permutations were selected from different manufacturers, to ensure that the fingerprints weren't simply defects resulting from a particular production line.
With 96-percent accuracy, the researchers could discriminate one sensor from another.
"We do not need to know any other information about the phone—no phone number or SIM card number," Dey said. "Just by looking at the data, we can tell you which device it's coming from. It's almost like another identifier."
Maybe this explains why Facebook would be interested in a fitness app.
Read more of this story at Dev.SN.
]]>Story posted to the meta section.
This is the second paragraph
This is the third, and last, paragraph.
Read more of this story at Dev.SN.
]]>Here's some text for the submission
Read more of this story at Dev.SN.
]]>some random text here. need to determine if getStoriesEssentials is behaving correctly.
Read more of this story at Dev.SN.
]]>SpallsHurgenson dropped a link in IRC.Apparently, an imgr user was uploaded 142 behind the sceenes photos of minitures frm blade runner. A massive gallery of behind-the-scenes Blade Runner slides has been uploaded to the internet, revealing a teeny, tiny world of space blimps and flying cars, all crafted with special care and beautiful attention to detail. Take a look at the dystopian miniatures, each tiny car hand painted with future dirt from riding clouds stuffed with future smug.
Read more of this story at Dev.SN.
]]>I have a theory that bug #85 https://github.com/SoylentNews/rehash/issues/85 might have something to do with a story which has a title which contains a character > U+007f
This story has the character ‘ before the word "prod" and the character ’ immediately after it. Those characters correspond to U+2018 and U+2019, respectively.
Will be interesting to see if this story gets e-mailed out okay.
NC: testing story edit. Test54
Read more of this story at Dev.SN.
]]>Read more of this story at Dev.SN.
]]>Subscription can either be bought, or gifted to anyone. From the feedback we got, $20 USD per year (approximately $1.66 USD per month) would roughly be the right "sweet spot" for people.
Read more of this story at Dev.SN.
]]>Read more of this story at Dev.SN.
]]>Here is a html-encoded smiley face ☺. It displays properly in the preview. I'm curious how it shows on the main page and in the rss/atom feeds though.
Read more of this story at Dev.SN.
]]>