Difference between revisions of "Hierarchy"

From Dreamwidth Notes
Jump to: navigation, search
m (Layout Functions)
(Added source wiki formatting and miracles occurred.)
Line 21: Line 21:
 
:Entry
 
:Entry
  
=== Explanation of View-Related Functions ===
+
=== Functions ===
  
Paste this in tomorrow.
+
For the purposes of this explanation, Views refers to the actual pages that you use to read your DWJ, your Reading Page, Archive.
  
=== Page View ===
+
To get a complete explanation of a function, go the wikipedia route.  So we'll start assuming this is already a familiar concept and go on from there.
  
Page is the center of core2 designChanges to anything in a Page function affects all layouts unless they are edited separately. Below is a list of all functions and properties associated with Page.
+
There are three types of functions: simple functions, methods of a class, and builtinBuiltin, or call functions, are built into the backend and cannot be edited by the user.
 +
 
 +
Example:
 +
    function print_userpic()
 +
 
 +
Methods of a class are functions that are declared in a class for the purposes of calling on class properties.
 +
 
 +
Example:
 +
    function Image::as_string(string{} opts) [fixed] : string
 +
 
 +
=== Page View ===
  
In each function associated with View, there's a function View::xfunction. This is to tell xfunction what View it is affecting.
+
Class Page is the center of core2 design.  Changes to anything in a Class Page function affects all views unless they are edited separately. Below is a list of all functions and properties directly associated with the Page class.
  
 
==== Page View Functions ====
 
==== Page View Functions ====
Line 37: Line 47:
 
This adds CSS to all layouts in your theme.
 
This adds CSS to all layouts in your theme.
  
 +
<source lang="perl">
 
     function Page::print_default_stylesheet()
 
     function Page::print_default_stylesheet()
 
     {
 
     {
Line 44: Line 55:
 
     """</style>\n""";
 
     """</style>\n""";
 
     }
 
     }
 +
</source>
  
 
If you have specific CSS to code onto all themes using this layout, override print_default_stylesheet.  If you have specific CSS to code into this theme, set the external_stylesheet property or override the print_stylesheet function. An end user can choose to link to an off-site stylesheet using the linked_stylesheet property and/or use the custom_css property.  Overriding this function is NOT RECOMMENDED. Overriding this function could prevent sitewide improvements to styles, accessibility, or other functionality from operating in your layout.
 
If you have specific CSS to code onto all themes using this layout, override print_default_stylesheet.  If you have specific CSS to code into this theme, set the external_stylesheet property or override the print_stylesheet function. An end user can choose to link to an off-site stylesheet using the linked_stylesheet property and/or use the custom_css property.  Overriding this function is NOT RECOMMENDED. Overriding this function could prevent sitewide improvements to styles, accessibility, or other functionality from operating in your layout.
  
 +
<source lang="perl">
 
     function Page::print_stylesheets()
 
     function Page::print_stylesheets()
 
     {
 
     {
Line 75: Line 88:
 
     }
 
     }
 
     }
 
     }
 
+
</source>
  
  
 
===== Title Functions =====
 
===== Title Functions =====
  
Using standard CSS, print the journal title. If you want to change the way this looks, modify the CSS.
+
<source lang="perl">
 +
function Page::print_title()
 +
"Using standard CSS, print the page title. If you want to change the way this looks, modify the CSS."
 +
{
 +
    print """<h2 id="pagetitle"><span>""" + $this->view_title() + """</span></h2>\n""";
 +
}
 +
</source>
  
Removed until I fix the problem with global breaking the formatting.
+
<source lang="perl">
 +
function Page::print_head_title()
 +
"Using standard CSS, print the journal title. If you want to change the way this looks, modify the CSS."
 +
{
 +
    if ($this.journal.journal_type == "I") {
 +
        print """<title>""" + $this.journal.name + $*text_default_separator + $this->view_title() + """</title>\n""";
 +
    }
 +
    else {
 +
        print """<title>""" + $this.journal.username + $*text_default_separator + $this->view_title() + """</title>\n""";
 +
    }
 +
}
 +
</source>
 +
 
 +
<source lang="perl">
 +
function Page::print_global_title() {
 +
    if ($.global_title) {
 +
        """<h1 id="title"><span>""" + $.global_title + """</span></h1>""";
 +
    }
 +
}
 +
</source>
 +
 
 +
<source lang="perl">
 +
function Page::print_global_subtitle() {
 +
    if ($.global_subtitle) {
 +
        """<h2 id="subtitle"><span>""" + $.global_subtitle + """</span></h2>""";
 +
    }
 +
}
 +
</source>
 +
 
 +
<source lang="perl">
 +
function Page::view_title() [notags] : string {
 +
    return lang_viewname($.view);
 +
}
 +
</source>
 +
 
 +
<source lang="perl">
 +
