Difference between revisions of "Newbie Guide for People Patching Styles"
From Dreamwidth Notes
(Added guidelines to make sure .s2 files are correctly formatted.) |
(Added bits about nonfree styles & themes + misc. edits) |
||
Line 12: | Line 12: | ||
* Theme and layout .s2 files are in <code>~/dw/cs/dw-free/bin/upgrading/s2layers/LAYERNAME/</code> or <code>~/dw/cs/dw-nonfree/bin/upgrading/s2layers/LAYERNAME/</code> | * Theme and layout .s2 files are in <code>~/dw/cs/dw-free/bin/upgrading/s2layers/LAYERNAME/</code> or <code>~/dw/cs/dw-nonfree/bin/upgrading/s2layers/LAYERNAME/</code> | ||
− | * .pm | + | * .pm style files are in <code>~/dw/cvs/dw-free/cgi-bin/LJ/S2Theme/</code> or <code>~/dw/cs/dw-nonfree/bin/upgrading/s2layers/LAYERNAME/</code> |
* S2Theme.pm is in <code>~/dw/cvs/dw-free/cgi-bin/LJ/</code> | * S2Theme.pm is in <code>~/dw/cvs/dw-free/cgi-bin/LJ/</code> | ||
Line 21: | Line 21: | ||
* s2layers-local.dat is in <code>~/dw/cs/dw-nonfree/bin/upgrading/</code> | * s2layers-local.dat is in <code>~/dw/cs/dw-nonfree/bin/upgrading/</code> | ||
+ | |||
+ | |||
+ | = Dw-free or dw-nonfree? = | ||
+ | |||
+ | * Styles or themes which contain images obtained from third party sites and which Dreamwidth can't redistribute go to dw-nonfree. | ||
+ | |||
+ | : If the style is in dw-nonfree all subsequent themes go there as well. Therefore all Transmogrified and Sunday Morning themes go to dw-nonfree. | ||
+ | |||
+ | : If the style is in dw-free, themes can go to dw-nonfree in local files. | ||
Line 26: | Line 35: | ||
== Edit s2layers.dat == | == Edit s2layers.dat == | ||
+ | |||
+ | * If the style goes to dw-nonfree, edit <code>s2layers-local.dat</code> instead. | ||
* If this is a new Core2 layout, add: | * If this is a new Core2 layout, add: | ||
− | <syntaxhighlight lang="perl"> | + | <syntaxhighlight lang="perl">stylename/layout layout core2 |
− | + | stylename/themes theme+ stylename/layout</syntaxhighlight> | |
* If this is a child of Tabula Rasa, add: | * If this is a child of Tabula Rasa, add: | ||
− | <syntaxhighlight lang="perl"> | + | <syntaxhighlight lang="perl">stylename/layout layout(core2base/layout) core2 |
− | + | stylename/themes theme+ stylename/layout</syntaxhighlight> | |
== Edit S2Theme.pm == | == Edit S2Theme.pm == | ||
− | * Scroll down to <code>%default_themes</code> and add the | + | * If the default theme goes to dw-nonfree, edit <code>S2Theme_local.pm</code> instead. |
+ | |||
+ | * Scroll down to <code>%default_themes</code> and add the style and default theme: | ||
− | <syntaxhighlight lang="perl">layoutname => ' | + | <syntaxhighlight lang="perl">layoutname => 'stylename/defaulttheme',</syntaxhighlight> |
Line 61: | Line 74: | ||
1;</syntaxhighlight> | 1;</syntaxhighlight> | ||
− | Remove | + | Remove layout options that don't apply to the style, of course. |
== Create the LAYOUTNAME directory == | == Create the LAYOUTNAME directory == | ||
− | * Create a directory with the name of the | + | * Create a directory with the name of the style in <code>~/dw/cs/dw-free/bin/upgrading/s2layers/</code> or <code>~/dw/cs/dw-nonfree/bin/upgrading/s2layers/</code>. |
Line 81: | Line 94: | ||
set layout_authors = [ { "name" => "someuser", "type" => "user" } ];</syntaxhighlight> | set layout_authors = [ { "name" => "someuser", "type" => "user" } ];</syntaxhighlight> | ||
− | * Add the | + | * Add the style code. |
− | * If the | + | * If the style has custom properties, they should be sorted into existing groups (presentation, colors, fonts, images, modules, text, other) by appending <code>_child</code> to the group name. For example: |
<syntaxhighlight lang="perl">propgroup images_child | <syntaxhighlight lang="perl">propgroup images_child | ||
Line 112: | Line 125: | ||
* No redundant code (S2 or CSS). | * No redundant code (S2 or CSS). | ||
− | * CSS must be into a readable format, with proper indents and spaces | + | * CSS must be into a readable format, with proper indents and spaces, and a logical order, with appropriate comment sections. |
− | + | ||
− | + | ||
Line 120: | Line 131: | ||
* In the directory you've created, create a file named <code>themes.s2</code>. | * In the directory you've created, create a file named <code>themes.s2</code>. | ||
+ | |||
+ | * If all themes go to dw-nonfree, create <code>themes-local.s2</code> in dw-nonfree instead. | ||
+ | |||
+ | * If some themes go to dw-nonfree, create both. | ||
* Follow the steps outlined in [[#Adding a New Color Theme|the next section]]. | * Follow the steps outlined in [[#Adding a New Color Theme|the next section]]. | ||
Line 128: | Line 143: | ||
== Edit themes.s2 == | == Edit themes.s2 == | ||
+ | |||
+ | * If the theme goes to dw-nonfree, edit <code>themes-local.s2</code> instead. | ||
* Make sure the color theme has the right header. As Afuna explained [http://dw-dev-training.dreamwidth.org/9656.html here] in <dwcomm>dw_dev_training</dwcomm>, it should look like this: | * Make sure the color theme has the right header. As Afuna explained [http://dw-dev-training.dreamwidth.org/9656.html here] in <dwcomm>dw_dev_training</dwcomm>, it should look like this: | ||
Line 160: | Line 177: | ||
− | == Check | + | == Check your theme file == |
* No tabs or trailing spaces. | * No tabs or trailing spaces. | ||
Line 168: | Line 185: | ||
* No hardcoded colors in <code>print_theme_stylesheet()</code> if possible. | * No hardcoded colors in <code>print_theme_stylesheet()</code> if possible. | ||
− | * Use shorthand for color codes whenever possible (# | + | * Use shorthand for color codes whenever possible (#555 instead of #555555; #abc instead of #aabbcc). |
* Sort properties into categories using these headers: | * Sort properties into categories using these headers: | ||
Line 183: | Line 200: | ||
* Each theme file must be separated by two blank lines. Leave one blank line after the last theme in the file. | * Each theme file must be separated by two blank lines. Leave one blank line after the last theme in the file. | ||
+ | |||
+ | * If you see another theme which needs editing, create a second patch/another bug for it. | ||
== Edit LAYOUTNAME.pm == | == Edit LAYOUTNAME.pm == | ||
− | You must include the theme into the general | + | You must include the theme into the general style file. Otherwise, people wouldn't be able to select it at Customize. |
* Find the correct place in the file so that themes stay alphabetically sorted. | * Find the correct place in the file so that themes stay alphabetically sorted. | ||
Line 209: | Line 228: | ||
= On your Dreamhack = | = On your Dreamhack = | ||
− | * Test, test and test. Make sure styles/themes are correctly listed in Customize and that names are correct. Make sure you can select the layouts working with your style. Make sure you can customize your style. On your test account, check | + | * Test, test and test. Make sure styles/themes are correctly listed in Customize and that names are correct. Make sure you can select the layouts working with your style. Make sure you can customize your style. On your test account, check colors on all pages for themes. For styles, make sure all types of layouts, all pages, all sorts of entries and comments display correctly and display correctly in various screen resolutions and font sizes. Also make sure community journals look fine. |
* Make preview pictures if you can. Their size is 150x114 pixels. You may need to add/edit/remove entries, add/edit/remove modules, change screen resolution and font size so that your screen cap can be resized to this exact size. | * Make preview pictures if you can. Their size is 150x114 pixels. You may need to add/edit/remove entries, add/edit/remove modules, change screen resolution and font size so that your screen cap can be resized to this exact size. | ||
Line 218: | Line 237: | ||
* Don't forget to zip images and attach them to your bug if there are any. Also set them to review ? and commit ? | * Don't forget to zip images and attach them to your bug if there are any. Also set them to review ? and commit ? | ||
− | * If you can't do the preview pictures mention it so that someone can do them for you. | + | * If you can't do the preview pictures mention it so that someone can do them for you. You can also ask for help at <dwcomm>dreamscapes</dwcomm>. |
[[Category:Development]] | [[Category:Development]] | ||
[[Category:Styles]] | [[Category:Styles]] | ||
[[Category:Getting Started]] | [[Category:Getting Started]] |
Revision as of 13:03, 25 August 2010
Contents
How Do I File a New Bug?
- In Bugzilla, click on New. Select Dreamwidth Development. In Component, select Style System. Enter a Summary and a Description. Mention style and theme names in the summary if needed. If you're adding a style or a color theme, indicate style name, theme name(s), the name of the author and the Dreamscapes submission URL in the description.
- Click on Show Advanced Fields. Set Initial State to ASSIGNED and enter your Bugzilla e-mail address in Assign To.
Where Are Style Files?
- core2.s2 is in
~/dw/cs/dw-free/bin/upgrading/s2layers/
- Theme and layout .s2 files are in
~/dw/cs/dw-free/bin/upgrading/s2layers/LAYERNAME/
or~/dw/cs/dw-nonfree/bin/upgrading/s2layers/LAYERNAME/
- .pm style files are in
~/dw/cvs/dw-free/cgi-bin/LJ/S2Theme/
or~/dw/cs/dw-nonfree/bin/upgrading/s2layers/LAYERNAME/
- S2Theme.pm is in
~/dw/cvs/dw-free/cgi-bin/LJ/
- S2Theme_local.pm is in
~/dw/cvs/dw-nonfree/cgi-bin/LJ/
- s2layers.dat is in
~/dw/cs/dw-free/bin/upgrading/
- s2layers-local.dat is in
~/dw/cs/dw-nonfree/bin/upgrading/
Dw-free or dw-nonfree?
- Styles or themes which contain images obtained from third party sites and which Dreamwidth can't redistribute go to dw-nonfree.
- If the style is in dw-nonfree all subsequent themes go there as well. Therefore all Transmogrified and Sunday Morning themes go to dw-nonfree.
- If the style is in dw-free, themes can go to dw-nonfree in local files.
Adding a New Style
Edit s2layers.dat
- If the style goes to dw-nonfree, edit
s2layers-local.dat
instead.
- If this is a new Core2 layout, add:
stylename/layout layout core2 stylename/themes theme+ stylename/layout
- If this is a child of Tabula Rasa, add:
stylename/layout layout(core2base/layout) core2 stylename/themes theme+ stylename/layout
Edit S2Theme.pm
- If the default theme goes to dw-nonfree, edit
S2Theme_local.pm
instead.
- Scroll down to
%default_themes
and add the style and default theme:
layoutname => 'stylename/defaulttheme',
Create LAYOUTNAME.pm
- Create LAYOUTNAME.pm in
~/dw/cvs/dw-free/cgi-bin/LJ/S2Theme/
.
- Add:
package LJ::S2Theme::layoutname; use base qw( LJ::S2Theme ); sub layouts { ( "1" => "one-column", "2l" => "two-columns-left", "2r" => "two-columns-right", "3" => "three-columns-sides", "3r" => "three-columns-right", "3l" => "three-columns-left" ) } sub layout_prop { "layout_type" } sub designer { "name" } 1;
Remove layout options that don't apply to the style, of course.
Create the LAYOUTNAME directory
- Create a directory with the name of the style in
~/dw/cs/dw-free/bin/upgrading/s2layers/
or~/dw/cs/dw-nonfree/bin/upgrading/s2layers/
.
Create layout.s2
- In the directory you've created, create a file named
layout.s2
.
layerinfo type = "layout"; layerinfo name = "layoutname"; layerinfo redist_uniq = "layoutname/layout"; layerinfo author_name = "someuser"; layerinfo lang = "en"; set layout_authors = [ { "name" => "someuser", "type" => "user" } ];
- Add the style code.
- If the style has custom properties, they should be sorted into existing groups (presentation, colors, fonts, images, modules, text, other) by appending
_child
to the group name. For example:
propgroup images_child property string image_module_list { des = "Module list image"; }
- If a module has more or fewer available positions than other modules, you can customize the sections it can be set to by using
_override
. For example:
property string module_navlinks_section_override { values = "none|(none)|header|Header|one|Group One|two|Group Two"; grouped = 1; } set grouped_property_override = { "module_navlinks_section" => "module_navlinks_section_override" }; set module_navlinks_section = "header";
- Of course, you need to make sure it's printed correctly when set to every position, possibly by editing
function Page::print() { }
.
Check layout.s2
- No tabs or trailing spaces.
- No empty properties (S2 or CSS).
- No hardcoded colors, fonts or text except shadows or
:before
/:after
text/characters.
- No redundant code (S2 or CSS).
- CSS must be into a readable format, with proper indents and spaces, and a logical order, with appropriate comment sections.
Create themes.s2
- In the directory you've created, create a file named
themes.s2
.
- If all themes go to dw-nonfree, create
themes-local.s2
in dw-nonfree instead.
- If some themes go to dw-nonfree, create both.
- Follow the steps outlined in the next section.
Adding a New Color Theme
Edit themes.s2
- If the theme goes to dw-nonfree, edit
themes-local.s2
instead.
- Make sure the color theme has the right header. As Afuna explained here in dw_dev_training, it should look like this:
#NEWLAYER: layoutname/themename layerinfo type = "theme"; layerinfo name = "Theme Name"; layerinfo redist_uniq = "layoutname/themename"; layerinfo author_name = "someuser";
- If the color theme author is not the style author, add this this line below, separated by a blank line:
set layout_authors = [ { "name" => "someuser", "type" => "user" } ];
- If the theme has any images, name them like this:
themename_imagename.xxx
. Keep the image name used in other themes if there are any.
- If there's only one image, give it the theme name:
themename.xxx
- If the theme has generic images used in other themes, simply use
imagename.xxx
.
- In the theme, use
layoutname/themename_imagename.xxx
,layoutname/themename.xxx
orlayoutname/imagename.xxx
as the URL.
- If you need to add theme-specific CSS, use:
function Page::print_theme_stylesheet() { """ CSS HERE """; }
- Make sure to add the theme code in the right place (themes should be alphabetically sorted).
Check your theme file
- No tabs or trailing spaces.
- No empty properties (S2 or CSS).
- No hardcoded colors in
print_theme_stylesheet()
if possible.
- Use shorthand for color codes whenever possible (#555 instead of #555555; #abc instead of #aabbcc).
- Sort properties into categories using these headers:
##=============================== ## Page Colors ##===============================
- Colors are sorted into three categories: Page Colors, Entry Colors and Module Colors.
- Other categories are Images and Fonts.
- Additional CSS must be into a readable format, with proper indents and spaces, and a logical order.
- Each theme file must be separated by two blank lines. Leave one blank line after the last theme in the file.
- If you see another theme which needs editing, create a second patch/another bug for it.
Edit LAYOUTNAME.pm
You must include the theme into the general style file. Otherwise, people wouldn't be able to select it at Customize.
- Find the correct place in the file so that themes stay alphabetically sorted.
- Add the following code:
package LJ::S2Theme::layoutname::themename; use base qw( LJ::S2Theme::layoutname ); sub cats { qw() }
- If the color theme author is not the style author, add this line:
sub designer { "someuser" }
On PuTTY
- Type
hg addremove
if this patch adds or delete files thenhg refresh
.
On your Dreamhack
- Test, test and test. Make sure styles/themes are correctly listed in Customize and that names are correct. Make sure you can select the layouts working with your style. Make sure you can customize your style. On your test account, check colors on all pages for themes. For styles, make sure all types of layouts, all pages, all sorts of entries and comments display correctly and display correctly in various screen resolutions and font sizes. Also make sure community journals look fine.
- Make preview pictures if you can. Their size is 150x114 pixels. You may need to add/edit/remove entries, add/edit/remove modules, change screen resolution and font size so that your screen cap can be resized to this exact size.
On Bugzilla
- Don't forget to zip images and attach them to your bug if there are any. Also set them to review ? and commit ?
- If you can't do the preview pictures mention it so that someone can do them for you. You can also ask for help at dreamscapes.