<head>
<title>OpenOffice.org Art Project</title>


<style type="text/css">
.galleriestable {
        border: 1px solid #0E72A4;
        background-color: #FFFFFF;
        margin-top: 1px;
        margin-bottom: 1px;
}

.tableh1 {
        background : #00315a ;
        color : #FFFFFF;
        padding-top: 3px;
        padding-right: 10px;
        padding-bottom: 3px;
        padding-left: 10px;
}

.tableh1_compact {
        background : #0E72A4 ;
        color : #FFFFFF;
        padding-top: 2px;
        padding-right: 5px;
        padding-bottom: 2px;
        padding-left: 5px;
}

.tableh2 {
        background: #d8dee3 ;
        color : #000000;
        padding-top: 3px;
        padding-right: 10px;
        padding-bottom: 3px;
        padding-left: 10px;
}

.tableh2_compact {
        background: #D1D7DC ;
        color : #000000;
        padding-top: 2px;
        padding-right: 5px;
        padding-bottom: 2px;
        padding-left: 5px;
}

.tableb {
        background: #EFEFEF ;
        padding-top: 3px;
        padding-right: 10px;
        padding-bottom: 3px;
        padding-left: 10px;
}

.tableb_compact {
        background: #EFEFEF ;
        padding-top: 2px;
        padding-right: 5px;
        padding-bottom: 2px;
        padding-left: 5px;
}

.tablef {
        background: #d8dee3;
        padding-top: 10px;
        padding-right: 10px;
        padding-bottom: 10px;
        padding-left: 10px;
}

</style>

</head>

<H2>The OpenOffice.org Art Project</H2>

<!-- Project menu -->
<div align="right">
    <a href="index.html">Index</a> 
 :: <a href="index.html#galleries">Galleries</a>
 :: <a href="to-do-artwork.html"><b>Artwork To-Do</b></a>    
 :: <a href="to-do-maintenance.html"><b>Project Maintenance To-Do</b></a>     
 <br>
 
 <a href="about-participation.html">How to participate</a>
  :: <a href="about-request-graphics.html">Request graphics</a>
  :: <a href="about-issuezilla.html">IssueZilla</a>
  :: <a href="about-issuezilla-uploading_files.html"><b>Sending us files</b></a>
  :: <a href="about-legal.html">Licenses</a>
  :: <a href="about-project.html">About the project</a>  
 <br><br>
</div>
<!-- end of project menu -->


<!-- Galleries entry table -->
<table style="border-style:solid; border-color:#06338b; border-width:5px"  cellpadding="2" cellspacing="3" width="100%" bgcolor="#9bc0f5">
	<tr>
		<td>
		<strong>The OpenOffice.org Art Project is updating its web site. </strong>
		<br />
		This page is outdated, but most of its content is being worked on at the <a href="http://wiki.services.openoffice.org/wiki/Art">OpenOffice.org wiki</a>:
		<br />
		Please follow <a href="http://wiki.services.openoffice.org/wiki/Art">this link</a> 
		and use the wiki subpages to find the information you're looking for.
		<br />
		If you can't find what you want to know, please contact our mailing list <a href="mailto:art&#64;marketing.openoffice.org">art@marketing.openoffice.org</a>.
		<br />
		<br />		
		Sorry for any inconvenience, we hope to finish the update as soon as possible. 
		<br />		
		- And you are welcome to help us in this area too... - 
		</td>
	</tr>
</table>
<br />

<TABLE border="0" cellpadding="1" cellspacing="0" width="100%" bgcolor="#ffffff">
<TR>
<TD valign="top"  width="85%">	<!-- Begin contents of page -->
	<TABLE class="galleriestable" width="100%">
	<TR>
	<td class="tableh1">
	<strong>Using IssueZilla system inside the Art Project (tutorial):</strong>
	</TD>
	</TR>
	<TR>
	<TD class="tableb">

<p><b>Purpose of this document:</b>
=
<BR>
This document is intended as a practical guide for operating the IssueZilla (IZ) system for tasks and bugs management inside the OpenOffice.org Art Project.
<p><b>Contents:</b>
<ul>
<li> a general overview of the IssueZilla system;
<li> most frequent usage situations;
<li> usage examples and the steps required that specifically apply to Art Project activities.
</ul>

<p><b>What you will not find in this document:</b>
<ul>
<li> this document does not contain complete information on IssueZilla. For more information please refer to the usefull links provided at the end of the document.
</ul>