function Page::title() [notags] : string {
 +
    return $this->view_title();
 +
}
 +
</source>
  
 
===== Wrapper Functions =====
 
===== Wrapper Functions =====
  
 +
<source lang="perl">
 
     function Page::print_wrapper_start()  
 
     function Page::print_wrapper_start()  
 
     {
 
     {
 
     $this->print_wrapper_start( { "" => "" } );
 
     $this->print_wrapper_start( { "" => "" } );
 
     }
 
     }
 +
</source>
  
 +
<source lang="perl">
 
     function Page::print_wrapper_start(string{} opts)  
 
     function Page::print_wrapper_start(string{} opts)  
 
     {
 
     {
Line 97: Line 158:
 
     """<body class="page-$.view $*layout_type $class">\n""";
 
     """<body class="page-$.view $*layout_type $class">\n""";
 
     }
 
     }
 +
</source>
  
 
"This function concludes the wrapper to the page.  Overriding this function is NOT RECOMMENDED. Overriding this function could prevent sitewide improvements to styles, accessibility, or other functionality from operating in your layout."
 
"This function concludes the wrapper to the page.  Overriding this function is NOT RECOMMENDED. Overriding this function could prevent sitewide improvements to styles, accessibility, or other functionality from operating in your layout."
  
 +
<source lang="perl">
 
     function Page::print_wrapper_end()  
 
     function Page::print_wrapper_end()  
 
     {
 
     {
 
     """</body>""";
 
     """</body>""";
 
     }
 
     }
 
+
</source>
 
      
 
      
 
===== Layout Functions =====
 
===== Layout Functions =====
Line 112: Line 175:
 
Note: Divs are breaking formatting.  Work out how to fix that.
 
Note: Divs are breaking formatting.  Work out how to fix that.
  
 +
<source lang="perl">
 
     function Page::print()
 
     function Page::print()
 
     {
 
     {
Line 158: Line 222:
 
     }
 
     }
  
    function Page::print_body()
+
</source>
    Add this back in when reason it breaks formatting is found.
+
  
     function Page::print_module_section ( string section_name ) {
+
 
 +
<source lang="perl">
 +
 
 +
<source lang="perl">
 +
  function Page::print_body() {
 +
    """<h2>No Default Renderer</h2><p>There is no body renderer for viewtype <tt>$.view</tt> defined.</p>""";
 +
}
 +
</source>
 +
 
 +
<source lang="perl">
 +
     function Page::print_module_section ( string section_name )  
 +
{
 
     """<div class="module-wrapper"><div class="separator separator-before"><div class="inner"></div></div>\n<div class="module-section-$section_name">\n<div class="inner">""";
 
     """<div class="module-wrapper"><div class="separator separator-before"><div class="inner"></div></div>\n<div class="module-section-$section_name">\n<div class="inner">""";
 
     handle_module_group_array( $*module_sections{$section_name} );
 
     handle_module_group_array( $*module_sections{$section_name} );
 
     """</div>\n</div><div class="separator separator-after"><div class="inner"></div></div>\n</div>""";
 
     """</div>\n</div><div class="separator separator-after"><div class="inner"></div></div>\n</div>""";
 
     }
 
     }
 +
</source>
  
 
===== Date Functions =====
 
===== Date Functions =====
  
 +
<source lang="perl">
 
     function Page::print_time() {
 
     function Page::print_time() {
 
     $this->print_time("","");
 
     $this->print_time("","");
Line 180: Line 256:
 
         $timefmt = "short";
 
         $timefmt = "short";
 
     }
 
     }
 
 
     var string ret;
 
     var string ret;
 
     if ($datefmt != "none") { $ret = $ret + $this.local_time->date_format($datefmt); }
 
     if ($datefmt != "none") { $ret = $ret + $this.local_time->date_format($datefmt); }
Line 188: Line 263:
 
     print safe """<span id="load-time">$*text_generated_on $ret</span>""";
 
     print safe """<span id="load-time">$*text_generated_on $ret</span>""";
 
     }
 
     }
 +
</source>
  
 
===== Page Navigation Function =====
 
===== Page Navigation Function =====
  
 +
<source lang="perl">
 
     function Page::print_navigation() {}
 
     function Page::print_navigation() {}
 +
</source>
  
 
===== Head Functions =====
 
===== Head Functions =====
  
 +
<source lang="perl">
 
     function Page::print_head() {
 
     function Page::print_head() {
 
     print $.head_content;
 
     print $.head_content;
Line 222: Line 301:
 
     }
 
     }
 
     }
 
     }
 +
</source>
  
 
===== Print Entry =====
 
===== Print Entry =====
Line 227: Line 307:
 
This is how all the functions used for a basic layout fit together.  This function will affect how you see your Recent Entries, your Reading Page, and your individual entry page.
 
