BBC Options for News?

Started by gbsothere, September 21, 2009, 08:32:32 PM

Previous topic - Next topic

gbsothere

Just a note...   getting closer.   :D

Cue Joe Cocker:  "A Little Help From My Friends".

I'll check back in when it's running smoothly. 


My apologies, but I am taking a break from accepting PM requests for support.  If I am not currently assisting you, please do not ask as long as this notice is posted.  Thank you.

I Don't Want To Grow Old Alone


It has been proven that Steely Dan reduces the occurrence of road rage, according to an independent study.



A reminder about admin / ftp passwords etc.

Arantor

Are you going to make a mod out of this when you're done? It sounds like I might have some competition on my hands...

gbsothere

Quote from: Arantor on September 24, 2009, 08:09:38 PM
Are you going to make a mod out of this when you're done? It sounds like I might have some competition on my hands...


Oh, no, not me.    :D    I really am just an old man who's trying to run a forum.  I'll leave the mods up to you guys.

But, when all the ducks are in a row, if you guys want to split the post with the final info in it off into Tips And Tricks, maybe someone else will want to use it.   :)

My apologies, but I am taking a break from accepting PM requests for support.  If I am not currently assisting you, please do not ask as long as this notice is posted.  Thank you.

I Don't Want To Grow Old Alone


It has been proven that Steely Dan reduces the occurrence of road rage, according to an independent study.



A reminder about admin / ftp passwords etc.

Arantor

Well, if it's just a case of packaging I can arrange that for you (with your permission, of course) But let's get it working first :)

gbsothere

Quote from: Arantor on September 24, 2009, 08:17:43 PM
Well, if it's just a case of packaging I can arrange that for you (with your permission, of course) But let's get it working first :)


I have a friend who's been helping me with it today.  He's already working on a project of his own, but I'll ask if he's interested in presenting it as a mod.  If not, one of you mod authors please take it.  If it has my name on it, I'll have to mind the support thread.   :o

And we don't want that.   :D

My apologies, but I am taking a break from accepting PM requests for support.  If I am not currently assisting you, please do not ask as long as this notice is posted.  Thank you.

I Don't Want To Grow Old Alone


It has been proven that Steely Dan reduces the occurrence of road rage, according to an independent study.



A reminder about admin / ftp passwords etc.

Arantor

Pretty soon I'll have more mods that I am years old... but we'll see about it nearer the time.

gbsothere

Got it working for 2.x.  I'll post the code here in a bit; I'm just messing around with 1.1.0 to see why it's not working there....

:-\
My apologies, but I am taking a break from accepting PM requests for support.  If I am not currently assisting you, please do not ask as long as this notice is posted.  Thank you.

I Don't Want To Grow Old Alone


It has been proven that Steely Dan reduces the occurrence of road rage, according to an independent study.



A reminder about admin / ftp passwords etc.

Arantor

1.1 is a bit different in how it's built, but should be doable shortly enough. Let me know if there's anything I can do to help.

gbsothere

It's working for both, just a slight glitch in 1.1.10 to sort out.   :)

Are you going to want me to attach the files and/or post the coding here, or should I PM you that, so that you can check it out first?

My apologies, but I am taking a break from accepting PM requests for support.  If I am not currently assisting you, please do not ask as long as this notice is posted.  Thank you.

I Don't Want To Grow Old Alone


It has been proven that Steely Dan reduces the occurrence of road rage, according to an independent study.



A reminder about admin / ftp passwords etc.

Arantor

Please feel free to post it here - either myself or someone else can then package it. That said, I'd prefer whoever did package it also understood how it worked as there will invariably be questions from other users.

gbsothere

#50
First, let me address this, because it will become an issue if more people begin to embellish their News entry areas.  The News Fader, for as long as I've been using SMF, both 1.x and 2.x versions, has been notorious for constantly "resizing" if the text in one entry isn't the same number of lines as the text in another entry  When this happens, the News Fader field contracts and expands with each different-sized entry.  This causes page jumps.


Here is the fix for 1.1.10 (what it does is give a "fixed size" to the news entry field that you can customize to your own needs):

http://www.simplemachines.org/community/index.php?topic=308953.msg2049731#msg2049731


Here is the fix for RC1.2 (Boardindex.template.php):

Find:

smfNewsFadeToggle.addToggleImage("newsupshrink", "/collapse.gif", "/expand.gif");
      smfNewsFadeToggle.addTogglePanel("smfNewsFader");
   // ]]></script>
   <div class="tborder marginbottom">


Replace with:

smfNewsFadeToggle.addToggleImage("newsupshrink", "/collapse.gif", "/expand.gif");
      smfNewsFadeToggle.addTogglePanel("smfNewsFader");
   // ]]></script>
   <div class="tborder marginbottom" style="min-height:130px">



It's just an edit to the last line and, again, you can customize it.  (Thanks, jeza!)



Now..... as far as the News Drop down feature.  First, thank you so much, Arantor and thank you Kays for very patient, very wise advice.  And thank you, jeza (of SMF Arcade fame) for working out all the kinks and forcing Javascript into submission.
   :)





I will attach the two ManageNews.template.php files to this post (the first one being for 2.0 and the second one for 1.1.0 but here are the codes.  (They're working for me, and I hope they do for you.  I apologize for any weird white space that might make it difficult for you to find the string, at first.  I'm really no good at this.)

RC1.2 ManageNews.template.php

Find:

// Form for editing current news on the site.
function template_edit_news()
{
global $context, $settings, $options, $scripturl, $txt;

echo '


Add After:

<script language="JavaScript">
var box = "document.forms.postmodify.box1";
</script>
<script language="JavaScript" type="text/javascript" src="', $settings['default_theme_url'], '/scripts/editor.js"></script>';

echo '

<script language="javascript">
function getElements(x)
  {
box = 'document.forms.postmodify.box'   x;
  }
</script>


Find:

// Loop through all the current news items so you can edit/remove them.

Add Before:

echo '
<tr class="windowbg2">
<td colspan="3">';










// Start News Dropdown mod
loadLanguage('Post');
echo '
<script language="JavaScript" type="text/javascript"><!-- // --><!','[CDATA[
function bbc_highlight(something, mode)
{
something.style.backgroundImage = "url("   smf_images_url   (mode ? "/bbc/bbc_hoverbg.gif)" : "/bbc/bbc_bg.gif)");
}
// ]]', '></script>';

$context['bbc_tags'] = array(
'img' => array('code' => 'img', 'before' => '[img]', 'after' => '[/img]', 'description' => $txt['image']),
            'url' => array('code' => 'url', 'before' => '[url]', 'after' => '[/url]', 'description' => $txt['bbc_url']),
);

foreach ($context['bbc_tags'] as $image => $tag) {
echo '
<a href="javascript:void(0);" onclick="surroundText('', $tag['before'], '', '', $tag['after'], '', eval(box)); return false;">'.
'<img onmouseover="bbc_highlight(this, true);" onmouseout="if (window.bbc_highlight) bbc_highlight(this, false);" src="', $settings['images_url'], '/bbc/', $image, '.gif" align="bottom" width="23" height="22" alt="', $tag['description'], '" title="', $tag['description'], '" style="background-image: url(', $settings['images_url'], '/bbc/bbc_bg.gif); margin: 1px 2px 1px 1px;" /></a>';
}

// Begin font dropdown
echo '
<select onchange="surroundText('[font='   this.options[this.selectedIndex].value.toLowerCase()   ']', '[/font]', eval(box)); this.selectedIndex = 0; eval(box).focus(eval(box).caretPos);" style="margin-bottom: 1ex;">
<option value="" selected="selected">', $txt['font_face'], '</option>
<option value="courier">Courier</option>
<option value="arial">Arial</option>
<option value="arial black">Arial Black</option>
<option value="impact">Impact</option>
<option value="times new roman">Times New Roman</option>
<option value="georgia">Georgia</option>
<option value="andale mono">Andale Nono</option>
<option value="trebuchet ms">Trebuchet MS</option>
<option value="comic ms">Comic MS</option>
</select>';




echo '
<select onchange="surroundText('[color='   this.options[this.selectedIndex].value.toLowerCase()   ']', '[/color]', eval(box)); this.selectedIndex = 0; eval(box).focus(eval(box).caretPos);" style="margin-bottom: 1ex;">
<option value="" selected="selected">', $txt['change_color'], '</option>
<option value="black">', $txt['black'], '</option>
<option value="red">', $txt['red'], '</option>
<option value="yellow">', $txt['yellow'], '</option>
<option value="pink">', $txt['pink'], '</option>
<option value="green">', $txt['green'], '</option>
<option value="orange">', $txt['orange'], '</option>
<option value="purple">', $txt['purple'], '</option>
<option value="blue">', $txt['blue'], '</option>
<option value="beige">', $txt['beige'], '</option>
<option value="brown">', $txt['brown'], '</option>
<option value="teal">', $txt['teal'], '</option>
<option value="navy">', $txt['navy'], '</option>
<option value="maroon">', $txt['maroon'], '</option>
<option value="limeGreen">', $txt['lime_green'], '</option>
<option value="white">', $txt['white'], '</option>
</select>';

// Begin size dropdown
echo '
<select onchange="surroundText('[size='   this.options[this.selectedIndex].value.toLowerCase()   ']', '[/size]', eval(box)); this.selectedIndex = 0; eval(box).focus(eval(box));" style="margin-bottom: 1ex;">
<option value="" selected="selected">', $txt['font_size'], '</option>
<option value="1">8pt</option>
<option value="2">10pt</option>
<option value="3">12pt</option>
<option value="4">14pt</option>
<option value="5">18pt</option>
<option value="6">24pt</option>
<option value="7">36pt</option>
</select><br />';














echo '
</td></tr>
';

$count=0;



Find:

foreach ($context['admin_current_news'] as $admin_news)
echo '
<tr class="windowbg2">
<td align="center">
<div style="margin-bottom: 2ex;"><textarea rows="3" cols="65" id="box'.$count.'" name="news[]" style="width: 85%;" onfocus="getElements('.$count.')">', $admin_news['unparsed'], '</textarea></div>
</td><td align="left" valign="top">
<div style="overflow: auto; width: 100%; height: 10ex;">', $admin_news['parsed'], '</div>
</td><td align="center">
<input type="checkbox" name="remove[]" value="', $admin_news['id'], '" class="check" />
</td>
</tr>';
}


Replace with:

foreach ($context['admin_current_news'] as $admin_news){
$count  ;
echo '
<tr class="windowbg2">
<td align="center">
<div style="margin-bottom: 2ex;"><textarea rows="3" cols="65" id="box'.$count.'" name="news[]" style="width: 85%;" onfocus="getElements('.$count.')">', $admin_news['unparsed'], '</textarea></div>
</td><td align="left" valign="top">
<div style="overflow: auto; width: 100%; height: 10ex;">', $admin_news['parsed'], '</div>
</td><td align="center">
<input type="checkbox" name="remove[]" value="', $admin_news['id'], '" class="check" />
</td>
</tr>';
}



Find:

echo '
<tr class="windowbg2">
<td align="center">
<div id="moreNewsItems"></div><div id="moreNewsItems_link" style="display: none;"><a href="javascript:void(0);" onclick="addNewsItem(); return false;">', $txt['editnews_clickadd'], '</a></div>



Replace with:

echo '
<tr class="windowbg2">
<td align="center">
<div id="moreNewsItems"></div><div id="moreNewsItems_link" style="display: none;">';

$count++;
echo '
<a href="javascript:void(0);" onclick="addNewsItem(\'.$count.\'); return false;">', $txt['editnews_clickadd'], '</a></div>


Find:

function addNewsItem()
{
setOuterHTML(document.getElementById("moreNewsItems"), \'<div style="margin-bottom: 2ex;"><textarea rows="3" cols="65" name="news[]" style="width: 85%;"><\' + \'/textarea><\' + \'/div><div id="moreNewsItems"><\' + \'/div>\');
}


Replace with:

function addNewsItem()
{
setOuterHTML(document.getElementById("moreNewsItems"), \'<div style="margin-bottom: 2ex;"><textarea rows="3" cols="65" id="box',$count,'" name="news[]" style="width: 85%;" onfocus="getElements('.$count.')"><\' + \'/textarea>\');
document.getElementById("moreNewsItems_link").style.display = \'none\';
}






For 1.1.10 ManageNews.template.php

Find:

// Form for editing current news on the site.
function template_edit_news()
{
global $context, $settings, $options, $scripturl, $txt;

echo '



Add After:

<script language="JavaScript">
var box = "document.forms.postmodify.box1";
</script>
<script language="JavaScript" type="text/javascript" src="', $settings['default_theme_url'], '/scripts/editor.js"></script>';

echo '

<script language="javascript">
function getElements(x)
  {
box = 'document.forms.postmodify.box'   x;
  }
</script>


Find:

// Loop through all the current news items so you can edit/remove them.

Add Before:

echo '
<tr class="windowbg2">
<td colspan="3">';




// Start gbsothere Dropdown mod
loadLanguage('Post');
echo '
<script language="JavaScript" type="text/javascript"><!-- // --><!','[CDATA[
function bbc_highlight(something, mode)
{
something.style.backgroundImage = "url("   smf_images_url   (mode ? "/bbc/bbc_hoverbg.gif)" : "/bbc/bbc_bg.gif)");
}
// ]]', '></script>';

$context['bbc_tags'] = array(
'img' => array('code' => 'img', 'before' => '[img]', 'after' => '[/img]', 'description' => $txt['image']),
'url' => array('code' => 'url', 'before' => '[url]', 'after' => '[/url]', 'description' => $txt['bbc_url']),
'italicize' => array('code' => 'i', 'before' => '[i]', 'after' => '[/i]', 'description' => 'italics'),
'center' => array('code' => 'center', 'before' => '[center]', 'after' => '[/center]', 'description' => 'center'),
);

foreach ( $context['bbc_tags'] as $image => $tag) {
echo '
<a href="javascript:void(0);" onclick="surroundText('', $tag['before'], '', '', $tag['after'], '', eval(box)); return false;">'.
'<img onmouseover="bbc_highlight(this, true);" onmouseout="if (window.bbc_highlight) bbc_highlight(this, false);" src="', $settings['images_url'], '/bbc/', $image, '.gif" align="bottom" width="23" height="22" alt="', $tag['description'], '" title="', $tag['description'], '" style="background-image: url(', $settings['images_url'], '/bbc/bbc_bg.gif); margin: 1px 2px 1px 1px;" /></a>';
}

// Begin font dropdown
echo '
<select onchange="surroundText('[font='   this.options[this.selectedIndex].value.toLowerCase()   ']', '[/font]', eval(box)); this.selectedIndex = 0; eval(box).focus(eval(box).caretPos);" style="margin-bottom: 1ex;">
<option value="" selected="selected">', $txt['font_face'], '</option>
<option value="courier">Courier</option>
<option value="arial">Arial</option>
<option value="arial black">Arial Black</option>
<option value="impact">Impact</option>
<option value="times new roman">Times New Roman</option>
<option value="georgia">Georgia</option>
<option value="andale mono">Andale Nono</option>
<option value="trebuchet ms">Trebuchet MS</option>
<option value="comic ms">Comic MS</option>
</select>';




echo '
<select onchange="surroundText('[color='   this.options[this.selectedIndex].value.toLowerCase()   ']', '[/color]', eval(box)); this.selectedIndex = 0; eval(box).focus(eval(box).caretPos);" style="margin-bottom: 1ex;">
<option value="" selected="selected">', $txt['change_color'], '</option>
<option value="black">', $txt['black'], '</option>
<option value="red">', $txt['red'], '</option>
<option value="yellow">', $txt['yellow'], '</option>
<option value="pink">', $txt['pink'], '</option>
<option value="green">', $txt['green'], '</option>
<option value="orange">', $txt['orange'], '</option>
<option value="purple">', $txt['purple'], '</option>
<option value="blue">', $txt['blue'], '</option>
<option value="beige">', $txt['beige'], '</option>
<option value="brown">', $txt['brown'], '</option>
<option value="teal">', $txt['teal'], '</option>
<option value="navy">', $txt['navy'], '</option>
<option value="maroon">', $txt['maroon'], '</option>
<option value="limeGreen">', $txt['lime_green'], '</option>
<option value="white">', $txt['white'], '</option>
</select>';

// Begin size dropdown
echo '
<select onchange="surroundText('[size='   this.options[this.selectedIndex].value.toLowerCase()   ']', '[/size]', eval(box)); this.selectedIndex = 0; eval(box).focus(eval(box));" style="margin-bottom: 1ex;">
<option value="" selected="selected">', $txt['font_size'], '</option>
<option value="1">8pt</option>
<option value="2">10pt</option>
<option value="3">12pt</option>
<option value="4">14pt</option>
<option value="5">18pt</option>
<option value="6">24pt</option>
<option value="7">36pt</option>
</select><br />';














echo '
</td></tr>
';



Find:

foreach ($context['admin_current_news'] as $admin_news)
echo '
<tr class="windowbg2">
<td align="center">
<div style="margin-bottom: 2ex;"><textarea rows="3" cols="65" name="news[]" style="width: 85%;">', $admin_news['unparsed'], '</textarea></div>
</td><td align="left" valign="top">
<div style="overflow: auto; width: 100%; height: 10ex;">', $admin_news['parsed'], '</div>
</td><td align="center">
<input type="checkbox" name="remove[]" value="', $admin_news['id'], '" class="check" />
</td>
</tr>';



Replace with:

foreach ($context['admin_current_news'] as $admin_news){
$count++;
echo '
<tr class="windowbg2">
<td align="center">
<div style="margin-bottom: 2ex;"><textarea rows="3" cols="65" id="box'.$count.'" name="news[]" style="width: 85%;" onfocus="getElements('.$count.')">', $admin_news['unparsed'], '</textarea></div>
</td><td align="left" valign="top">
<div style="overflow: auto; width: 100%; height: 10ex;">', $admin_news['parsed'], '</div>
</td><td align="center">
<input type="checkbox" name="remove[]" value="', $admin_news['id'], '" class="check" />
</td>
</tr>';
}



Find:

echo '
<tr class="windowbg2">
<td align="center">
<div id="moreNewsItems"></div><div id="moreNewsItems_link" style="display: none;"><a href="javascript:void(0);" onclick="addNewsItem(); return false;">', $txt['editnews_clickadd'], '</a></div>
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
document.getElementById("moreNewsItems_link").style.display = "";

function addNewsItem()
{
setOuterHTML(document.getElementById("moreNewsItems"), \'<div style="margin-bottom: 2ex;"><textarea rows="3" cols="65" name="news[]" style="width: 85%;"></textarea></div><div id="moreNewsItems"></div>\');
}



Replace with:

echo '
<tr class="windowbg2">
<td align="center">
<div id="moreNewsItems"></div><div id="moreNewsItems_link" style="display: none;">';

$count++;
echo '
<a href="javascript:void(0);" onclick="addNewsItem(\'.$count.\'); return false;">', $txt['editnews_clickadd'], '</a></div>
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
document.getElementById("moreNewsItems_link").style.display = "";

function addNewsItem()
{
setOuterHTML(document.getElementById("moreNewsItems"), \'<div style="margin-bottom: 2ex;"><textarea rows="3" cols="65" id="box',$count,'" name="news[]" style="width: 85%;" onfocus="getElements('.$count.')"><\' + \'/textarea>\');
document.getElementById("moreNewsItems_link").style.display = \'none\';
}


Find:

function addNewsItem()
{
setOuterHTML(document.getElementById("moreNewsItems"), \'<div style="margin-bottom: 2ex;"><textarea rows="3" cols="65" name="news[]" style="width: 85%;"></textarea></div><div id="moreNewsItems"></div>\');
}



Replace with:

function addNewsItem()
{
setOuterHTML(document.getElementById("moreNewsItems"), \'<div style="margin-bottom: 2ex;"><textarea rows="3" cols="65" id="box',$count,'" name="news[]" style="width: 85%;" onfocus="getElements('.$count.')"><\' + \'/textarea>\');
document.getElementById("moreNewsItems_link").style.display = \'none\';
}



Find:

</noscript>
</td>
<td colspan="2" valign="bottom" align="right" style="padding: 1ex;">
<input type="submit" name="save_items" value="', $txt[10], '" /> <input type="submit" name="delete_selection" value="', $txt['editnews_remove_selected'], '" onclick="return confirm(\'', $txt['editnews_remove_confirm'], '\');" />
</td>
</tr>
</table>
<input type="hidden" name="sc" value="', $context['session_id'], '" />
</form>';
}



Replace with:

<noscript>
<div style="margin-bottom: 2ex;"><textarea rows="3" cols="65" style="width: 85%;" name="news[]"></textarea></div>
</noscript>
</td>
<td colspan="2" valign="bottom" align="right" style="padding: 1ex;">
<input type="submit" name="save_items" value="', $txt['save'], '" /> <input type="submit" name="delete_selection" value="', $txt['editnews_remove_selected'], '" onclick="return confirm(\'', $txt['editnews_remove_confirm'], '\');" />
</td>
</tr>
</table>
<input type="hidden" name="sc" value="', $context['session_id'], '" />
</form>';
}




And.....  although most of it is redundant, I went ahead and added this to 1.1.0's Themes/default/languages/Post.english.php

Find:


?>



Add before:

// Strings for News Dropdown
$txt['font_size'] = 'Font Size';
$txt['font_face'] = 'Font Face';
$txt['image'] = 'Insert Image';
$txt['bbc_url'] = 'Insert URL';
$txt['change_color'] = 'Change Color';
$txt['black'] = 'Black';
$txt['red'] = 'Red';
$txt['yellow'] = 'Yellow';
$txt['pink'] = 'Pink';
$txt['green'] = 'Green';
$txt['orange'] = 'Orange';
$txt['purple'] = 'Purple';
$txt['blue'] = 'Blue';
$txt['beige'] = 'Beige';
$txt['brown'] = 'Brown';
$txt['teal'] = 'Teal';
$txt['navy'] = 'Navy';
$txt['maroon'] = 'Maroon';
$txt['lime_green'] = 'Lime Green';
$txt['white'] = 'White';
$txt['save'] = 'Save';
$txt['url'] = 'URL';

//End Strings for News Dropdown






There it is, Arantor.  I hope the codes aren't too hard to find.  As we all know, I'm not good at this.

Thank you again, and thank you, Kays and "jeza the Wizard" for all your help.


:)


Edit:  Right now, in 1.1.10, you must save one entry before the "Click to add another item" link reappears for a new one.  Also, make sure your cursor is in the new box before clicking a BBCode button.
My apologies, but I am taking a break from accepting PM requests for support.  If I am not currently assisting you, please do not ask as long as this notice is posted.  Thank you.

I Don't Want To Grow Old Alone


It has been proven that Steely Dan reduces the occurrence of road rage, according to an independent study.



A reminder about admin / ftp passwords etc.

Arantor

Looks real good :)

If you're fine with me packaging it up, I'll take a look at doing that tonight or tomorrow since there is a fair amount of editing going on, and possibly some of it can be condensed, for example rather than readding the language strings, I'd look at loading the relevant language file instead - keeps it easier for those who use multi language forums.

gbsothere

I'm not only grateful to turn it over to you, I'm relieved!  If someone were to run into a problem and ask me a technical question, I'd just blink at them.   :D

I was so worried that I would miss something in showing the coding, that I'm sure I included huge blocks that didn't need to be part of the "find and add".  It was just too easy to do a "replace with". 

Thank you so much for taking it over!  I have it working on all my forums, so I'm very happy but someone else might find it useful and a packaged mod would be far less complicated that all this song and dance I posted. 

Thanks!   :)
My apologies, but I am taking a break from accepting PM requests for support.  If I am not currently assisting you, please do not ask as long as this notice is posted.  Thank you.

I Don't Want To Grow Old Alone


It has been proven that Steely Dan reduces the occurrence of road rage, according to an independent study.



A reminder about admin / ftp passwords etc.

Kays

I'm glad to see that you've finally got something working that you're happy with. :)

If at first you don't succeed, use a bigger hammer. If that fails, read the manual.
My Mods

gbsothere

Quote from: Kays on September 26, 2009, 11:05:42 AM
I'm glad to see that you've finally got something working that you're happy with. :)


I kept reading everyone's advice out loud, so it would sink in.   :D  Thank you, Kays!
My apologies, but I am taking a break from accepting PM requests for support.  If I am not currently assisting you, please do not ask as long as this notice is posted.  Thank you.

I Don't Want To Grow Old Alone


It has been proven that Steely Dan reduces the occurrence of road rage, according to an independent study.



A reminder about admin / ftp passwords etc.

gbsothere

I reattached a new file (the last one) for 1.1.10, making it no longer necessary to have to save one entry before having the option to add a new one.  (Thanks, again, jeza.)

My apologies, but I am taking a break from accepting PM requests for support.  If I am not currently assisting you, please do not ask as long as this notice is posted.  Thank you.

I Don't Want To Grow Old Alone


It has been proven that Steely Dan reduces the occurrence of road rage, according to an independent study.



A reminder about admin / ftp passwords etc.

Advertisement: