<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>Art project ARTWORK TO-DO List:</strong>
	</TD>
	</TR>
	<TR>
	<TD class="tableb">

<p>
This page holds the list of graphics and artwork needed by OpenOffice.org.
 If you want to help us with your skills, please have a look at our 
<a href="http://www.openoffice.org/nonav/issues/showattachment.cgi/29949/OpenOffice.org%20Style%20Manual%20(Version%200.9).pdf"
 >OpenOffice.org Artwork Style Guide</a>, where we tried to tell you something about the usage of our central
 artwork like logo and icons in order to keep an eye on our visual identity. 
<!-- the Style Guide is linked to the attachment of Issue 54289, because it is not really finished by now. Needs to be updated ASAP! -->
<br>
(If you are interested in helping maintaining the project please visit our <a href="to-do-maintenance.html">MAINTENANCE TO-DO</a>.)

<center>
<table border=0 cellspacing=0 cellpadding=5 width="100%">
<tr><td>
&nbsp;&nbsp;&nbsp;<b>Currently opened tasks inside IssueZilla:
&nbsp;&nbsp;&nbsp; (<a
href="http://www.openoffice.org/issues/buglist.cgi?Submit%20query=Submit%20query&component=marketing&subcomponent=art&issue_status=NEW&issue_status=STARTED&issue_status=REOPENED&email1=&emailtype1=exact&emailassigned_to1=1&email2=&emailtype2=exact&emailreporter2=1&issueidtype=include&issue_id=&changedin=&votes=&chfieldfrom=&chfieldto=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&keywords=&keywords_type=anytokens&field0-0-0=noop&type0-0-0=noop&value0-0-0=&order=issues.issue_id">Click to view without frames</a>) </b>
<br><small>Note: Newest tasks are at the end of the list.</small>
</td></tr>
<tr><td>
<iframe scrolling="yes" width="95%" height="260" src="http://www.openoffice.org/nonav/issues/buglist.cgi?Submit%20query=Submit%20query&component=marketing&subcomponent=art&issue_status=NEW&issue_status=STARTED&issue_status=REOPENED&email1=&emailtype1=exact&emailassigned_to1=1&email2=&emailtype2=exact&emailreporter2=1&issueidtype=include&issue_id=&changedin=&votes=&chfieldfrom=&chfieldto=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&keywords=&keywords_type=anytokens&field0-0-0=noop&type0-0-0=noop&value0-0-0=&order=issues.issue_id"></iframe>
</td></tr>
</table>
</center>

<br><br>
If you find something that you would like to help with, please let 
<a href="about-participation.html">us know</a>.<br>
The same invitation applies if you find something that should be added to this list. 
Please let us know on the <a href="about-participation.html">mailing list</a> about it.<br>

	</TD>
	</TR>
	<TR>
	<td class="tableh1">
	<strong>Current tasks:</strong>
	</TD>
	</TR>
	<TR>
	<TD class="tableb">
	
<p>
<ol>
<li> <strong>Update old materials that still read OpenOffice.org 1.0</strong>
<br><br>
<li> <strong>Redefine the promo set for OpenOffice.org 2.0</strong>
<br><br>
<li> <strong>New templates and cliparts are needed</strong>
<br><br>
<li> <strong>Create conference banners and large format posters for events</strong>
<br><br>
<li> <strong>Artwork for promotional items (like keyrings, etc)</strong>
<br><br>
<li> <strong>CD-Cover art for special events</strong>
<br><br>

</ol>
</p>


Please do not hesitate to ask for details or guidance on our <a href="about-participation.html">mailing list</a> if you feel you can help<br>
<small>Last updated: Mar 19th 2006 by bedipp.</small>

<br><br><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 -->