This is how all the functions used for a basic layout fit together.  This function will affect how you see your Recent Entries, your Reading Page, and your individual entry page.
  
 +
<source lang="perl">
 
     function Page::print_entry(Entry e)  
 
     function Page::print_entry(Entry e)  
 
     {
 
     {
Line 261: Line 342:
 
     $e->print_wrapper_end();
 
     $e->print_wrapper_end();
 
}
 
}
 +
</source>
  
 
==== Page View Properties ====
 
==== Page View Properties ====

Revision as of 03:35, 5 May 2009

There are three components to core2 styles: classes, properties, and functions. This will be a short overview of the hierarchy of the view-related functions and how they associate with each other.

Below are the tables of core2 functions associated with view. Each child is listed below and to the right of the parent.

Table of View-Related Functions

Page
TagsPage
MessagePage
RecentPage
FriendsPage
DayPage
YearPage
MonthPage
EntryPage
ReplyPage
MonthDay
YearWeek
Comment
CommentInfo
Entry

Functions

For the purposes of this explanation, Views refers to the actual pages that you use to read your DWJ, your Reading Page, Archive.

To get a complete explanation of a function, go the wikipedia route. So we'll start assuming this is already a familiar concept and go on from there.

There are three types of functions: simple functions, methods of a class, and builtin. Builtin, or call functions, are built into the backend and cannot be edited by the user.

Example:

   function print_userpic()

Methods of a class are functions that are declared in a class for the purposes of calling on class properties.

Example:

   function Image::as_string(string{} opts) [fixed] : string 

Page View

Class Page is the center of core2 design. Changes to anything in a Class Page function affects all views unless they are edited separately. Below is a list of all functions and properties directly associated with the Page class.

Page View Functions

CSS Functions

This adds CSS to all layouts in your theme.

    function Page::print_default_stylesheet()
    {
    """<style type="text/css">""";
    start_css();
    end_css();
    """</style>\n""";
    }

If you have specific CSS to code onto all themes using this layout, override print_default_stylesheet. If you have specific CSS to code into this theme, set the external_stylesheet property or override the print_stylesheet function. An end user can choose to link to an off-site stylesheet using the linked_stylesheet property and/or use the custom_css property. Overriding this function is NOT RECOMMENDED. Overriding this function could prevent sitewide improvements to styles, accessibility, or other functionality from operating in your layout.

    function Page::print_stylesheets()
    {
    if ($*include_default_stylesheet) {
        $this->print_default_stylesheet();
        if ($*external_stylesheet) {
            println safe """<link rel="stylesheet" href="$.stylesheet_url" type="text/css" />""";
        }
        else {
            println """<style type="text/css">""";
            start_css();
            print_stylesheet();
            end_css();
            println """</style>""";
        }
    }
 
    if ($*linked_stylesheet != "") {
        println safe """<link rel="stylesheet" href="$*linked_stylesheet" type="text/css" />""";
    }
 
    if ($*custom_css != "") {
        println """<style type="text/css">""";
        start_css();
        println safe $*custom_css;
        end_css();
        println """</style>""";
    }
    }


Title Functions
function Page::print_title() 
"Using standard CSS, print the page title. If you want to change the way this looks, modify the CSS."
{
    print """<h2 id="pagetitle"><span>""" + $this->view_title() + """</span></h2>\n""";
}
function Page::print_head_title() 
"Using standard CSS, print the journal title. If you want to change the way this looks, modify the CSS."
{
    if ($this.journal.journal_type == "I") {
        print """<title>""" + $this.journal.name + $*text_default_separator + $this->view_title() + """</title>\n""";
    }
    else {
        print """<title>""" + $this.journal.username + $*text_default_separator + $this->view_title() + """</title>\n""";
    }
}
function Page::print_global_title() {
    if ($.global_title) {
        """<h1 id="title"><span>""" + $.global_title + """</span></h1>""";
    }
}
function Page::print_global_subtitle() {
    if ($.global_subtitle) {
        """<h2 id="subtitle"><span>""" + $.global_subtitle + """</span></h2>""";
    }
}
function Page::view_title() [notags] : string {
    return lang_viewname($.view);
}
function Page::title() [notags] : string {
    return $this->view_title();
}
Wrapper Functions
    function Page::print_wrapper_start() 
    {
    $this->print_wrapper_start( { "" => "" } );
    }
    function Page::print_wrapper_start(string{} opts) 
    {
 
    var string class = $opts{"class"} ? """class="$opts{"class"}" """ : "";
    """<body class="page-$.view $*layout_type $class">\n""";
    }

"This function concludes the wrapper to the page. Overriding this function is NOT RECOMMENDED. Overriding this function could prevent sitewide improvements to styles, accessibility, or other functionality from operating in your layout."

    function Page::print_wrapper_end() 
    {
    """</body>""";
    }
