CssWork
Related pages
- FileLocations Locations of important files on disk
- AvailableThemes and how they are organized
- CssFilesUsedEachPage Which css files are used on different pages
Order css files are loaded when simple switch on user prefs page is selected viewing main page main page
- base.css?T_2_5_0_272
- slashcode.css?T_2_5__0_272
- slashcode_lite.css?T_2_5__0_272
- slashcode_lite.css?T_2_5__0_272 (appears to be loading this twice,why?)
- print.cssT_2_5__0_272
Follow a page link from the main page to an individual article page
- Link: http://soylentnews.org/article.pl?sid=14/02/18/0336229
- article.pl is foind in slash/themes/slashcode/htdocs/article.pl So 'slashcode' is treated as a theme.
article.pl
The stuff of interest to us
use Slash; -------- located in /local/lib64/perl5/slash.pm use Slash::Display; use Slash::Utility; sub main { my $slashdb = getCurrentDB(); my $constants = getCurrentStatic(); my $user = getCurrentUser(); my $form = getCurrentForm(); my $gSkin = getCurrentSkin(); my $story; my $reader = getObject('Slash::DB', { db_type => 'reader' }); # Make sure the reader is viewing this story in the # proper skin. my $cur_skid = determineCurrentSkin(); if ($story->{primaryskid} != $cur_skid) { my $cur_skin = $reader->getSkin($cur_skid); my $story_skin = $reader->getSkin($story->{primaryskid}); if ($story_skin && $story_skin->{rootdir} && $story_skin->{rootdir} ne $cur_skin->{rootdir})$ redirect("$story_skin->{rootdir}$ENV{REQUEST_URI}"$ return; # XXXSECTIONTOPICS this needs to be updated my $SECT = $reader->getSection($story->{section}); # This should be a getData call for title my $title = "$constants->{sitename} | $story->{title}"; if ($gSkin->{name} && $gSkin->{name} eq "idle") { $title = "$gSkin->{hostname} | $story->{title}"; if (my $pollbooth_db = getObject('Slash::PollBooth')) { slashDisplay('display', { poll => $pollbooth, section => $SECT, section_block => $reader->getBlock($SECT->{secti$ show_poll => $pollbooth ? 1 : 0, story => $story, stories => \%stories, }); my $called_pc = 0; if ($story->{discussion}) { # Still not happy with this logic -Brian my $discussion = $reader->getDiscussion($story->{discussio$ } # If no comments ever have existed and commentstatus is di$ # just skip the display of the comment header bar -Brian && $discussion->{commentstatus} eq 'disabled' )) { printComments($discussion); $called_pc = 1; } if (!$called_pc && $form->{ssi} && $form->{ssi} eq 'yes' && $form-$ # This is a real hack, we're kind of skipping down # two levels of code. But the cchp printing is an # important optimization; we avoid having to do # multiple expensive comment selects. One problem # is that if there's no discussion with a story, # printComments() doesn't get called, which means # selectComments() doesn't get called, which means # the cchp file won't be written. If article.pl # is being called by slashd, and we need to write # that file, then here's where we print an empty # file that will satisfy slashd. - Jamie Slash::Utility::Comments::_print_cchp({ stoid => "dummy" }$ } } else { header('Error', $form->{section}) or return; my $plugins = $slashdb->getDescriptions('plugins'); if (!$user->{is_anon} && $plugins->{Tags} && $story) { my $tagsdb = getObject('Slash::Tags'); $tagsdb->markViewed($user->{uid}, $reader->getGlobjidCreate('stories', $story->{stoid})); } footer(); if ($story) { writeLog($story->{sid} || $sid); } else { writeLog($sid); createEnvironment(); main(); 1; (EOF)
Slash.pm
in /usr/local/lib64/perl5/
in root@mike2 perl5 # grep '^sub' Slash.pm sub dispStory { sub displayStory { sub displayRelatedStories { sub getOlderStories { sub getOlderDays { sub getOlderDaysFromDay { sub getData { sub _dataCacheRefresh {
display.pm
In local/lib64/slash/display.pm
root@mike2 Slash # grep '^sub' Display.pm sub slashDisplay { sub slashDisplayName { sub get_template { sub _ref { ref $_[0] } sub tempWarn {
Slash/DB/MySQL/MySQL.pm
479 sub getCSS { 480 my($self, $layout) = @_; 481 my $user = getCurrentUser(); 482 my $page = $user->{currentPage}; 483 my $skin = getCurrentSkin('name'); 484 my $admin = $user->{is_admin}; 485 my $theme = ($user->{simpledesign} || $user->{pda}) ? "light" : $user->{css_theme}; 486 my $secure = apacheConnectionSSL(); 487 $layout ||= ''; 488 my $constants = getCurrentStatic(); 489 490 my $expire_time = $constants->{css_expire} || 3600; 491 $expire_time += int(rand(60)) if $expire_time; 492 _genericCacheRefresh($self, 'css', $expire_time); 493 _genericCacheRefresh($self, 'css_pages', $expire_time); 494 _genericCacheRefresh($self, 'css_skins', $expire_time); 495 _genericCacheRefresh($self, 'css_themes', $expire_time); 496 497 my $css_ref = $self->{_css_cache} ||= {}; 498 my $css_pages_ref = $self->{_css_pages_cache}; 499 my $css_skins_ref = $self->{_css_skins_cache}; 500 my $css_themes_ref = $self->{_css_themes_cache}; 501 my $css_layouts_ref = $self->{_css_layouts_cache}; 502 503 $css_pages_ref = $self->getCSSValuesHashForCol('page') if !$css_pages_ref; 504 $css_skins_ref = $self->getCSSValuesHashForCol('skin') if !$css_skins_ref; 505 $css_themes_ref = $self->getCSSValuesHashForCol('theme') if !$css_themes_ref; 506 $css_layouts_ref = $self->getCSSValuesHashForCol('layout') if !$css_layouts_ref; 507 508 my $lowbandwidth = ($user->{lowbandwidth} || $user->{pda}) ? "yes" : "no"; 509 510 $page = '' if !$css_pages_ref->{$page}; 511 $skin = '' if !$css_skins_ref->{$skin}; 512 $theme = '' if !$css_themes_ref->{$theme}; 513 $layout = '' if !$css_layouts_ref->{$layout}; 514 515 return $css_ref->{$skin}{$page}{$admin}{$theme}{$lowbandwidth}{$layout}{$secure} 516 if exists $css_ref->{$skin}{$page}{$admin}{$theme}{$lowbandwidth}{$layout}{$secure}; 517 518 my @clauses; 519 520 my $page_q = $self->sqlQuote($page); 521 my $page_in = $page ? "(page = '' or page = $page_q)" : "page = ''"; 522 push @clauses, $page_in; 523 524 my $skin_in = $skin ? "(skin = '' or skin = '$skin')" : "skin = ''"; 525 push @clauses, $skin_in; 526 527 push @clauses, "admin='no'" if !$admin; 528 529 my $theme_q = $self->sqlQuote($theme); 530 my $theme_in = $theme ? "(theme='' or theme=$theme_q)" : "theme=''"; 531 push @clauses, $theme_in; 532 533 push @clauses, "lowbandwidth='$lowbandwidth'" if $lowbandwidth eq "no"; 534 535 my $layout_q = $self->sqlQuote($layout); 536 push @clauses, "layout=$layout_q"; 537 538 my $where = "css.ctid=css_type.ctid AND "; 539 $where .= join ' AND ', @clauses; 540 541 my $css = $self->sqlSelectAllHashrefArray("rel,type,media,file,title,ie_cond,skin", 542 "css, css_type", $where, "ORDER BY css_type.ordernum, css.ordernum"); 543 if ($secure) { 544 for my $hr (@$css) { $hr->{file} =~ s/\.css/.ssl.css/ } 545 } 546 547 $css_ref->{$skin}{$page}{$admin}{$theme}{$lowbandwidth}{$layout}{$secure} = $css; 548 return $css; 549 } 550
more stuff in local/lib64/slash
Apache.pm:sub SlashVirtualUser ($$$) { Apache.pm:sub SlashSetVar ($$$$) { Apache.pm:sub SlashSetForm ($$$$) { Apache.pm:sub SlashCompileTemplates ($$$) { Apache.pm:sub ProxyRemoteAddr ($) { Apache.pm:sub ConnectionIsSSL { Apache.pm:sub ConnectionIsSecure { Apache.pm:sub IndexHandler { Apache.pm:sub DESTROY { } Client.pm:sub new { Client.pm:sub soap { Client.pm:sub find_cookie_file { Client.pm:sub bakeUserCookie { Client.pm:sub literal { Client.pm:sub fixparam { Constants.pm:sub constants { DB.pm:sub new { DB.pm:sub isInstalled { DB.pm:sub init { DB.pm:sub DESTROY { Display.pm:sub slashDisplay { Display.pm:sub slashDisplayName { Display.pm:sub get_template { Display.pm:sub _ref { ref $_[0] } Display.pm:sub tempWarn { Hook.pm:sub slashHook { Install.pm:sub new { Install.pm:sub create { Install.pm:sub delete { Install.pm:sub deleteByID { Install.pm:sub get { Install.pm:sub exists { Install.pm:sub getValue { Install.pm:sub getByID { Install.pm:sub readTemplateFile { Install.pm:sub writeTemplateFile { Install.pm:sub installTheme { Install.pm:sub installThemes { Install.pm:sub installPlugin { Install.pm:sub installPlugins { Install.pm:sub installTagbox { Install.pm:sub installTagboxes { Install.pm:sub _munge_line { Install.pm:sub _process_fh_into_sql { Install.pm:sub _install { Install.pm:sub getPluginList { Install.pm:sub getThemeList { Install.pm:sub getTagboxList { Install.pm:sub getSiteTemplates { Install.pm:sub _parseFilesForTemplates { Install.pm:sub _getList { Install.pm:sub setListOrder { Install.pm:sub setListInstallOrder { Install.pm:sub reloadArmors { Plugin.pm:sub isInstalled { Slashboxes.pm:sub getUserSlashboxes { Slashboxes.pm:sub displaySlashboxes { Test.pm:sub import { Test.pm:sub slashTest { Test.pm:sub Display { Test.pm:sub Test { Test.pm:sub _getTemplate { Tools.pm:sub import { Tools.pm:sub syntax_check { Tools.pm:sub basefile { Tools.pm:sub srcfile { Tools.pm:sub installfile { Tools.pm:sub counterpart { Tools.pm:sub _getpackage { Tools.pm:sub pathpm { Tools.pm:sub pmpathsrc { Tools.pm:sub pmpath { Tools.pm:sub myprint { Tools.pm:sub myexit { Tools.pm:sub myask { Tools.pm:sub mysystem { Tools.pm:sub new { Tools.pm:sub front { Tools.pm:sub frontpath { Tools.pm:sub output { Tools.pm:sub file { Tools.pm:sub do_prep { Tools.pm:sub do { Tools.pm:sub gitdiff { Tools.pm:sub diff { Tools.pm:sub new { Tools.pm:sub set_type { XML.pm:sub xmlDisplay { XML.pm:sub date2iso8601 { XML.pm:sub encode {
Slash/Apache/User/User.pm
548 { 549 my %ops_my = ( 550 inbox => { args => 'op=list', uri => 'messages.pl' }, 551 # XXX change messages to be same as /inbox, move this to /my/preferences/messages 552 messages => { args => 'op=display_prefs', uri => 'messages.pl' }, 553 comments => { args => 'op=editcomm' }, 554 homepage => { args => 'op=edithome' }, 555 password => { args => 'op=changeprefs', uri => 'login.pl' }, 556 logout => { args => 'op=userclose', uri => 'login.pl' }, 557 misc => { args => 'op=editmiscopts' }, 558 amigos => { args => 'op=friendview', uri => 'journal.pl' }, 559 bookmarks => { args => 'op=showbookmarks' }, 560 firehose => { args => 'op=userfirehose' }, 561 preferences => { args => 'op=displayprefs', uri => 'preferences.pl' }, 562 tags => { args => 'op=showtags' }, 563 journal => { args => 'op=list', uri => 'journal.pl' }, 564 565 friends => { args => 'op=friends', uri => 'zoo.pl' }, 566 fans => { args => 'op=fans', uri => 'zoo.pl' }, 567 freaks => { args => 'op=freaks', uri => 'zoo.pl' }, 568 foes => { args => 'op=foes', uri => 'zoo.pl' }, 569 zoo => { args => 'op=all', uri => 'zoo.pl' }, 570 571 default => { args => 'op=edituser' } 572 );
sql/mysql/defaults.sql
134 INSERT INTO css (rel, type, media, file, title, skin, page, admin, theme, ctid, ordernum, ie_cond, lowbandwidth) VALUES ('stylesheet','text/css','screen, projection','base.css','','','','no','',1,0, "","no"); 135 INSERT INTO css (rel, type, media, file, title, skin, page, admin, theme, ctid, ordernum, ie_cond, lowbandwidth) VALUES ('stylesheet','text/css','screen, projection','comments.css','','','comments','no','',2,0, "","no"); 136 INSERT INTO css (rel, type, media, file, title, skin, page, admin, theme, ctid, ordernum, ie_cond, lowbandwidth) VALUES ('stylesheet','text/css','screen, projection','comments.css','','','article','no','',2,0, "","no"); 137 INSERT INTO css (rel, type, media, file, title, skin, page, admin, theme, ctid, ordernum, ie_cond, lowbandwidth) VALUES ('stylesheet','text/css','print','print.css','','','','no','',5,0, "","no"); 138 INSERT INTO css (rel, type, media, file, title, skin, page, admin, theme, ctid, ordernum, ie_cond, lowbandwidth) VALUES ('stylesheet','text/css','screen, projection','admin.css','','','','yes','',1,0, "","no"); 139 INSERT INTO css (rel, type, media, file, title, skin, page, admin, theme, ctid, ordernum, ie_cond, lowbandwidth) VALUES ('stylesheet','text/css','screen, projection','comments.css','','','pollBooth','no','',2,0, "","no"); 140 INSERT INTO css (rel, type, media, file, title, skin, page, admin, theme, ctid, ordernum, ie_cond, lowbandwidth) VALUES ('stylesheet','text/css','screen, projection','slashcode_lite.css','','','','no','light',4,0, "","no"); 141 INSERT INTO css (rel, type, media, file, title, skin, page, admin, theme, ctid, ordernum, ie_cond, lowbandwidth) VALUES ('stylesheet','text/css','screen, projection','comments.css','','','journal','no','',2,0, "","no"); 142 INSERT INTO css (rel, type, media, file, title, skin, page, admin, theme, ctid, ordernum, ie_cond, lowbandwidth) VALUES ('stylesheet','text/css','screen, projection','slashcode_lite.css','','','','no','light',4,0, "","no"); 143 INSERT INTO css (rel, type, media, file, title, skin, page, admin, theme, ctid, ordernum, ie_cond, lowbandwidth) VALUES ('stylesheet','text/css','screen, projection','comments.css','','','journal','no','',2,0, "","no"); 144 INSERT INTO css (rel, type, media, file, title, skin, page, admin, theme, ctid, ordernum, ie_cond, lowbandwidth) VALUES ('stylesheet','text/css','screen, projection','slashcode.css','','','','no','',3,0, "","no"); 145 INSERT INTO css (rel, type, media, file, title, skin, page, admin, theme, ctid, ordernum, ie_cond, lowbandwidth) VALUES ('stylesheet','text/css','screen, projection','comments.css','','','metamod','no','',2,0, "","no"); 146 INSERT INTO css (rel, type, media, file, title, skin, page, admin, theme, ctid, ordernum, ie_cond, lowbandwidth) VALUES ('stylesheet','text/css','screen, projection','slashcode_low_bw.css','','','','no','',4,99, "","yes"); 147 148 # 149 # Dumping data for table 'css_type' 150 # 151 INSERT INTO css_type (ctid, name, ordernum) VALUES (1,'base',1); 152 INSERT INTO css_type (ctid, name, ordernum) VALUES (2,'page',2); 153 INSERT INTO css_type (ctid, name, ordernum) VALUES (3,'theme',3); 154 INSERT INTO css_type (ctid, name, ordernum) VALUES (4,'user_theme',5); 155 INSERT INTO css_type (ctid, name, ordernum) VALUES (5,'print',6); 156 INSERT INTO css_type (ctid, name, ordernum) VALUES (6,'skin',4); 157 INSERT INTO css_type (ctid, name, ordernum) VALUES (7,'handheld',7); 158