<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.moodle.org/404/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pbaxter</id>
	<title>MoodleDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.moodle.org/404/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pbaxter"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/404/en/Special:Contributions/Pbaxter"/>
	<updated>2026-04-17T14:51:48Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/404/en/index.php?title=Development:Interface_guidelines&amp;diff=22094</id>
		<title>Development:Interface guidelines</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/404/en/index.php?title=Development:Interface_guidelines&amp;diff=22094"/>
		<updated>2007-04-04T14:39:01Z</updated>

		<summary type="html">&lt;p&gt;Pbaxter: Altered tabs heading (was displaying as nested unsorted list)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is not authoritative, it is a collection of ideas and under construction.&lt;br /&gt;
&lt;br /&gt;
==Keeping it simple==&lt;br /&gt;
&lt;br /&gt;
Use the minimum interface required to get the job done&lt;br /&gt;
&lt;br /&gt;
==Standard pages==&lt;br /&gt;
&lt;br /&gt;
===Activity modules===&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;index.php&#039;&#039; - lists all instances for that module in a course&lt;br /&gt;
*&#039;&#039;view.php&#039;&#039; - displays a particular instance&lt;br /&gt;
*&#039;&#039;config.html&#039;&#039; - configure an instance of the module&lt;br /&gt;
&lt;br /&gt;
===Blocks===&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;config.html&#039;&#039; - configure an instance of the block&lt;br /&gt;
&lt;br /&gt;
==One script per major function/page==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==Page layout==&lt;br /&gt;
&lt;br /&gt;
# Print headings with print_heading, use the CSS hooks for IDs and Classes&lt;br /&gt;
# Print boxes around text using print_simple_box, use the CSS hooks for IDs and Classes&lt;br /&gt;
&lt;br /&gt;
===Tabs===&lt;br /&gt;
&lt;br /&gt;
.userinfobox {&lt;br /&gt;
  border-top:0 none;&lt;br /&gt;
  padding-top:0;&lt;br /&gt;
  margin-top:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mod-forum-user .forumpost,&lt;br /&gt;
#course-user .section .content {&lt;br /&gt;
  border-top:0 none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#course-user .section {&lt;br /&gt;
  background-color:#fff;&lt;br /&gt;
  padding:1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#course-user .section h2 {&lt;br /&gt;
  margin-top:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#user-view .tabs td,&lt;br /&gt;
#user-edit .tabs td,&lt;br /&gt;
#mod-forum-user .tabs td {&lt;br /&gt;
  padding-bottom:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#user-edit .generalbox {&lt;br /&gt;
  width:100%&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mod-glossary .glossarydisplay tr,&lt;br /&gt;
.mod-glossary .glossarydisplay td {&lt;br /&gt;
  border:0 none !important;&lt;br /&gt;
  padding-bottom:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mod-glossary td.entryboxheader {&lt;br /&gt;
  height:0 !important;&lt;br /&gt;
  background-color:#fff;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mod-glossary .entrybox {&lt;br /&gt;
  padding:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs {&lt;br /&gt;
  width:auto;&lt;br /&gt;
  margin-left:auto;&lt;br /&gt;
  margin-right:auto;&lt;br /&gt;
  margin-bottom:0;&lt;br /&gt;
  padding-bottom:0;&lt;br /&gt;
  border-bottom:0 none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#user-view .tabs {&lt;br /&gt;
  width:80%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs tr,&lt;br /&gt;
.tabs .left,&lt;br /&gt;
.tabs .right {&lt;br /&gt;
  background:url(pix/tab/tabsbg_x2.gif) bottom left repeat-x&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .side {&lt;br /&gt;
  border-bottom:0 none&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs td {&lt;br /&gt;
  padding:0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .left {&lt;br /&gt;
  width:0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .right {&lt;br /&gt;
  width:75%&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabrow {&lt;br /&gt;
  width:100%;&lt;br /&gt;
  margin:0;&lt;br /&gt;
  border-collapse:collapse&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabrow td {&lt;br /&gt;
  padding:0 0 0 14px;&lt;br /&gt;
  height:34px;&lt;br /&gt;
  border-width:0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r1 {&lt;br /&gt;
  margin-bottom:1px&lt;br /&gt;
}&lt;br /&gt;
.tabrow td.selected {&lt;br /&gt;
  border-width: 0px&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r0 .active {&lt;br /&gt;
  background:url(pix/tab/left.gif) bottom left no-repeat&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r1 .active {&lt;br /&gt;
  background:url(pix/tab/left2.gif) bottom left no-repeat&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r0 .inactive {&lt;br /&gt;
  background:url(pix/tab/left_inactive.gif) bottom left no-repeat&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r1 .inactive {&lt;br /&gt;
  background:url(pix/tab/left_inactive2.gif) bottom left no-repeat&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r0 .activetwo {&lt;br /&gt;
  background:url(pix/tab/left_active2.gif) bottom left no-repeat&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r1 .activetwo {&lt;br /&gt;
  background:url(pix/tab/left_active2.gif) bottom left no-repeat&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs,&lt;br /&gt;
.tabs tr,&lt;br /&gt;
.tabs .td,&lt;br /&gt;
.tabrow,&lt;br /&gt;
.tabrow tbody,&lt;br /&gt;
.tabrow tr,&lt;br /&gt;
.tabrow td {&lt;br /&gt;
  background-color:transparent&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabrow th {&lt;br /&gt;
  display:none&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabrow td .tablink {&lt;br /&gt;
  padding:0 14px 0 0;&lt;br /&gt;
  /*display:block;*/&lt;br /&gt;
  white-space:nowrap;&lt;br /&gt;
  line-height:32px;&lt;br /&gt;
  text-align:center;&lt;br /&gt;
  text-decoration:none;&lt;br /&gt;
  height:34px;&lt;br /&gt;
  width:auto&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r0 .active .tablink {&lt;br /&gt;
  background:url(pix/tab/right.gif) bottom right no-repeat&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r1 .active .tablink {&lt;br /&gt;
  background:url(pix/tab/right2.gif) bottom right no-repeat&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r0 .inactive .tablink {&lt;br /&gt;
  background:url(pix/tab/right_inactive.gif) bottom right no-repeat&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r1 .inactive .tablink {&lt;br /&gt;
  background:url(pix/tab/right_inactive2.gif) bottom right no-repeat&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r0 .activetwo .tablink {&lt;br /&gt;
  background:url(pix/tab/right_active2.gif) bottom right no-repeat&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r1 .activetwo .tablink {&lt;br /&gt;
  background:url(pix/tab/right_active2.gif) bottom right no-repeat&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabrow td .tablink a {&lt;br /&gt;
  width:auto;&lt;br /&gt;
  line-height:32px&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r0 .active:hover {&lt;br /&gt;
  background:url(pix/tab/left_hover.gif) bottom left no-repeat&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r0 .active:hover .tablink {&lt;br /&gt;
  background:url(pix/tab/right_hover.gif) bottom right no-repeat;&lt;br /&gt;
  line-height:32px&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r0 .inactive:hover {&lt;br /&gt;
  background:url(pix/tab/left_inactive.gif) bottom left no-repeat&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r0 .inactive:hover .tablink {&lt;br /&gt;
  background:url(pix/tab/right_inactive.gif) bottom right no-repeat;&lt;br /&gt;
  line-height:32px&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r1 .active:hover {&lt;br /&gt;
  background:url(pix/tab/left_hover2.gif) bottom left no-repeat&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r1 .active:hover .tablink {&lt;br /&gt;
  background:url(pix/tab/right_hover2.gif) bottom right no-repeat;&lt;br /&gt;
  line-height:32px&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabrow .last span {&lt;br /&gt;
  padding:0 1px 0 0;&lt;br /&gt;
  display:block;&lt;br /&gt;
  background:url(pix/tab/right_end.gif) bottom right no-repeat&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r0 .selected {&lt;br /&gt;
  background:url(pix/tab/left_active.gif) bottom left no-repeat&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r1 .selected {&lt;br /&gt;
  background:url(pix/tab/left_active2.gif) bottom left no-repeat&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r0 .selected .tablink {&lt;br /&gt;
  background:url(pix/tab/right_active.gif) bottom right no-repeat;&lt;br /&gt;
  line-height:32px&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabs .r1 .selected .tablink {&lt;br /&gt;
  background:url(pix/tab/right_active2.gif) bottom right no-repeat;&lt;br /&gt;
  line-height:32px&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*.tabrow td.selected:hover  {&lt;br /&gt;
  background:url(pix/tab/left_active.gif) bottom left no-repeat;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabrow td.selected .tablink:hover {&lt;br /&gt;
  background:url(pix/tab/right_active.gif) bottom right no-repeat;&lt;br /&gt;
}*/&lt;br /&gt;
&lt;br /&gt;
.user-content h2 {&lt;br /&gt;
  margin:0;&lt;br /&gt;
  padding:0 1em&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.user-content {&lt;br /&gt;
  background-color:#FFFFFF;&lt;br /&gt;
  border:1px solid #D1D7DC;&lt;br /&gt;
  border-top-width:0;&lt;br /&gt;
  padding:0.5em&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Tabs===&lt;br /&gt;
&lt;br /&gt;
.tabs {&lt;br /&gt;
  font-size:0.8em&lt;br /&gt;
}&lt;br /&gt;
.tablink a:link,&lt;br /&gt;
.tablink a:visited {&lt;br /&gt;
    color:#000066;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tablink a:hover {&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.selected .tablink a:link,&lt;br /&gt;
.selected .tablink a:visited {&lt;br /&gt;
    color:#000000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Dealing with tables==&lt;br /&gt;
&lt;br /&gt;
Use the print_table function whenever possible.&lt;br /&gt;
&lt;br /&gt;
==Standard navigation tools==&lt;br /&gt;
&lt;br /&gt;
# All pages should call print_header, and supply a standard navigation path to be displayed in it. Where possible, it should look like: COURSE &amp;gt;&amp;gt; INDEX &amp;gt;&amp;gt; INSTANCE &amp;gt;&amp;gt; SUBPAGES...&lt;br /&gt;
# Pages within activity modules should call navmenu() to generate the appropriate navigation menu.&lt;br /&gt;
&lt;br /&gt;
==URLs==&lt;br /&gt;
&lt;br /&gt;
# URLs should be as short as possible.&lt;br /&gt;
# No underscores in parameter names or files names&lt;br /&gt;
# Never use two words when one would do.&lt;br /&gt;
&lt;br /&gt;
==Buttons vs links==&lt;br /&gt;
&lt;br /&gt;
This is a hard one to define ...&lt;br /&gt;
&lt;br /&gt;
The Google Web Accelerator issue definitely provides some pointers here:&lt;br /&gt;
&lt;br /&gt;
# Actions which can modify the state of Moodle (data files, database, session information) should be performed through buttons&lt;br /&gt;
# At the very least, such actions which are implemented as links should forward to a confirmation page which *does* use buttons&lt;br /&gt;
&lt;br /&gt;
==CSS naming==&lt;br /&gt;
&lt;br /&gt;
* See [[Standards|theme standards]]&lt;br /&gt;
&lt;br /&gt;
==Linking to help==&lt;br /&gt;
&lt;br /&gt;
* Help buttons should be on the right of the thing (as an exception it can be left, if the thing is right-aligned)&lt;br /&gt;
&lt;br /&gt;
==Related topics==&lt;br /&gt;
&lt;br /&gt;
Robin Good&#039;s Latest News. &amp;quot;Interaction Design Meets Online Real Estate&amp;quot; 1 Mar. 2005 http://www.masternewmedia.org/news/2005/03/01/interaction_design_meets_online_real.htm&lt;br /&gt;
&lt;br /&gt;
The article presents a view of virtual spaces with the focus on human actions. It reminded me of communicative approaches like Moodle. The interface serves as the handle of all the communication tools.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
&lt;br /&gt;
[[es:Manual de estilo de la interfaz]]&lt;br /&gt;
[[ja:インターフェースガイドライン]]&lt;/div&gt;</summary>
		<author><name>Pbaxter</name></author>
	</entry>
</feed>