Layout Functions

This is the layout of your entire dw journal.

Note: Divs are breaking formatting. Work out how to fix that.

    function Page::print()
    {
    """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\n
    <head profile="http://www.w3.org/2006/03/hcard http://purl.org/uF/hAtom/0.1/ http://gmpg.org/xfn/11">\n""";
    $this->print_head();
    $this->print_stylesheets();
    $this->print_head_title();
    """</head>""";
    $this->print_wrapper_start();
    $this->print_control_strip();
    """<div id="canvas">
    <div class="inner">
    <div id="header">
    <div class="inner">""";
    $this->print_global_title();
    $this->print_global_subtitle();
    $this->print_title();
    """</div><!-- end header>inner -->
            </div><!-- end header -->
            <div id="content">
                <div class="inner">
                    <div id="primary"><div class="inner">
                        """; 
                        $this->print_body();
    """</div></div><!-- end primary and primary>inner -->
                    <div id="secondary"><div class="inner">""";
                        $this->print_module_section("one");
    """</div></div><!--  end secondary and secondary>inner -->
                    <div id="tertiary"><div class="inner">""";
                        $this->print_module_section("two");
    """</div></div><!-- end tertiary and tertiary>inner -->
                </div><!-- end content>inner -->
            </div> <!-- end content -->
        </div> <!-- end canvas>inner -->""";
 
    """<div id="footer">
        <div class="inner">""";
       print safe """<div class="page-top"><a href="#">$*text_page_top</a></div>
        </div><!-- end footer>inner -->
    </div><!-- end footer -->
    </div> <!-- end canvas -->""";
    $this->print_wrapper_end();
    """</html>""";
    }


<source lang="perl">
   function Page::print_body() {
    """<h2>No Default Renderer</h2><p>There is no body renderer for viewtype <tt>$.view</tt> defined.</p>""";
}
    function Page::print_module_section ( string section_name ) 
{
    """<div class="module-wrapper"><div class="separator separator-before"><div class="inner"></div></div>\n<div class="module-section-$section_name">\n<div class="inner">""";
    handle_module_group_array( $*module_sections{$section_name} );
    """</div>\n</div><div class="separator separator-after"><div class="inner"></div></div>\n</div>""";
    }
Date Functions
    function Page::print_time() {
    $this->print_time("","");
    }
 
    function Page::print_time(string datefmt, string timefmt) {
    if ($datefmt == "") {
        $datefmt = "med";
    }
    if ($timefmt == "") {
        $timefmt = "short";
    }
    var string ret;
    if ($datefmt != "none") { $ret = $ret + $this.local_time->date_format($datefmt); }
    if ($datefmt != "none" and $timefmt != "none") { $ret = $ret + " "; }
    if ($timefmt != "none") { $ret = $ret + $this.local_time->time_format($timefmt); }
 
    print safe """<span id="load-time">$*text_generated_on $ret</span>""";
    }
Page Navigation Function
    function Page::print_navigation() {}
Head Functions
    function Page::print_head() {
    print $.head_content;
    $this->print_custom_head();
    }
 
    function Page::print_custom_head() {
    # blank
    }
 
    function Page::print_linklist() {
    if (size $.linklist <= 0) {
        return;
    } elseif (not $*linklist_support) {
        return;
    }
 
    foreach var UserLink l ($.linklist) {
        if ($l.title) {
            if ($l.is_heading) {
                "<b>$l.title</b>";
            } else {
                "<a href='$l.url'>$l.title</a>";
            }
        }
        "<br />";
    }
    }
Print Entry

This is how all the functions used for a basic layout fit together. This function will affect how you see your Recent Entries, your Reading Page, and your individual entry page.

    function Page::print_entry(Entry e) 
    {
    $e->print_wrapper_start();
    """<div class="header">\n""";
    $e->print_subject();
    $e->print_metatypes();
    $e->print_time();
    """</div>\n""";
    """<div>\n""";
    """<div class="contents">\n""";
    """<div class="inner">\n""";
    $e->print_userpic();
    $e->print_poster();
    $e->print_text();
    $e->print_metadata();
    """</div>\n""";
    """</div>\n""";
    """</div>\n""";
    """<div class="footer">\n""";
    """<div class="inner">\n""";
    $e->print_tags();
    $e->print_management_links();
    if ($this isa EntryPage) {
        """<hr class="above-entry-interaction-links" />""";
        $e->print_interaction_links("topcomment");
        $this->print_reply_container({ "target" => "topcomment" });
        """<hr class="below-reply-container" />""";
    }
    else {
        $e->print_interaction_links();
    }
    "</div>\n</div>\n";
    $e->print_wrapper_end();
}

Page View Properties

Paste Property explantion here and link to Properties page.

Page View Classes

Paste Class explanation here and link to Class page.