Revision 6871
Added by Matt Jones almost 13 years ago
docs/dev/metacat/Makefile | ||
---|---|---|
1 |
# Makefile for Sphinx documentation |
|
2 |
# |
|
3 |
|
|
4 |
# You can set these variables from the command line. |
|
5 |
SPHINXOPTS = |
|
6 |
SPHINXBUILD = sphinx-build |
|
7 |
PAPER = |
|
8 |
BUILDDIR = build |
|
9 |
GRAPHVIZ = /opt/local/bin/dot |
|
10 |
|
|
11 |
# Internal variables. |
|
12 |
PAPEROPT_a4 = -D latex_paper_size=a4 |
|
13 |
PAPEROPT_letter = -D latex_paper_size=letter |
|
14 |
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source |
|
15 |
|
|
16 |
.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest pdf |
|
17 |
|
|
18 |
help: |
|
19 |
@echo "Please use \`make <target>' where <target> is one of" |
|
20 |
@echo " html to make standalone HTML files" |
|
21 |
@echo " dirhtml to make HTML files named index.html in directories" |
|
22 |
@echo " pickle to make pickle files" |
|
23 |
@echo " json to make JSON files" |
|
24 |
@echo " htmlhelp to make HTML files and a HTML help project" |
|
25 |
@echo " qthelp to make HTML files and a qthelp project" |
|
26 |
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" |
|
27 |
@echo " changes to make an overview of all changed/added/deprecated items" |
|
28 |
@echo " linkcheck to check all external links for integrity" |
|
29 |
@echo " doctest to run all doctests embedded in the documentation (if enabled)" |
|
30 |
@echo " pdf to make PDF files" |
|
31 |
|
|
32 |
clean: |
|
33 |
-rm -rf $(BUILDDIR)/* |
|
34 |
|
|
35 |
plantuml: |
|
36 |
GRAPHVIZ_DOT=$(GRAPHVIZ) plantuml source |
|
37 |
|
|
38 |
html: |
|
39 |
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html |
|
40 |
@echo |
|
41 |
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html." |
|
42 |
|
|
43 |
dirhtml: |
|
44 |
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml |
|
45 |
@echo |
|
46 |
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." |
|
47 |
|
|
48 |
pickle: |
|
49 |
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle |
|
50 |
@echo |
|
51 |
@echo "Build finished; now you can process the pickle files." |
|
52 |
|
|
53 |
json: |
|
54 |
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json |
|
55 |
@echo |
|
56 |
@echo "Build finished; now you can process the JSON files." |
|
57 |
|
|
58 |
pdf: |
|
59 |
$(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) $(BUILDDIR)/pdf |
|
60 |
@echo |
|
61 |
@echo "Build finished. The PDF files are in $(BUILDDIR)/pdf." |
|
62 |
|
|
63 |
htmlhelp: |
|
64 |
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp |
|
65 |
@echo |
|
66 |
@echo "Build finished; now you can run HTML Help Workshop with the" \ |
|
67 |
".hhp project file in $(BUILDDIR)/htmlhelp." |
|
68 |
|
|
69 |
qthelp: |
|
70 |
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp |
|
71 |
@echo |
|
72 |
@echo "Build finished; now you can run "qcollectiongenerator" with the" \ |
|
73 |
".qhcp project file in $(BUILDDIR)/qthelp, like this:" |
|
74 |
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/DataONEArchitecture.qhcp" |
|
75 |
@echo "To view the help file:" |
|
76 |
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/DataONEArchitecture.qhc" |
|
77 |
|
|
78 |
latex: |
|
79 |
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex |
|
80 |
@echo |
|
81 |
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." |
|
82 |
@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ |
|
83 |
"run these through (pdf)latex." |
|
84 |
|
|
85 |
changes: |
|
86 |
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes |
|
87 |
@echo |
|
88 |
@echo "The overview file is in $(BUILDDIR)/changes." |
|
89 |
|
|
90 |
linkcheck: |
|
91 |
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck |
|
92 |
@echo |
|
93 |
@echo "Link check complete; look for any errors in the above output " \ |
|
94 |
"or in $(BUILDDIR)/linkcheck/output.txt." |
|
95 |
|
|
96 |
doctest: |
|
97 |
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest |
|
98 |
@echo "Testing of doctests in the sources finished, look at the " \ |
|
99 |
"results in $(BUILDDIR)/doctest/output.txt." |
docs/dev/metacat/source/plantuml.conf | ||
---|---|---|
1 |
skinparam activityFontColor black |
|
2 |
skinparam activityFontSize 10 |
|
3 |
skinparam activityFontName arial |
|
4 |
skinparam activityArrowFontColor black |
|
5 |
skinparam activityArrowFontSize 10 |
|
6 |
skinparam activityArrowFontName arial |
|
7 |
skinparam classArrowFontColor black |
|
8 |
skinparam classArrowFontSize 10 |
|
9 |
skinparam classArrowFontName arial |
|
10 |
skinparam classAttributeFontColor black |
|
11 |
skinparam classAttributeFontSize 10 |
|
12 |
skinparam classAttributeFontName arial |
|
13 |
skinparam classFontColor black |
|
14 |
skinparam classFontSize 10 |
|
15 |
skinparam classFontName arial |
|
16 |
skinparam componentFontColor black |
|
17 |
skinparam componentFontSize 10 |
|
18 |
skinparam componentFontName arial |
|
19 |
skinparam componentArrowFontColor black |
|
20 |
skinparam componentArrowFontSize 10 |
|
21 |
skinparam componentArrowFontName arial |
|
22 |
skinparam noteFontColor black |
|
23 |
skinparam noteFontSize 10 |
|
24 |
skinparam noteFontName arial |
|
25 |
skinparam packageFontColor black |
|
26 |
skinparam packageFontSize 10 |
|
27 |
skinparam packageFontName arial |
|
28 |
skinparam sequenceActorFontColor black |
|
29 |
skinparam sequenceActorFontSize 10 |
|
30 |
skinparam sequenceActorFontName arial |
|
31 |
skinparam sequenceArrowFontColor black |
|
32 |
skinparam sequenceArrowFontSize 10 |
|
33 |
skinparam sequenceArrowFontName arial |
|
34 |
skinparam sequenceGroupingFontColor black |
|
35 |
skinparam sequenceGroupingFontSize 10 |
|
36 |
skinparam sequenceGroupingFontName arial |
|
37 |
skinparam sequenceGroupingHeaderFontColor black |
|
38 |
skinparam sequenceGroupingHeaderFontSize 10 |
|
39 |
skinparam sequenceGroupingHeaderFontName arial |
|
40 |
skinparam sequenceParticipantFontColor black |
|
41 |
skinparam sequenceParticipantFontSize 10 |
|
42 |
skinparam sequenceParticipantFontName arial |
|
43 |
skinparam sequenceTitleFontColor black |
|
44 |
skinparam sequenceTitleFontSize 10 |
|
45 |
skinparam sequenceTitleFontName arial |
|
46 |
skinparam titleFontColor black |
|
47 |
skinparam titleFontSize 10 |
|
48 |
skinparam titleFontName arial |
|
49 |
skinparam usecaseFontColor black |
|
50 |
skinparam usecaseFontSize 10 |
|
51 |
skinparam usecaseFontName arial |
|
52 |
skinparam usecaseActorFontColor black |
|
53 |
skinparam usecaseActorFontSize 10 |
|
54 |
skinparam usecaseActorFontName arial |
|
55 |
skinparam usecaseArrowFontColor black |
|
56 |
skinparam usecaseArrowFontSize 10 |
|
57 |
skinparam usecaseArrowFontName arial |
docs/dev/metacat/source/replication.rst | ||
---|---|---|
1 |
Replication |
|
2 |
=========== |
|
3 |
Metacat has a built-in replication feature that allows different Metacat servers |
|
4 |
to share data (both XML documents and data files) between each other. Metacat |
|
5 |
can replicate not only its home server's original documents, but also those |
|
6 |
that were replicated from partner Metacat servers. When changes are made to |
|
7 |
one server in a replication network, the changes are automatically propogated |
|
8 |
to the network, even if the network is down. |
|
9 |
|
|
10 |
Replication allows users to manage their data locally and (by replicating them |
|
11 |
to a shared Metacat repository) to make those data available to the greater |
|
12 |
scientific community via a centralized search. In other words, your Metacat can |
|
13 |
be part of a broader network, but you retain control over the local repository |
|
14 |
and how it is managed. |
|
15 |
|
|
16 |
For example, the KNB Network (Figure 6.1), which currently consists of ten |
|
17 |
different Metacat servers from around the world, uses replication to "join" |
|
18 |
the disperate servers to form a single robust and searchable data |
|
19 |
repository--facilitating data discovery, while leaving the data ownership and |
|
20 |
management with the local administrators. |
|
21 |
|
|
22 |
.. figure:: images/screenshots/image059.jpg |
|
23 |
:align: center |
|
24 |
|
|
25 |
A map of the KNB Metacat network. |
|
26 |
|
|
27 |
When properly configured, Metacat's replication mechanism can be triggered by |
|
28 |
several types of events that occur on either the home or partner server: a |
|
29 |
document insertion, an update, or an automatic replication (i.e., Delta-T |
|
30 |
monitoring), which is set at a user-specified time interval. |
|
31 |
|
|
32 |
+----------------------+----------------------------------------------------------+ |
|
33 |
| Replication Triggers | Description | |
|
34 |
+======================+==========================================================+ |
|
35 |
| Insert | Whenever a document is inserted into Metacat, the server | |
|
36 |
| | notifies each server in its replication list | |
|
37 |
| | that it has a new file available. | |
|
38 |
+----------------------+----------------------------------------------------------+ |
|
39 |
| Update | Whenever a document is updated, the server notifies | |
|
40 |
| | each server in its replication list of the update. | |
|
41 |
+----------------------+----------------------------------------------------------+ |
|
42 |
| Delta-T monitoring | At a user-specified time interval, Metacat checks each | |
|
43 |
| | of the servers in its replication list | |
|
44 |
| | for updated documents. | |
|
45 |
+----------------------+----------------------------------------------------------+ |
|
46 |
|
|
47 |
Configuring Replication |
|
48 |
----------------------- |
|
49 |
To configure replication, you must configure both the home and partner servers: |
|
50 |
|
|
51 |
1. Create a list of partner servers on your home server using the Replication Control Panel |
|
52 |
2. Create certificate files for the home server |
|
53 |
3. Create certificate files for the partner server |
|
54 |
4. Import partner certificate files to the home server |
|
55 |
5. Import home certificate to the partner server |
|
56 |
6. Update your Metacat database |
|
57 |
|
|
58 |
Each step is discussed in more detail in the following sections. |
|
59 |
|
|
60 |
Using the Replication Control Panel |
|
61 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
62 |
To add, remove, or alter servers on your home server's Replication list, or to |
|
63 |
activate and customize the Delta-T handler, use the Replication control panel, |
|
64 |
which is accessed via the Metacat Administration interface at the following URL:: |
|
65 |
|
|
66 |
http://somehost.somelocation.edu/context/admin |
|
67 |
|
|
68 |
"http://somehost.somelocation.edu/context" should be replaced with the name |
|
69 |
of your Metacat server and context (e.g., http://knb.ecoinformatics.org/knb/). |
|
70 |
You must be logged in to Metacat as an administrator. |
|
71 |
|
|
72 |
.. figure:: images/screenshots/image061.jpg |
|
73 |
:align: center |
|
74 |
|
|
75 |
Replication control panel. |
|
76 |
|
|
77 |
Note that currently, you cannot use the Replication Control Panel to remove a |
|
78 |
server after a replication has occurred. At this point in time, the only way to |
|
79 |
remove a replication server after replication has occurred is to remove the |
|
80 |
certificates. |
|
81 |
|
|
82 |
Generating and Exchanging Security Certificates |
|
83 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
84 |
Before you can take advantage of Metacat's replication feature, you must |
|
85 |
generate security certificates on both the replication partner and home servers. |
|
86 |
Depending on how the certificates are generated, the certificates may need to be |
|
87 |
exchanged so that each machine "trusts" that the other has replication access. |
|
88 |
Certificates that are purchased from a commercial and well-recognized |
|
89 |
Certificate Authority do not need to be exchanged with the other replication |
|
90 |
partner before replication takes place. Metacat replication relies on SSL with |
|
91 |
client certificate authentication enabled. When a replication partner server |
|
92 |
communicates with another replication partner, it presents a certificate that |
|
93 |
serves to verify and authenticate that the server is trusted. |
|
94 |
|
|
95 |
If you must generate a self-signed certificate, the partner replication server |
|
96 |
will need the public certificate added to its existing Certificate Authorities. |
|
97 |
|
|
98 |
Generate Certificates for Metacat running under Apache/Tomcat |
|
99 |
............................................................. |
|
100 |
Note: Instructions are for Ubuntu/Debian systems. |
|
101 |
|
|
102 |
1. Generate a private key using openssl. The key will be named |
|
103 |
``<hostname>-apache.key``, where ``<hostname>`` is the name of your Metacat |
|
104 |
server. Example values for the individual key fields are included in the |
|
105 |
table below. |
|
106 |
|
|
107 |
:: |
|
108 |
|
|
109 |
openssl req -new -out REQ.pem -keyout <hostname>-apache.key |
|
110 |
|
|
111 |
+--------------------------+-------------------------------------------------------------------------+ |
|
112 |
| Key Field | Description and Example Value | |
|
113 |
+==========================+=========================================================================+ |
|
114 |
| Country Name | Two letter country code (e.g., US) | |
|
115 |
+--------------------------+-------------------------------------------------------------------------+ |
|
116 |
| State or Province Name | The name of your state or province spelled in full (e.g., California) | |
|
117 |
+--------------------------+-------------------------------------------------------------------------+ |
|
118 |
| Locality Name | The name of your city (e.g., Santa Barbara) | |
|
119 |
+--------------------------+-------------------------------------------------------------------------+ |
|
120 |
| Organization Name | The company or organization name (e.g., UCSB) | |
|
121 |
+--------------------------+-------------------------------------------------------------------------+ |
|
122 |
| Organizational Unit Name | The department or section name (e.g., NCEAS) | |
|
123 |
+--------------------------+-------------------------------------------------------------------------+ |
|
124 |
| Common Name | The host server name without port numbers (e.g., myserver.mydomain.edu) | |
|
125 |
+--------------------------+-------------------------------------------------------------------------+ |
|
126 |
| Email Address | Administrator's contact email (e.g., administrator@mydomain.edu) | |
|
127 |
+--------------------------+-------------------------------------------------------------------------+ |
|
128 |
| A challenge password | --leave this field blank-- | |
|
129 |
+--------------------------+-------------------------------------------------------------------------+ |
|
130 |
| An optional company name | --leave this field blank-- | |
|
131 |
+--------------------------+-------------------------------------------------------------------------+ |
|
132 |
|
|
133 |
2. Create the local certificate file by running the command: |
|
134 |
|
|
135 |
:: |
|
136 |
|
|
137 |
openssl req -x509 -days 800 -in REQ.pem -key <hostname>-apache.key -out <hostname>-apache.crt |
|
138 |
|
|
139 |
Use the same ``<hostname>`` you used when you generated the key. A file named |
|
140 |
``<hostname>-apache.crt`` will be created in the directory from which you |
|
141 |
ran the openssl command. Note: You can name the certificate file anything |
|
142 |
you'd like, but keep in mind that the file will be sent to the partner |
|
143 |
machine used for replication. The certificate name should have enough |
|
144 |
meaning that someone who sees it on that machine can figure out where it |
|
145 |
came from and for what purpose it should be used. |
|
146 |
|
|
147 |
3. Enter the certificate into Apache's security configuration. This will |
|
148 |
be used to identify your server to a replication partner. You must |
|
149 |
register the certificate in the local Apache instance. Note that the |
|
150 |
security files may be in a different directory from the one used in the |
|
151 |
instructions depending on how you installed Apache. Copy the certificate and |
|
152 |
key file using the following commands: |
|
153 |
|
|
154 |
:: |
|
155 |
|
|
156 |
sudo cp <hostname>-apache.crt /etc/ssl/certs |
|
157 |
sudo cp <hostname>-apache.key /etc/ssl/private |
|
158 |
|
|
159 |
4. Apache needs to be configured to request a “client certificate” when the |
|
160 |
replication API is utilized. The helper file named "knb-ssl" has default |
|
161 |
rules that configure Apache for SSL and client certificate authentication. |
|
162 |
Set up these SSL settings by copying the knb-ssl file into the ``sites-available`` |
|
163 |
directory, editing pertinent values to match your system and running |
|
164 |
``a2ensite`` to enable the site. (Note: some settings in knb-ssl need to be |
|
165 |
changed to match the specifics of your system.) |
|
166 |
|
|
167 |
:: |
|
168 |
|
|
169 |
sudo cp <metacat_helper_dir>/knb-ssl <apache_install_dir>/sites-available |
|
170 |
sudo a2ensite knb-ssl |
|
171 |
|
|
172 |
5. Restart Apache to bring in changes by typing: |
|
173 |
|
|
174 |
:: |
|
175 |
|
|
176 |
sudo /etc/init.d/apache2 restart |
|
177 |
|
|
178 |
6. If using a self-signed certificate, SCP ``<hostname>-apache.crt`` to the |
|
179 |
replication partner machine where it will be added as an additional |
|
180 |
Certificate Authority. |
|
181 |
|
|
182 |
If using self-signed certificates, after you have created and SCP'd a |
|
183 |
certificate file to each replication partner, and received a certificate file |
|
184 |
from each partner in return, both home and partner servers must add the |
|
185 |
respective partner certificates as Certificate Authorities. |
|
186 |
|
|
187 |
|
|
188 |
To import a certificate |
|
189 |
....................... |
|
190 |
1. Copy it into the Apache directory |
|
191 |
|
|
192 |
:: |
|
193 |
|
|
194 |
sudo cp <remotehostfilename> /etc/ssl/certs/ |
|
195 |
|
|
196 |
2. Rehash the certificates for Apache by running: |
|
197 |
|
|
198 |
:: |
|
199 |
|
|
200 |
cd /etc/ssl/certs |
|
201 |
sudo c_rehash |
|
202 |
|
|
203 |
|
|
204 |
where the ``<remotehostfilename>`` is the name of the certificate file |
|
205 |
created on the remote partner machine and SCP'd to the home machine. |
|
206 |
|
|
207 |
Update your Metacat database |
|
208 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
209 |
The simplest way to update the Metacat database to use replication is to use |
|
210 |
the Replication Control Panel. You can also update the database u |
|
211 |
sing SQL. Instructions for both options are included in this section. |
|
212 |
|
|
213 |
.. figure:: images/screenshots/image063.jpg |
|
214 |
:align: center |
|
215 |
|
|
216 |
Using the Replication Control Panel to update the Metacat database. |
|
217 |
|
|
218 |
To update your Metacat database to use replication, select the "Add this server" |
|
219 |
radio button from the Replication Control Panel, enter the partner server name, |
|
220 |
and specify how the replication should occur (whether to replicate xml, data, |
|
221 |
or use the local machine as a hub). |
|
222 |
|
|
223 |
To update the database using SQL |
|
224 |
................................ |
|
225 |
|
|
226 |
1. Log in to the database |
|
227 |
|
|
228 |
:: |
|
229 |
|
|
230 |
psql -U metacat -W -h localhost metacat |
|
231 |
|
|
232 |
2. Select all rows from the replication table |
|
233 |
|
|
234 |
:: |
|
235 |
|
|
236 |
select * from xml_replication; |
|
237 |
|
|
238 |
3. Insert the partner server. |
|
239 |
|
|
240 |
:: |
|
241 |
|
|
242 |
INSERT INTO xml_replication (server,last_checked,replicate,datareplicate,hub) VALUES ('<partner.server/context>/servlet/replication',NULL,1,1,0); |
|
243 |
|
|
244 |
Where ``<partner.server/context>`` is the name of the partner server and |
|
245 |
context. The values 'NULL, 1,1,0' indicate (respectively) the last time |
|
246 |
replication occurred, that XML docs should be replicated to the partner |
|
247 |
server, that data files should be replicated to the partner server, and |
|
248 |
that the local server should not act as a hub. Set a value of 'NULL,0,0,0' |
|
249 |
if your Metacat is only receiving documents from the partner site and not |
|
250 |
replicating to that site. |
|
251 |
|
|
252 |
4. Exit the database |
|
253 |
5. Restart Apache and Tomcat on both home and partner replication machines |
docs/dev/metacat/source/dataone.rst | ||
---|---|---|
1 |
DataONE Member Nodes |
|
2 |
==================== |
|
3 |
|
|
4 |
Chapter to be written. |
|
5 |
|
docs/dev/metacat/source/oaipmh.rst | ||
---|---|---|
1 |
OAI Protocol for Metadata Harvesting |
|
2 |
==================================== |
|
3 |
|
|
4 |
Chapter to be written. |
|
5 |
|
docs/dev/metacat/source/themes/readable/theme.conf | ||
---|---|---|
1 |
[theme] |
|
2 |
inherit = sphinxdoc |
|
3 |
stylesheet = readable.css |
|
4 |
pygments_style = sphinx |
|
5 |
|
|
6 |
[options] |
|
7 |
bgcolor = #FFFFFF |
docs/dev/metacat/source/themes/readable/static/readable.css | ||
---|---|---|
1 |
/** |
|
2 |
* Sphinx theme based on sphinxdoc and arc90 readability.css |
|
3 |
* Dave Vieglais |
|
4 |
*/ |
|
5 |
|
|
6 |
body { |
|
7 |
font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', 'Verdana', sans-serif; |
|
8 |
/*font-family:"Palatino Linotype", "Book Antiqua", Palatino, serif;*/ |
|
9 |
font-size: 14px; |
|
10 |
letter-spacing: -0.01em; |
|
11 |
line-height: 150%; |
|
12 |
text-align: center; |
|
13 |
/*background-color: #BFD1D4;*/ |
|
14 |
/*background: #F4F3DB;*/ |
|
15 |
background: white; |
|
16 |
color: black; |
|
17 |
/*color: #222;*/ |
|
18 |
padding: 0; |
|
19 |
/*border: 1px solid #aaa;*/ |
|
20 |
|
|
21 |
margin: 0px 80px 0px 80px; |
|
22 |
min-width: 740px; |
|
23 |
} |
|
24 |
|
|
25 |
a { |
|
26 |
/*color: #CA7900;*/ |
|
27 |
color: #003399; |
|
28 |
text-decoration: none; |
|
29 |
} |
|
30 |
|
|
31 |
a:hover { |
|
32 |
/*color: #2491CF;*/ |
|
33 |
text-decoration:underline; |
|
34 |
} |
|
35 |
|
|
36 |
pre { |
|
37 |
font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; |
|
38 |
font-size: 0.95em; |
|
39 |
font-weight: bold; |
|
40 |
letter-spacing: 0.015em; |
|
41 |
padding: 0.5em; |
|
42 |
border: 1px solid darkGray; |
|
43 |
background-color: white; |
|
44 |
color: #203030; |
|
45 |
margin-left: 1em; |
|
46 |
} |
|
47 |
|
|
48 |
td.linenos pre { |
|
49 |
padding: 0.5em 0; |
|
50 |
border: 0; |
|
51 |
background-color: transparent; |
|
52 |
color: #aaa; |
|
53 |
} |
|
54 |
|
|
55 |
table.highlighttable { |
|
56 |
margin-left: 0.5em; |
|
57 |
} |
|
58 |
|
|
59 |
table.highlighttable td { |
|
60 |
padding: 0 0.5em 0 0.5em; |
|
61 |
} |
|
62 |
|
|
63 |
cite, code, tt { |
|
64 |
font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; |
|
65 |
font-size: 0.95em; |
|
66 |
letter-spacing: 0.01em; |
|
67 |
} |
|
68 |
|
|
69 |
hr { |
|
70 |
border: 1px solid #abc; |
|
71 |
margin: 2em; |
|
72 |
} |
|
73 |
|
|
74 |
tt { |
|
75 |
background-color: #f2f2f2; |
|
76 |
border-bottom: 1px solid #ddd; |
|
77 |
color: #333; |
|
78 |
} |
|
79 |
|
|
80 |
tt.descname { |
|
81 |
background-color: transparent; |
|
82 |
font-weight: bold; |
|
83 |
font-size: 1.2em; |
|
84 |
border: 0; |
|
85 |
} |
|
86 |
|
|
87 |
tt.descclassname { |
|
88 |
background-color: transparent; |
|
89 |
border: 0; |
|
90 |
} |
|
91 |
|
|
92 |
tt.xref { |
|
93 |
background-color: transparent; |
|
94 |
font-weight: bold; |
|
95 |
border: 0; |
|
96 |
} |
|
97 |
|
|
98 |
a tt { |
|
99 |
background-color: transparent; |
|
100 |
font-weight: bold; |
|
101 |
border: 0; |
|
102 |
/*color: #CA7900;*/ |
|
103 |
color: inherit; |
|
104 |
} |
|
105 |
|
|
106 |
/*a tt:hover { |
|
107 |
color: #2491CF; |
|
108 |
}*/ |
|
109 |
|
|
110 |
.field-list ul { |
|
111 |
margin: 0; |
|
112 |
padding-left: 1em; |
|
113 |
} |
|
114 |
|
|
115 |
.field-list p { |
|
116 |
margin: 0; |
|
117 |
} |
|
118 |
|
|
119 |
dl { |
|
120 |
margin-bottom: 15px; |
|
121 |
} |
|
122 |
|
|
123 |
dd p { |
|
124 |
margin-top: 0px; |
|
125 |
} |
|
126 |
|
|
127 |
dd ul, dd table { |
|
128 |
margin-bottom: 10px; |
|
129 |
} |
|
130 |
|
|
131 |
dd { |
|
132 |
margin-top: 3px; |
|
133 |
margin-bottom: 10px; |
|
134 |
margin-left: 30px; |
|
135 |
} |
|
136 |
|
|
137 |
.refcount { |
|
138 |
color: #060; |
|
139 |
} |
|
140 |
|
|
141 |
dt:target, |
|
142 |
.highlight { |
|
143 |
background-color: #fbe54e; |
|
144 |
} |
|
145 |
|
|
146 |
dl.glossary dt { |
|
147 |
font-weight: bold; |
|
148 |
font-size: 1.1em; |
|
149 |
} |
|
150 |
|
|
151 |
pre { |
|
152 |
line-height: 120%; |
|
153 |
} |
|
154 |
|
|
155 |
pre a { |
|
156 |
color: inherit; |
|
157 |
/*text-decoration: underline;*/ |
|
158 |
} |
|
159 |
|
|
160 |
.first { |
|
161 |
margin-top: 0 !important; |
|
162 |
} |
|
163 |
|
|
164 |
div.document { |
|
165 |
background-color: white; |
|
166 |
text-align: left; |
|
167 |
background-image: url(contents.png); |
|
168 |
background-repeat: repeat-x; |
|
169 |
} |
|
170 |
|
|
171 |
/* |
|
172 |
div.documentwrapper { |
|
173 |
width: 100%; |
|
174 |
} |
|
175 |
*/ |
|
176 |
div.banner { |
|
177 |
height: 5.5em; |
|
178 |
} |
|
179 |
|
|
180 |
div.banner img { |
|
181 |
height: 5em; |
|
182 |
float: left; |
|
183 |
} |
|
184 |
|
|
185 |
div.banner p.title { |
|
186 |
font-weight: bold; |
|
187 |
font-size: 2em; |
|
188 |
text-align: left; |
|
189 |
margin-left: 2em; |
|
190 |
} |
|
191 |
|
|
192 |
div.clearer { |
|
193 |
clear: both; |
|
194 |
} |
|
195 |
|
|
196 |
div.related h3 { |
|
197 |
display: none; |
|
198 |
} |
|
199 |
|
|
200 |
div.related ul { |
|
201 |
background-image: url(navigation.png); |
|
202 |
height: 2em; |
|
203 |
list-style: none; |
|
204 |
border-top: 1px solid #ddd; |
|
205 |
border-bottom: 1px solid #ddd; |
|
206 |
margin: 0; |
|
207 |
padding-left: 10px; |
|
208 |
} |
|
209 |
|
|
210 |
div.related ul li { |
|
211 |
margin: 0; |
|
212 |
padding: 0; |
|
213 |
height: 2em; |
|
214 |
float: left; |
|
215 |
} |
|
216 |
|
|
217 |
div.related ul li.right { |
|
218 |
float: right; |
|
219 |
margin-right: 5px; |
|
220 |
} |
|
221 |
|
|
222 |
div.related ul li a { |
|
223 |
margin: 0; |
|
224 |
padding: 0 5px 0 5px; |
|
225 |
line-height: 1.75em; |
|
226 |
/*color: #EE9816;*/ |
|
227 |
color: #555; |
|
228 |
} |
|
229 |
|
|
230 |
div.related ul li a:hover { |
|
231 |
/*color: #3CA8E7;*/ |
|
232 |
} |
|
233 |
|
|
234 |
div.body { |
|
235 |
margin: 0; |
|
236 |
padding: 0.5em 20px 20px 20px; |
|
237 |
} |
|
238 |
|
|
239 |
div.bodywrapper { |
|
240 |
/*margin: 0 240px 0 0;*/ |
|
241 |
/*border-right: 1px solid #ccc;*/ |
|
242 |
} |
|
243 |
|
|
244 |
div.body a { |
|
245 |
/*text-decoration: underline;*/ |
|
246 |
text-decoration:inherit; |
|
247 |
} |
|
248 |
|
|
249 |
div.body a:hover { |
|
250 |
text-decoration: underline; |
|
251 |
} |
|
252 |
|
|
253 |
div.sphinxsidebar { |
|
254 |
margin: 0; |
|
255 |
padding: 0.5em 15px 15px 0; |
|
256 |
width: 210px; |
|
257 |
float: right; |
|
258 |
text-align: left; |
|
259 |
/* margin-left: -100%; */ |
|
260 |
} |
|
261 |
|
|
262 |
div.sphinxsidebarwrapper { |
|
263 |
position: fixed; |
|
264 |
width: 210px; |
|
265 |
} |
|
266 |
|
|
267 |
div.sphinxsidebar h4, div.sphinxsidebar h3 { |
|
268 |
font-size: 0.9em; |
|
269 |
/*margin: 1em 0 0.5em 0; |
|
270 |
padding: 0.1em 0 0.1em 0.5em; |
|
271 |
color: white; |
|
272 |
border: 1px solid #86989B; |
|
273 |
background-color: #AFC1C4; */ |
|
274 |
} |
|
275 |
|
|
276 |
div.sphinxsidebar h3 a { |
|
277 |
color: white; |
|
278 |
} |
|
279 |
|
|
280 |
div.sphinxsidebar a { |
|
281 |
color: #555; |
|
282 |
} |
|
283 |
|
|
284 |
div.sphinxsidebar ul { |
|
285 |
padding-left: 1.5em; |
|
286 |
margin-top: 7px; |
|
287 |
list-style: none; |
|
288 |
padding: 0; |
|
289 |
line-height: 130%; |
|
290 |
} |
|
291 |
|
|
292 |
div.sphinxsidebar ul ul { |
|
293 |
list-style: square; |
|
294 |
margin-left: 20px; |
|
295 |
} |
|
296 |
|
|
297 |
p { |
|
298 |
margin: 0.8em 0 0.5em 0; |
|
299 |
} |
|
300 |
|
|
301 |
p.rubric { |
|
302 |
font-weight: bold; |
|
303 |
} |
|
304 |
|
|
305 |
div.sidebar { |
|
306 |
margin: 0 0 0.5em 1em; |
|
307 |
border: 1px solid #ddb; |
|
308 |
padding: 7px 7px 0 7px; |
|
309 |
background-color: #B3B4C9; |
|
310 |
width: 40%; |
|
311 |
float: right; |
|
312 |
} |
|
313 |
|
|
314 |
div.quotebar { |
|
315 |
background-color: #f8f8f8; |
|
316 |
max-width: 250px; |
|
317 |
float: right; |
|
318 |
padding: 2px 7px; |
|
319 |
border: 1px solid #ccc; |
|
320 |
} |
|
321 |
|
|
322 |
p.sidebar-title { |
|
323 |
font-weight: bold; |
|
324 |
} |
|
325 |
|
|
326 |
div.topic { |
|
327 |
background-color: #f8f8f8; |
|
328 |
border: 1px solid #ccc; |
|
329 |
padding: 7px 7px 0 7px; |
|
330 |
margin: 10px 0 10px 0; |
|
331 |
} |
|
332 |
|
|
333 |
p.topic-title { |
|
334 |
font-size: 1.1em; |
|
335 |
font-weight: bold; |
|
336 |
} |
|
337 |
|
|
338 |
h1 { |
|
339 |
margin: 0; |
|
340 |
padding: 0.7em 0 0.3em 0; |
|
341 |
/*font-size: 1.5em;*/ |
|
342 |
/*color: #11557C;*/ |
|
343 |
display: block; |
|
344 |
border-bottom: 1px solid #333; |
|
345 |
font-size: 1.4em; |
|
346 |
} |
|
347 |
|
|
348 |
h2 { |
|
349 |
margin: 1.3em 0 0.2em 0; |
|
350 |
font-size: 1.35em; |
|
351 |
padding: 0; |
|
352 |
} |
|
353 |
|
|
354 |
h3 { |
|
355 |
margin: 1em 0 -0.3em 0; |
|
356 |
font-size: 1.2em; |
|
357 |
} |
|
358 |
|
|
359 |
div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a { |
|
360 |
color: black!important; |
|
361 |
} |
|
362 |
|
|
363 |
h1 a.anchor, h2 a.anchor, h3 a.anchor, h4 a.anchor, h5 a.anchor, h6 a.anchor { |
|
364 |
display: none; |
|
365 |
margin: 0 0 0 0.3em; |
|
366 |
padding: 0 0.2em 0 0.2em; |
|
367 |
color: #aaa!important; |
|
368 |
} |
|
369 |
|
|
370 |
h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, |
|
371 |
h5:hover a.anchor, h6:hover a.anchor { |
|
372 |
display: inline; |
|
373 |
} |
|
374 |
|
|
375 |
h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover, |
|
376 |
h5 a.anchor:hover, h6 a.anchor:hover { |
|
377 |
color: #777; |
|
378 |
background-color: #eee; |
|
379 |
} |
|
380 |
|
|
381 |
table { |
|
382 |
border-collapse: collapse; |
|
383 |
margin: 0 -0.5em 0 -0.5em; |
|
384 |
} |
|
385 |
|
|
386 |
table td, table th { |
|
387 |
padding: 0.2em 0.5em 0.2em 0.5em; |
|
388 |
} |
|
389 |
|
|
390 |
div.footer { |
|
391 |
/*background-color: #E3EFF1;*/ |
|
392 |
color: #86989B; |
|
393 |
padding: 3px 8px 3px 0; |
|
394 |
clear: both; |
|
395 |
font-size: 0.8em; |
|
396 |
text-align: right; |
|
397 |
} |
|
398 |
|
|
399 |
div.footer a { |
|
400 |
color: #86989B; |
|
401 |
text-decoration: underline; |
|
402 |
} |
|
403 |
|
|
404 |
div.pagination { |
|
405 |
margin-top: 2em; |
|
406 |
padding-top: 0.5em; |
|
407 |
border-top: 1px solid black; |
|
408 |
text-align: center; |
|
409 |
} |
|
410 |
|
|
411 |
div.sphinxsidebar ul.toc { |
|
412 |
margin: 1em 0 1em 0; |
|
413 |
padding: 0 0 0 0.5em; |
|
414 |
list-style: none; |
|
415 |
} |
|
416 |
|
|
417 |
div.sphinxsidebar ul.toc li { |
|
418 |
margin: 0.5em 0 0.5em 0; |
|
419 |
font-size: 0.9em; |
|
420 |
line-height: 130%; |
|
421 |
} |
|
422 |
|
|
423 |
div.sphinxsidebar ul.toc li p { |
|
424 |
margin: 0; |
|
425 |
padding: 0; |
|
426 |
} |
|
427 |
|
|
428 |
div.sphinxsidebar ul.toc ul { |
|
429 |
margin: 0.2em 0 0.2em 0; |
|
430 |
padding: 0 0 0 1.8em; |
|
431 |
} |
|
432 |
|
|
433 |
div.sphinxsidebar ul.toc ul li { |
|
434 |
padding: 0; |
|
435 |
} |
|
436 |
|
|
437 |
div.admonition, div.warning { |
|
438 |
font-size: 0.9em; |
|
439 |
margin: 1em 0 0 0; |
|
440 |
border: 1px solid #86989B; |
|
441 |
background-color: #f7f7f7; |
|
442 |
} |
|
443 |
|
|
444 |
div.admonition p, div.warning p { |
|
445 |
margin: 0.5em 1em 0.5em 1em; |
|
446 |
padding: 0; |
|
447 |
} |
|
448 |
|
|
449 |
div.admonition pre, div.warning pre { |
|
450 |
margin: 0.4em 1em 0.4em 1em; |
|
451 |
} |
|
452 |
|
|
453 |
div.admonition p.admonition-title, |
|
454 |
div.warning p.admonition-title { |
|
455 |
margin: 0; |
|
456 |
padding: 0.1em 0 0.1em 0.5em; |
|
457 |
color: white; |
|
458 |
border-bottom: 1px solid #86989B; |
|
459 |
font-weight: bold; |
|
460 |
background-color: #AFC1C4; |
|
461 |
} |
|
462 |
|
|
463 |
div.warning { |
|
464 |
border: 1px solid #940000; |
|
465 |
} |
|
466 |
|
|
467 |
div.warning p.admonition-title { |
|
468 |
background-color: #CF0000; |
|
469 |
border-bottom-color: #940000; |
|
470 |
} |
|
471 |
|
|
472 |
div.admonition ul, div.admonition ol, |
|
473 |
div.warning ul, div.warning ol { |
|
474 |
margin: 0.1em 0.5em 0.5em 3em; |
|
475 |
padding: 0; |
|
476 |
} |
|
477 |
|
|
478 |
div.versioninfo { |
|
479 |
margin: 1em 0 0 0; |
|
480 |
border: 1px solid #ccc; |
|
481 |
background-color: #DDEAF0; |
|
482 |
padding: 8px; |
|
483 |
line-height: 1.3em; |
|
484 |
font-size: 0.9em; |
|
485 |
} |
|
486 |
|
|
487 |
|
|
488 |
a.headerlink { |
|
489 |
color: #c60f0f!important; |
|
490 |
font-size: 1em; |
|
491 |
margin-left: 6px; |
|
492 |
padding: 0 4px 0 4px; |
|
493 |
text-decoration: none!important; |
|
494 |
visibility: hidden; |
|
495 |
} |
|
496 |
|
|
497 |
h1:hover > a.headerlink, |
|
498 |
h2:hover > a.headerlink, |
|
499 |
h3:hover > a.headerlink, |
|
500 |
h4:hover > a.headerlink, |
|
501 |
h5:hover > a.headerlink, |
|
502 |
h6:hover > a.headerlink, |
|
503 |
dt:hover > a.headerlink { |
|
504 |
visibility: visible; |
|
505 |
} |
|
506 |
|
|
507 |
a.headerlink:hover { |
|
508 |
background-color: #ccc; |
|
509 |
color: white!important; |
|
510 |
} |
|
511 |
|
|
512 |
table.indextable td { |
|
513 |
text-align: left; |
|
514 |
vertical-align: top; |
|
515 |
} |
|
516 |
|
|
517 |
table.indextable dl, table.indextable dd { |
|
518 |
margin-top: 0; |
|
519 |
margin-bottom: 0; |
|
520 |
} |
|
521 |
|
|
522 |
table.indextable tr.pcap { |
|
523 |
height: 10px; |
|
524 |
} |
|
525 |
|
|
526 |
table.indextable tr.cap { |
|
527 |
margin-top: 10px; |
|
528 |
background-color: #f2f2f2; |
|
529 |
} |
|
530 |
|
|
531 |
img.toggler { |
|
532 |
margin-right: 3px; |
|
533 |
margin-top: 3px; |
|
534 |
cursor: pointer; |
|
535 |
} |
|
536 |
|
|
537 |
form.pfform { |
|
538 |
margin: 10px 0 20px 0; |
|
539 |
} |
|
540 |
|
|
541 |
table.contentstable { |
|
542 |
width: 90%; |
|
543 |
} |
|
544 |
|
|
545 |
table.contentstable p.biglink { |
|
546 |
line-height: 150%; |
|
547 |
} |
|
548 |
|
|
549 |
a.biglink { |
|
550 |
font-size: 1.3em; |
|
551 |
} |
|
552 |
|
|
553 |
span.linkdescr { |
|
554 |
font-style: italic; |
|
555 |
padding-top: 5px; |
|
556 |
font-size: 90%; |
|
557 |
} |
|
558 |
|
|
559 |
ul.search { |
|
560 |
margin: 10px 0 0 20px; |
|
561 |
padding: 0; |
|
562 |
} |
|
563 |
|
|
564 |
ul.search li { |
|
565 |
padding: 5px 0 5px 20px; |
|
566 |
background-image: url(file.png); |
|
567 |
background-repeat: no-repeat; |
|
568 |
background-position: 0 7px; |
|
569 |
} |
|
570 |
|
|
571 |
ul.search li a { |
|
572 |
font-weight: bold; |
|
573 |
} |
|
574 |
|
|
575 |
ul.search li div.context { |
|
576 |
color: #888; |
|
577 |
margin: 2px 0 0 30px; |
|
578 |
text-align: left; |
|
579 |
} |
|
580 |
|
|
581 |
ul.keywordmatches li.goodmatch a { |
|
582 |
font-weight: bold; |
|
583 |
} |
|
584 |
|
|
585 |
img.math { |
|
586 |
vertical-align: center; |
|
587 |
} |
|
588 |
|
|
589 |
div.math { |
|
590 |
text-align: center; |
|
591 |
} |
|
592 |
|
|
593 |
span.eqno { |
|
594 |
float: right; |
|
595 |
} |
|
596 |
|
|
597 |
img.logo { |
|
598 |
border: 0; |
|
599 |
} |
|
600 |
|
|
601 |
div.banner img.logo-right { |
|
602 |
border: 0; |
|
603 |
float: right; |
|
604 |
} |
docs/dev/metacat/source/themes/readable/layout.html | ||
---|---|---|
1 |
{%- block doctype -%} |
|
2 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
|
3 |
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
|
4 |
{%- endblock %} |
|
5 |
{%- set reldelim1 = reldelim1 is not defined and ' »' or reldelim1 %} |
|
6 |
{%- set reldelim2 = reldelim2 is not defined and ' |' or reldelim2 %} |
|
7 |
|
|
8 |
{%- macro relbar() %} |
|
9 |
<div class="related"> |
|
10 |
<h3>{{ _('Navigation') }}</h3> |
|
11 |
<ul> |
|
12 |
|
|
13 |
{%- if pagename != "search" %} |
|
14 |
<li class="right"> |
|
15 |
<span id="searchbox" style="display: none; margin-right: 10px"> |
|
16 |
<form class="search" action="{{ pathto('search') }}" method="get"> |
|
17 |
<input type="text" name="q" size="18" /> |
|
18 |
<input type="submit" value="{{ _('Go') }}" /> |
|
19 |
<input type="hidden" name="check_keywords" value="yes" /> |
|
20 |
<input type="hidden" name="area" value="default" /> |
|
21 |
</form> |
|
22 |
</span> |
|
23 |
</li> |
|
24 |
<script type="text/javascript">$('#searchbox').show(0);</script> |
|
25 |
{%- endif %} |
|
26 |
|
|
27 |
|
|
28 |
{%- for rellink in rellinks %} |
|
29 |
<li class="right"> |
|
30 |
<a href="{{ pathto(rellink[0]) }}" title="{{ rellink[1]|striptags }}" |
|
31 |
{{ accesskey(rellink[2]) }}>{{ rellink[3] }}</a> |
|
32 |
{{ reldelim2 }}</li> |
|
33 |
{%- endfor %} |
|
34 |
|
|
35 |
|
|
36 |
|
|
37 |
{%- block rootrellink %} |
|
38 |
<li><a href="{{ pathto(master_doc) }}">{{ shorttitle|e }}</a>{{ reldelim1 }}</li> |
|
39 |
{%- endblock %} |
|
40 |
{%- for parent in parents %} |
|
41 |
<li><a href="{{ parent.link|e }}" {% if loop.last %}{{ accesskey("U") }}{% endif %}>{{ parent.title }}</a>{{ reldelim1 }}</li> |
|
42 |
{%- endfor %} |
|
43 |
{%- block relbaritems %} {% endblock %} |
|
44 |
</ul> |
|
45 |
|
|
46 |
</div> |
|
47 |
{%- endmacro %} |
|
48 |
|
|
49 |
{%- macro sidebar() %} |
|
50 |
{%- if not embedded %}{% if not theme_nosidebar|tobool %} |
|
51 |
<div class="sphinxsidebar"> |
|
52 |
<div class="sphinxsidebarwrapper"> |
|
53 |
{%- block sidebarlogo %} |
|
54 |
{%- if logo %} |
|
55 |
<p class="logo"><a href="{{ pathto(master_doc) }}"> |
|
56 |
<img class="logo" src="{{ pathto('_static/' + logo, 1) }}" alt="Logo"/> |
|
57 |
</a></p> |
|
58 |
{%- endif %} |
|
59 |
{%- endblock %} |
|
60 |
{%- block sidebartoc %} |
|
61 |
{%- if display_toc %} |
|
62 |
<h3><a href="{{ pathto(master_doc) }}">{{ _('Table Of Contents') }}</a></h3> |
|
63 |
{{ toc }} |
|
64 |
{%- endif %} |
|
65 |
{%- endblock %} |
|
66 |
{%- block sidebarrel %} |
|
67 |
{%- if prev %} |
|
68 |
<h4>{{ _('Previous topic') }}</h4> |
|
69 |
<p class="topless"><a href="{{ prev.link|e }}" |
|
70 |
title="{{ _('previous chapter') }}">{{ prev.title }}</a></p> |
|
71 |
{%- endif %} |
|
72 |
{%- if next %} |
|
73 |
<h4>{{ _('Next topic') }}</h4> |
|
74 |
<p class="topless"><a href="{{ next.link|e }}" |
|
75 |
title="{{ _('next chapter') }}">{{ next.title }}</a></p> |
|
76 |
{%- endif %} |
|
77 |
{%- endblock %} |
|
78 |
{%- block sidebarsourcelink %} |
|
79 |
{%- if show_source and has_source and sourcename %} |
|
80 |
<h3>{{ _('This Page') }}</h3> |
|
81 |
<ul class="this-page-menu"> |
|
82 |
<li><a href="{{ pathto('_sources/' + sourcename, true)|e }}" |
|
83 |
rel="nofollow">{{ _('Show Source') }}</a></li> |
|
84 |
</ul> |
|
85 |
{%- endif %} |
|
86 |
{%- endblock %} |
|
87 |
{%- if customsidebar %} |
|
88 |
{% include customsidebar %} |
|
89 |
{%- endif %} |
|
90 |
{%- block sidebarsearch %} |
|
91 |
{%- if pagename != "search" %} |
|
92 |
<div id="searchbox" style="display: none"> |
|
93 |
<h3>{{ _('Quick search') }}</h3> |
|
94 |
<form class="search" action="{{ pathto('search') }}" method="get"> |
|
95 |
<input type="text" name="q" size="18" /> |
|
96 |
<input type="submit" value="{{ _('Go') }}" /> |
|
97 |
<input type="hidden" name="check_keywords" value="yes" /> |
|
98 |
<input type="hidden" name="area" value="default" /> |
|
99 |
</form> |
|
100 |
<p class="searchtip" style="font-size: 90%"> |
|
101 |
{{ _('Enter search terms or a module, class or function name.') }} |
|
102 |
</p> |
|
103 |
</div> |
|
104 |
<script type="text/javascript">$('#searchbox').show(0);</script> |
|
105 |
{%- endif %} |
|
106 |
{%- endblock %} |
|
107 |
</div> |
|
108 |
</div> |
|
109 |
{%- endif %}{% endif %} |
|
110 |
{%- endmacro %} |
|
111 |
|
|
112 |
<html xmlns="http://www.w3.org/1999/xhtml"> |
|
113 |
<head> |
|
114 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
|
115 |
{{ metatags }} |
|
116 |
{%- if not embedded %} |
|
117 |
{%- set titlesuffix = " — "|safe + docstitle|e %} |
|
118 |
{%- else %} |
|
119 |
{%- set titlesuffix = "" %} |
|
120 |
{%- endif %} |
|
121 |
<title>{{ title|striptags }}{{ titlesuffix }}</title> |
|
122 |
<link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" /> |
|
123 |
<link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" /> |
|
124 |
{%- if not embedded %} |
|
125 |
<script type="text/javascript"> |
|
126 |
var DOCUMENTATION_OPTIONS = { |
|
127 |
URL_ROOT: '{{ pathto("", 1) }}', |
|
128 |
VERSION: '{{ release|e }}', |
|
129 |
COLLAPSE_MODINDEX: false, |
|
130 |
FILE_SUFFIX: '{{ file_suffix }}', |
|
131 |
HAS_SOURCE: {{ has_source|lower }} |
|
132 |
}; |
|
133 |
</script> |
|
134 |
{%- for scriptfile in script_files %} |
|
135 |
<script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script> |
|
136 |
{%- endfor %} |
|
137 |
{%- if use_opensearch %} |
|
138 |
<link rel="search" type="application/opensearchdescription+xml" |
|
139 |
title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}" |
|
140 |
href="{{ pathto('_static/opensearch.xml', 1) }}"/> |
|
141 |
{%- endif %} |
|
142 |
{%- if favicon %} |
|
143 |
<link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/> |
|
144 |
{%- endif %} |
|
145 |
{%- endif %} |
|
146 |
{%- block linktags %} |
|
147 |
{%- if hasdoc('about') %} |
|
148 |
<link rel="author" title="{{ _('About these documents') }}" href="{{ pathto('about') }}" /> |
|
149 |
{%- endif %} |
|
150 |
{%- if hasdoc('genindex') %} |
|
151 |
<link rel="index" title="{{ _('Index') }}" href="{{ pathto('genindex') }}" /> |
|
152 |
{%- endif %} |
|
153 |
{%- if hasdoc('search') %} |
|
154 |
<link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}" /> |
|
155 |
{%- endif %} |
|
156 |
{%- if hasdoc('copyright') %} |
|
157 |
<link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}" /> |
|
158 |
{%- endif %} |
|
159 |
<link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}" /> |
|
160 |
{%- if parents %} |
|
161 |
<link rel="up" title="{{ parents[-1].title|striptags }}" href="{{ parents[-1].link|e }}" /> |
|
162 |
{%- endif %} |
|
163 |
{%- if next %} |
|
164 |
<link rel="next" title="{{ next.title|striptags }}" href="{{ next.link|e }}" /> |
|
165 |
{%- endif %} |
|
166 |
{%- if prev %} |
|
167 |
<link rel="prev" title="{{ prev.title|striptags }}" href="{{ prev.link|e }}" /> |
|
168 |
{%- endif %} |
|
169 |
{%- endblock %} |
|
170 |
{%- block extrahead %} {% endblock %} |
|
171 |
</head> |
|
172 |
<body> |
|
173 |
<div class="banner"> |
|
174 |
<img class="logo" src="_static/metacat-logo.png" /> |
|
175 |
<img class="logo-right" src="_static/nceas-logo.png" /> |
|
176 |
<p class="title">Metacat: Metadata and Data Management Server</p> |
|
177 |
</div> |
|
178 |
|
|
179 |
{%- block header %}{% endblock %} |
|
180 |
|
|
181 |
{%- block relbar1 %}{{ relbar() }}{% endblock %} |
|
182 |
|
|
183 |
{# Comment out the sidebar |
|
184 |
{%- block sidebar1 %} {# possible location for sidebar {% endblock %} |
|
185 |
#} |
|
186 |
<div class="document"> |
|
187 |
{%- block document %} |
|
188 |
<div class="documentwrapper"> |
|
189 |
{%- if not embedded %}{% if not theme_nosidebar|tobool %} |
|
190 |
<div class="bodywrapper"> |
|
191 |
{%- endif %}{% endif %} |
|
192 |
<div class="body"> |
|
193 |
{% block body %} {% endblock %} |
|
194 |
</div> |
|
195 |
{%- if not embedded %}{% if not theme_nosidebar|tobool %} |
|
196 |
</div> |
|
197 |
{%- endif %}{% endif %} |
|
198 |
</div> |
|
199 |
{%- endblock %} |
|
200 |
|
|
201 |
{# {%- block sidebar2 %}{{ sidebar() }}{% endblock %} #} |
|
202 |
<div class="clearer"></div> |
|
203 |
</div> |
|
204 |
|
|
205 |
{%- block relbar2 %}{{ relbar() }}{% endblock %} |
|
206 |
|
|
207 |
{%- block footer %} |
|
208 |
<div class="footer"> |
|
209 |
{%- if hasdoc('copyright') %} |
|
210 |
{% trans path=pathto('copyright'), copyright=copyright|e %}© <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %} |
|
211 |
{%- else %} |
|
212 |
{% trans copyright=copyright|e %}© Copyright {{ copyright }}.{% endtrans %} |
|
213 |
{%- endif %} |
|
214 |
{%- if last_updated %} |
|
215 |
{% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %} |
|
216 |
{%- endif %} |
|
217 |
{%- if show_sphinx %} |
|
218 |
{% trans sphinx_version=sphinx_version|e %}Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> {{ sphinx_version }}.{% endtrans %} |
|
219 |
{%- endif %} |
|
220 |
</div> |
|
221 |
{%- endblock %} |
|
222 |
</body> |
|
223 |
</html> |
docs/dev/metacat/source/license.rst | ||
---|---|---|
1 |
License |
|
2 |
======= |
|
3 |
|
|
4 |
:: |
|
5 |
|
|
6 |
GNU GENERAL PUBLIC LICENSE |
|
7 |
Version 2, June 1991 |
|
8 |
|
|
9 |
Copyright (C) 1989, 1991 Free Software Foundation, Inc. |
|
10 |
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
11 |
Everyone is permitted to copy and distribute verbatim copies |
|
12 |
of this license document, but changing it is not allowed. |
|
13 |
|
|
14 |
Preamble |
|
15 |
|
|
16 |
The licenses for most software are designed to take away your |
|
17 |
freedom to share and change it. By contrast, the GNU General Public |
|
18 |
License is intended to guarantee your freedom to share and change free |
|
19 |
software--to make sure the software is free for all its users. This |
|
20 |
General Public License applies to most of the Free Software |
|
21 |
Foundation's software and to any other program whose authors commit to |
|
22 |
using it. (Some other Free Software Foundation software is covered by |
|
23 |
the GNU Library General Public License instead.) You can apply it to |
|
24 |
your programs, too. |
|
25 |
|
|
26 |
When we speak of free software, we are referring to freedom, not |
|
27 |
price. Our General Public Licenses are designed to make sure that you |
|
28 |
have the freedom to distribute copies of free software (and charge for |
|
29 |
this service if you wish), that you receive source code or can get it |
|
30 |
if you want it, that you can change the software or use pieces of it |
|
31 |
in new free programs; and that you know you can do these things. |
|
32 |
|
|
33 |
To protect your rights, we need to make restrictions that forbid |
|
34 |
anyone to deny you these rights or to ask you to surrender the rights. |
|
35 |
These restrictions translate to certain responsibilities for you if you |
|
36 |
distribute copies of the software, or if you modify it. |
|
37 |
|
|
38 |
For example, if you distribute copies of such a program, whether |
|
39 |
gratis or for a fee, you must give the recipients all the rights that |
|
40 |
you have. You must make sure that they, too, receive or can get the |
|
41 |
source code. And you must show them these terms so they know their |
|
42 |
rights. |
|
43 |
|
|
44 |
We protect your rights with two steps: (1) copyright the software, and |
|
45 |
(2) offer you this license which gives you legal permission to copy, |
|
46 |
distribute and/or modify the software. |
|
47 |
|
|
48 |
Also, for each author's protection and ours, we want to make certain |
|
49 |
that everyone understands that there is no warranty for this free |
|
50 |
software. If the software is modified by someone else and passed on, we |
|
51 |
want its recipients to know that what they have is not the original, so |
|
52 |
that any problems introduced by others will not reflect on the original |
|
53 |
authors' reputations. |
|
54 |
|
|
55 |
Finally, any free program is threatened constantly by software |
|
56 |
patents. We wish to avoid the danger that redistributors of a free |
|
57 |
program will individually obtain patent licenses, in effect making the |
|
58 |
program proprietary. To prevent this, we have made it clear that any |
|
59 |
patent must be licensed for everyone's free use or not licensed at all. |
|
60 |
|
|
61 |
The precise terms and conditions for copying, distribution and |
|
62 |
modification follow. |
|
63 |
|
|
64 |
GNU GENERAL PUBLIC LICENSE |
|
65 |
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
|
66 |
|
|
67 |
0. This License applies to any program or other work which contains |
|
68 |
a notice placed by the copyright holder saying it may be distributed |
|
69 |
under the terms of this General Public License. The "Program", below, |
|
70 |
refers to any such program or work, and a "work based on the Program" |
|
71 |
means either the Program or any derivative work under copyright law: |
|
72 |
that is to say, a work containing the Program or a portion of it, |
|
73 |
either verbatim or with modifications and/or translated into another |
|
74 |
language. (Hereinafter, translation is included without limitation in |
|
75 |
the term "modification".) Each licensee is addressed as "you". |
|
76 |
|
|
77 |
Activities other than copying, distribution and modification are not |
|
78 |
covered by this License; they are outside its scope. The act of |
|
79 |
running the Program is not restricted, and the output from the Program |
|
80 |
is covered only if its contents constitute a work based on the |
|
81 |
Program (independent of having been made by running the Program). |
|
82 |
Whether that is true depends on what the Program does. |
|
83 |
|
|
84 |
1. You may copy and distribute verbatim copies of the Program's |
|
85 |
source code as you receive it, in any medium, provided that you |
|
86 |
conspicuously and appropriately publish on each copy an appropriate |
|
87 |
copyright notice and disclaimer of warranty; keep intact all the |
|
88 |
notices that refer to this License and to the absence of any warranty; |
|
89 |
and give any other recipients of the Program a copy of this License |
|
90 |
along with the Program. |
|
91 |
|
|
92 |
You may charge a fee for the physical act of transferring a copy, and |
|
93 |
you may at your option offer warranty protection in exchange for a fee. |
|
94 |
|
|
95 |
2. You may modify your copy or copies of the Program or any portion |
|
96 |
of it, thus forming a work based on the Program, and copy and |
|
97 |
distribute such modifications or work under the terms of Section 1 |
|
98 |
above, provided that you also meet all of these conditions: |
|
99 |
|
|
100 |
a) You must cause the modified files to carry prominent notices |
|
101 |
stating that you changed the files and the date of any change. |
|
102 |
|
|
103 |
b) You must cause any work that you distribute or publish, that in |
|
104 |
whole or in part contains or is derived from the Program or any |
|
105 |
part thereof, to be licensed as a whole at no charge to all third |
|
106 |
parties under the terms of this License. |
|
107 |
|
|
108 |
c) If the modified program normally reads commands interactively |
|
109 |
when run, you must cause it, when started running for such |
|
110 |
interactive use in the most ordinary way, to print or display an |
|
111 |
announcement including an appropriate copyright notice and a |
|
112 |
notice that there is no warranty (or else, saying that you provide |
|
113 |
a warranty) and that users may redistribute the program under |
|
114 |
these conditions, and telling the user how to view a copy of this |
|
115 |
License. (Exception: if the Program itself is interactive but |
|
116 |
does not normally print such an announcement, your work based on |
|
117 |
the Program is not required to print an announcement.) |
|
118 |
|
|
119 |
These requirements apply to the modified work as a whole. If |
|
120 |
identifiable sections of that work are not derived from the Program, |
|
121 |
and can be reasonably considered independent and separate works in |
|
122 |
themselves, then this License, and its terms, do not apply to those |
|
123 |
sections when you distribute them as separate works. But when you |
|
124 |
distribute the same sections as part of a whole which is a work based |
|
125 |
on the Program, the distribution of the whole must be on the terms of |
|
126 |
this License, whose permissions for other licensees extend to the |
|
127 |
entire whole, and thus to each and every part regardless of who wrote it. |
|
128 |
|
|
129 |
Thus, it is not the intent of this section to claim rights or contest |
|
130 |
your rights to work written entirely by you; rather, the intent is to |
|
131 |
exercise the right to control the distribution of derivative or |
|
132 |
collective works based on the Program. |
|
133 |
|
|
134 |
In addition, mere aggregation of another work not based on the Program |
|
135 |
with the Program (or with a work based on the Program) on a volume of |
|
136 |
a storage or distribution medium does not bring the other work under |
|
137 |
the scope of this License. |
|
138 |
|
|
139 |
3. You may copy and distribute the Program (or a work based on it, |
|
140 |
under Section 2) in object code or executable form under the terms of |
|
141 |
Sections 1 and 2 above provided that you also do one of the following: |
|
142 |
|
|
143 |
a) Accompany it with the complete corresponding machine-readable |
|
144 |
source code, which must be distributed under the terms of Sections |
|
145 |
1 and 2 above on a medium customarily used for software interchange; or, |
|
146 |
|
|
147 |
b) Accompany it with a written offer, valid for at least three |
|
148 |
years, to give any third party, for a charge no more than your |
|
149 |
cost of physically performing source distribution, a complete |
|
150 |
machine-readable copy of the corresponding source code, to be |
|
151 |
distributed under the terms of Sections 1 and 2 above on a medium |
|
152 |
customarily used for software interchange; or, |
|
153 |
|
|
154 |
c) Accompany it with the information you received as to the offer |
|
155 |
to distribute corresponding source code. (This alternative is |
|
156 |
allowed only for noncommercial distribution and only if you |
|
157 |
received the program in object code or executable form with such |
|
158 |
an offer, in accord with Subsection b above.) |
|
159 |
|
|
160 |
The source code for a work means the preferred form of the work for |
|
161 |
making modifications to it. For an executable work, complete source |
|
162 |
code means all the source code for all modules it contains, plus any |
|
163 |
associated interface definition files, plus the scripts used to |
|
164 |
control compilation and installation of the executable. However, as a |
|
165 |
special exception, the source code distributed need not include |
|
166 |
anything that is normally distributed (in either source or binary |
|
167 |
form) with the major components (compiler, kernel, and so on) of the |
|
168 |
operating system on which the executable runs, unless that component |
|
169 |
itself accompanies the executable. |
|
170 |
|
|
171 |
If distribution of executable or object code is made by offering |
|
172 |
access to copy from a designated place, then offering equivalent |
|
173 |
access to copy the source code from the same place counts as |
|
174 |
distribution of the source code, even though third parties are not |
|
175 |
compelled to copy the source along with the object code. |
|
176 |
|
|
177 |
4. You may not copy, modify, sublicense, or distribute the Program |
|
178 |
except as expressly provided under this License. Any attempt |
|
179 |
otherwise to copy, modify, sublicense or distribute the Program is |
|
180 |
void, and will automatically terminate your rights under this License. |
|
181 |
However, parties who have received copies, or rights, from you under |
Also available in: Unified diff
Moving Metacat Sphinx RST documentation from docs/dev to docs/user directory.