<p><b>1. What is IssueZilla ?</b>
<BR><b>R:</b> IssueZilla (IZ) is the issues (bugs) and tasks management system used by the OpenOffice.org website and Community to ensure the proper issues management and the completion of the undergoing tasks inside the Community. The system allows all the Community members to participate in solving the current problems.

<p><b>2. What kind of Issues can be reported using IZ ?</b>
<BR><b>R:</b> Any 'problems', errors, tasks to be completed, all related to the website, a project, the Community or the OpenOffice.org software.
<BR>Specifically for the Art Project, there can be filed issues containing: 
<ul>
<li>requests for a new graphics to be created
<li>requests for translating a certain graphics
<li>art related tasks that someone could take up and solve
<li>issues containing new graphics attached so that the other members of the project can review them, etc.
</ul>
...all these so that the members of the project can review the respective issue, follow the progress, enroll in solving a certain issue or help in the currently undergoing ones.

	
<p><b>3. Who can use IZ ?</b>
<BR><b>R:</b> IssueZilla can be used by anybody for following the progress on a certain issue, report a new one or contribute to the existing ones. The only existing limitation is that for reporting and contributing to an issue you have to be a 
<a href="http://www.openoffice.org/servlets/Join">registered</a> member of the OpenOffice.org website.

<p><b>4. Common usage situations:</b>
<dir>
	<p><b>a. REPORTING A 'PROBLEM': </b>
		<br>This is the most common usage situation in which a person discovers an error/problem and reports it so that the corresponding teams can check the problem and solve it.
		
	<p><b>b. CONTRIBUTING TO THE CURRENTLY UNDERGOING TASKS: </b>
		<br>Anybody who wants to contribute in solving an already reported issue or who wants to follow the progress of that issue can add themselves to the CC list and can post comments, notes, attach relevant documents, etc. Also, they can vote for increasing the priority of the respective issue.
		
	<p><b>c. MANAGING YOUR OWN TASKS INSIDE THE PROJECT: </b>
		<br>Project members who commit themselves to solving a certain task can open an issue in which they describe the problem, the proposed solution, attach relevant documents, can ask for help and can make comments and periodical reports on the progress untill the task is solved and the issue is closed.
		<p>
		In this case, they are the 'owners' of the issue and they are responsible for solving it. Other members can contribute to the same issue or can take up the task from where it has been left.
		<p>
		This method of working also allows the upload of the created documents (i.e. graphics, documents, etc) in a public place on the website so that they can be viewed by the project members. This way, you can always mention in the mailing list discussions the URL of the uploaded document without having to attach the document to your emails.
</dir>		

<p><b>5. How can I view the currently opened Issues inside the Art Project ?</b>
<BR><b>R:</b> Use the following link in order to view the opened issues of the Art project:
<dir>	
	<a
href="http://www.openoffice.org/issues/buglist.cgi?Submit+query=Submit+query&component=marketing&subcomponent=art&issue_stat
us=NEW&issue_status=STARTED&issue_status=REOPENED&email1=&emailtype1=exact&emailassigned_to1=1&email
2=&emailtype2=exact&emailreporter2=1&issueidtype=include&issue_id=&changedin=&votes=&chfieldfrom=&ch
fieldto=Now&chfieldvalue=&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&
issue_file_loc=&issue_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&ke
ywords=&keywords_type=anytokens&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&order=Reuse+
same+sort+as+last+time">
	<b>Click here to view the Art opened issues.</b></a>
	<br>Then, to view the contents of a specific issue, click on the corresponding Issue Number in the results page.
</dir>


<p><b>6. How do I file an Issue inside the Art project ?</b>
<br><br>
<b>INSTRUCTIONS:</b>
<ol>
<li> <a href="http://www.openoffice.org/servlets/StartPage">Login</a> on the OpenOffice.org website using your username and password.
<li> Go to the marketing project website <a href="http://marketing.openoffice.org">http://marketing.openoffice.org</a>
<li> In the left side menu click on <b>"Issue tracker"</b> (<a
href="http://marketing.openoffice.org/servlets/ProjectIssues">http://marketing.openoffice.org/servlets/ProjectIssues</a>) ;
<li> In the <b>"Enter an issue"</b> section click on the type of issue you want to report.
	(e.g. Task) (<a
href="http://marketing.openoffice.org/issues/enter_bug.cgi?issue_type=TASK">http://marketing.openoffice.org/issues
/enter_bug.cgi?issue_type=TASK</a>)
<li> In the next screen choose the "marketing" component from the OpenOffice.org components list.
 (<a
href="http://marketing.openoffice.org/issues/enter_bug.cgi?component=marketing&issue_type=TASK">http://marketing.openoffice.org/issues/enter_bug.cgi?<br>component=marketing&issue_type=TASK</a>)
<li> The next screen will ask you for details about the issue:

	<ul>
	<li><b>"Found in version"</b> 	- reffers to the program version in which you have found the problem. In our example, we are reporting a task which does not relate the the software so choose 'current'.
	<li><b>"*Subcomponent:"</b>	- here you specify the sub-component inside the project where the issue belongs. In the Art Project's case select 'art' component.
	<li><b>"Assigned to:"</b>		- in this field specify the OpenOffice.org website username of the person who should solve the problem. If the person is unknown, please leave the field blank. If you are reporting a task which you would like to solve, please put in your username.
	<li><b>"CC:"</b>			- this is the list of persons that should be notified on any changes inside the issue. Enter there the usernames of those who you would like to be notified. Leave blank if none.
	<li><b>"URL:"</b>			- (if applicable) enter here the relevant URL where the problem can be seen.
	<li><b>"*Summary:"</b>			- enter a short and concise description of the issue in a few words. The data entered here is the first that shows up in the Issues list and it is used in the automatic notifications messages, so please make sure it clearly explains the issue.
	<li><b>"*Description:"</b>		- here you describe the issue in detail, add your comments, propose solutions, etc.
	</ul>


<li> After filling in all the details click on <b>"Submit Issue"</b>.
<li> The next screen will confirm you that the issue has been submitted.<br>
	Also, if you need to attach a document (file) to the issue, the same screen lets you do that in the section: <b>"Attach a file to this issue"</b>. 
This feature allows you to publicly display the relevant documents and reffer them by URL on the mailing lists discussions.
</ol>
<p><b>7. What operations can I do in IZ without being authenticated on the website ?</b>
<BR><b>R:</b> Only searching for Issues and viewing them can be done without authenticating on the
OpenOffice.org website. <br>Any other operations like adding yourself to the CC list, adding
comments to an existing issue, creating a new issue, etc can be done only after you have 
<a href="http://www.openoffice.org/servlets/TLogin">logged in</a> with your username and password.
<br><br>
----------
<br>


<p><b>Usefull links:</b>
<ul>
<li><a href="http://qa.openoffice.org/issue_handling/bug_writing_guidelines.html">Issue Writing
Guidelines</a>
<li><a href="http://qa.openoffice.org/issue_handling/basic_rules.html">Basic Issue Tracker Rules</a>
<li><a href="http://www.openoffice.org/scdocs/ProjectIssues">Project Issues topic located in the
site Help files</a>
</ul>

<br><br><br>
<small>
-=End document version 0.1.1en=-<br>
===============================
<br>Version: 0.1.1en
<br>Last updated: July 31th 2004
<br>Author: Cristian Driga
<br>After an idea by Jacqueline McNally (OpenOffice.org Marketing Project)
<br><br>

	
	
	
	
	
	</TD>
	</TR>			
	</TABLE>
	<!-- end contents of page -->
</TD>
<TD width="150" valign="top">
		
		<!-- Help needed table -->
			<TABLE class="galleriestable" width="100%">
			<TR>
			<TD class="tableh2">
			<small>
			<b><font color="#7F7F7F">HELP NEEDED:</font></b><br>
			
			<script language="JavaScript"
			src="http://oosurvey.gratismania.ro/oooart/news/todo.php"></script>
			<br><!-- <a href="#">More...</a> -->
			</small>
			</TD>
			</TR>
			</table>
		
		<!-- news table -->
			<TABLE class="galleriestable" width="100%">
			<TR>
			<TD class="tableh2">
			<small>
			<b><font color="#7F7F7F">PROJECT NEWS:</font></b><br>
			<script language="JavaScript" 
			src="http://oosurvey.gratismania.ro/oooart/news/news.php"></script>
			<BR>
			<!-- http://oosurvey.gratismania.ro/oooart/news/news.php -->
			<!-- <a href="#">More...</a> -->
			</small>
			</TD>
			</TR>
			</table>


</TD>
</TR>
</TABLE>
<!-- end of galleries entry table -->
