Cleaned up default website css. Renamed app.css to website.css'
This commit is contained in:
parent
b1b26bf489
commit
07f994ce91
15 changed files with 257 additions and 997 deletions
|
|
@ -56,6 +56,7 @@ Up requirements to Django 3.2+
|
||||||
- New Channel-System using the `channel` command and nicks. Removed the `ChannelHandler` and the
|
- New Channel-System using the `channel` command and nicks. Removed the `ChannelHandler` and the
|
||||||
concept of a dynamically created `ChannelCmdSet`.
|
concept of a dynamically created `ChannelCmdSet`.
|
||||||
- Add `Msg.db_receiver_external` field to allowe external, string-id message-receivers.
|
- Add `Msg.db_receiver_external` field to allowe external, string-id message-receivers.
|
||||||
|
- Renamed `app.css` to `website.css` for consistency. Removed old prosimii-css files.
|
||||||
|
|
||||||
### Evennia 0.9.5 (2019-2020)
|
### Evennia 0.9.5 (2019-2020)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,158 @@
|
||||||
# The Web Admin
|
# The Web Admin
|
||||||
|
|
||||||
The Evennia _Web admin_ is a customized [Django admin site](https://docs.djangoproject.com/en/3.2/ref/contrib/admin/)
|
The Evennia _Web admin_ is a customized [Django admin site](https://docs.djangoproject.com/en/3.2/ref/contrib/admin/)
|
||||||
and is used for manipulating the game database using a graphical interface.
|
used for manipulating the game database using a graphical interface. You
|
||||||
|
have to be logged into the site to use it. It then appears as an `Admin` link
|
||||||
|
the top of your website. You can also go to [http://localhost:4001/admin](http://localhost:4001/admin) when
|
||||||
|
running locally.
|
||||||
|
|
||||||
All actions done in the admin can also be done in-game by use of Admin- or
|
Almost all actions done in the admin can also be done in-game by use of Admin-
|
||||||
Builder-commands. The only exception is the assigning of `staff` flags for
|
or Builder-commands.
|
||||||
allowing users access to the admin itself.
|
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
The admin is pretty self-explanatory - you can see lists of each object type,
|
||||||
|
create new instances of each type and also add new Attributes/tags them. The
|
||||||
|
admin frontpage will give a summary of all relevant entities and how they are
|
||||||
|
used.
|
||||||
|
|
||||||
|
There are a few use cases that requires some additional explanation though.
|
||||||
|
|
||||||
|
### Adding objects to Attributes
|
||||||
|
|
||||||
|
The `value` field of an Attribute is pickled into a special form. This is usually not
|
||||||
|
something you need to worry about (the admin will pickle/unpickle) the value
|
||||||
|
for you), _except_ if you want to store a database-object in an attribute. Such
|
||||||
|
objects are actually stored as a `tuple` with object-unique data.
|
||||||
|
|
||||||
|
1. Find the object you want to add to the Attribute. At the bottom of the first section
|
||||||
|
you'll find the field _Serialized string_. This string shows a Python tuple like
|
||||||
|
|
||||||
|
('__packed_dbobj__', ('objects', 'objectdb'), '2021:05:15-08:59:30:624660', 358)
|
||||||
|
|
||||||
|
Mark and copy this tuple-string to your clipboard exactly as it stands (parentheses and all).
|
||||||
|
2. Go to the entity that should have the new Attribute and create the Attribute. In its `value`
|
||||||
|
field, paste the tuple-string you copied before. Save!
|
||||||
|
3. If you want to store multiple objects in, say, a list, you can do so by literally
|
||||||
|
typing a python list `[tuple, tuple, tuple, ...]` where you paste in the serialized
|
||||||
|
tuple-strings with commas. At some point it's probably easier to do this in code though ...
|
||||||
|
|
||||||
|
### Linking Accounts and Characters
|
||||||
|
|
||||||
|
In `MULTISESSION_MODE` 0 or 1, each connection can have one Account and one
|
||||||
|
Character, usually with the same name. Normally this is done by the user
|
||||||
|
creating a new account and logging in - a matching Character will then be
|
||||||
|
created for them. You can however also do so manually in the admin:
|
||||||
|
|
||||||
|
1. First create the complete Account in the admin.
|
||||||
|
2. Next, create the Object (usually of `Character` typeclass) and name it the same
|
||||||
|
as the Account. It also needs a command-set. The default CharacterCmdset is a good bet.
|
||||||
|
3. In the `Puppeting Account` field, select the Account.
|
||||||
|
4. Make sure to save everything.
|
||||||
|
5. Click the `Link to Account` button (this will only work if you saved first). This will
|
||||||
|
add the needed locks and Attributes to the Account to allow them to immediately
|
||||||
|
connect to the Character when they next log in. This will (where possible):
|
||||||
|
- Set `account.db._last_puppet` to the Character.
|
||||||
|
- Add Character to `account.db._playabel_characters` list.
|
||||||
|
- Add/extend the `puppet:` lock on the Character to include `puppet:pid(<Character.id>)`
|
||||||
|
|
||||||
|
### Building with the Admin
|
||||||
|
|
||||||
|
It's possible (if probably not very practical at scale) to build and describe
|
||||||
|
rooms in the Admin.
|
||||||
|
|
||||||
|
1. Create an `Object` of a Room-typeclass with a suitable room-name.
|
||||||
|
2. Set an Attribute 'desc' on the room - the value of this Attribute is the
|
||||||
|
room's description.
|
||||||
|
3. Add `Tags` of `type` 'alias' to add room-aliases (no type for regular tags)
|
||||||
|
|
||||||
|
Exits:
|
||||||
|
|
||||||
|
1. Exits are `Objects` of an `Exit` typeclass, so create one.
|
||||||
|
2. The exit has `Location` of the room you just created.
|
||||||
|
3. Set `Destination` set to where the exit leads to.
|
||||||
|
4. Set a 'desc' Attribute, this is shown if someone looks at the exit.
|
||||||
|
5. `Tags` of `type` 'alias' are alternative names users can use to go through
|
||||||
|
this exit.
|
||||||
|
|
||||||
|
## Grant others access to the admin
|
||||||
|
|
||||||
|
The access to the admin is controlled by the `Staff status` flag on the
|
||||||
|
Account. Without this flag set, even superusers will not even see the admin
|
||||||
|
link on the web page. The staff-status has no in-game equivalence.
|
||||||
|
|
||||||
|
|
||||||
|
Only Superusers can change the `Superuser status` flag, and grant new
|
||||||
|
permissions to accounts. The superuser is the only permission level that is
|
||||||
|
also relevant in-game. `User Permissions` and `Groups` found on the `Account`
|
||||||
|
admin page _only_ affects the admin - they have no connection to the in-game
|
||||||
|
[Permissions](Permissions) (Player, Builder, Admin etc).
|
||||||
|
|
||||||
|
For a staffer with `Staff status` to be able to actually do anything, the
|
||||||
|
superuser must grant at least some permissions for them on their Account. This
|
||||||
|
can also be good in order to limit mistakes. It can be a good idea to not allow
|
||||||
|
the `Can delete Account` permission, for example.
|
||||||
|
|
||||||
|
```important::
|
||||||
|
|
||||||
|
If you grant staff-status and permissions to an Account and they still cannot
|
||||||
|
access the admin's content, try reloading the server.
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
```warning::
|
||||||
|
|
||||||
|
If a staff member has access to the in-game ``py`` command, they can just as
|
||||||
|
well have their admin ``Superuser status`` set too. The reason is that ``py``
|
||||||
|
grants them all the power they need to set the ``is_superuser`` flag on their
|
||||||
|
account manually. There is a reason access to the ``py`` command must be
|
||||||
|
considered carefully ...
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## Customizing the web admin
|
||||||
|
|
||||||
|
Customizing the admin is a big topic and something beyond the scope of this
|
||||||
|
documentation. See the [official Django docs](https://docs.djangoproject.com/en/3.2/ref/contrib/admin/) for
|
||||||
|
the details. This is just a brief summary.
|
||||||
|
|
||||||
|
See the [Website](./Website) page for an overview of the components going into
|
||||||
|
generating a web page. The Django admin uses the same principle except that
|
||||||
|
Django provides a lot of tools to automate the admin-generation for us.
|
||||||
|
|
||||||
|
Admin templates are found in `evennia/web/templates/admin/` but you'll find
|
||||||
|
this is relatively empty. This is because most of the templates are just
|
||||||
|
inherited directly from their original location in the Django package
|
||||||
|
(`django/contrib/admin/templates/`). So if you wanted to override one you'd have
|
||||||
|
to copy it from _there_ into your `mygame/templates/admin/` folder. Same is true
|
||||||
|
for CSS files.
|
||||||
|
|
||||||
|
The admin site's backend code (the views) is found in `evennia/web/admin/`. It
|
||||||
|
is organized into `admin`-classes, like `ObjectAdmin`, `AccountAdmin` etc.
|
||||||
|
These automatically use the underlying database models to generate useful views
|
||||||
|
for us without us havint go code the forms etc ourselves.
|
||||||
|
|
||||||
|
The top level `AdminSite` (the admin configuration referenced in django docs)
|
||||||
|
is found in `evennia/web/utils/adminsite.py`.
|
||||||
|
|
||||||
|
|
||||||
|
### Change the title of the admin
|
||||||
|
|
||||||
|
By default the admin's title is `Evennia web admin`. To change this, add the
|
||||||
|
following to your `mygame/web/urls.py`:
|
||||||
|
|
||||||
|
```python
|
||||||
|
# in mygame/web/urls.py
|
||||||
|
|
||||||
|
# ...
|
||||||
|
|
||||||
|
from django.conf.admin import site
|
||||||
|
|
||||||
|
#...
|
||||||
|
|
||||||
|
site.site_header = "My great game admin"
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Reload the server and the admin's title header will have changed.
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
# Webclient
|
# Web Client
|
||||||
|
|
||||||
# **Web client**
|
|
||||||
|
|
||||||
Evennia comes with a MUD client accessible from a normal web browser. During development you can try
|
Evennia comes with a MUD client accessible from a normal web browser. During development you can try
|
||||||
it at `http://localhost:4001/webclient`. The client consists of several parts, all under
|
it at `http://localhost:4001/webclient`. The client consists of several parts, all under
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ environment. It leverages the Django web framework and provides:
|
||||||
game. Users logged into the website will be auto-logged into the game if they
|
game. Users logged into the website will be auto-logged into the game if they
|
||||||
do so with the webclient since they share the same login credentials (there
|
do so with the webclient since they share the same login credentials (there
|
||||||
is no way to safely do auto-login with telnet clients).
|
is no way to safely do auto-login with telnet clients).
|
||||||
- The [Web Admin](Web-Admin) is based on the Django web admin and allows you to
|
- The [Web Admin](./Web-Admin) is based on the Django web admin and allows you to
|
||||||
edit the game database in a graphical interface.
|
edit the game database in a graphical interface.
|
||||||
- The [Webclient](./Webclient) page is served by the webserver, but the actual
|
- The [Webclient](./Webclient) page is served by the webserver, but the actual
|
||||||
game communication (sending/receiving data) is done by the javascript client
|
game communication (sending/receiving data) is done by the javascript client
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
# Game Website
|
# Game website
|
||||||
|
|
||||||
When Evennia starts it will also start a [Webserver](./Webserver) as part of the
|
When Evennia starts it will also start a [Webserver](./Webserver) as part of the
|
||||||
[Server](./Portal-And-Server) process. This uses [Django](https://docs.djangoproject.com)
|
[Server](./Portal-And-Server) process. This uses [Django](https://docs.djangoproject.com)
|
||||||
to present a simple but functional default game website. With the default setup,
|
to present a simple but functional default game website. With the default setup,
|
||||||
open your browser to `localhost:4001` or `127.0.0.1:4001` to see it.
|
open your browser to [localhost:4001](http://localhost:4001) or [127.0.0.1:4001](http://127.0.0.1:4001)
|
||||||
|
to see it.
|
||||||
|
|
||||||
The website allows existing players to log in using an account-name and
|
The website allows existing players to log in using an account-name and
|
||||||
password they previously used to register with the game. If a user logs in with
|
password they previously used to register with the game. If a user logs in with
|
||||||
|
|
@ -16,22 +17,27 @@ resources. It also shows some statistics about how many players are currently
|
||||||
connected.
|
connected.
|
||||||
|
|
||||||
In the top menu you can find
|
In the top menu you can find
|
||||||
- Home - Get back to front page.
|
- _Home_ - Get back to front page.
|
||||||
- Document - A link to the latest stable Evennia documentation.
|
- _Documentation_ - A link to the latest stable Evennia documentation.
|
||||||
- Characters - This is a demo of connecting in-game characters to the website.
|
- _Characters_ - This is a demo of connecting in-game characters to the website.
|
||||||
It will display a list of all entities of the
|
It will display a list of all entities of the
|
||||||
_typeclasses.characters.Character` typeclass and allow you to view their
|
_typeclasses.characters.Character` typeclass and allow you to view their
|
||||||
description with an optional image. The list is only available to logged-in
|
description with an optional image. The list is only available to logged-in
|
||||||
users.
|
users.
|
||||||
- Channels - This is a demo of connecting in-game chats to the website. It will
|
- _Channels_ - This is a demo of connecting in-game chats to the website. It will
|
||||||
show a list of all channels available to you and allow you to view the latest
|
show a list of all channels available to you and allow you to view the latest
|
||||||
discussions. Most channels require logging in, but the `Public` channel can
|
discussions. Most channels require logging in, but the `Public` channel can
|
||||||
also be viewed by non-loggedin users.
|
also be viewed by non-loggedin users.
|
||||||
- Help - This ties the in-game [Help system](./Help-System) to the website. All
|
- _Help_ - This ties the in-game [Help system](./Help-System) to the website. All
|
||||||
database-based help entries that are publicly available or accessible to your
|
database-based help entries that are publicly available or accessible to your
|
||||||
account can be read. This is a good way to present a body of help for people
|
account can be read. This is a good way to present a body of help for people
|
||||||
to read outside of the game.
|
to read outside of the game.
|
||||||
- Play Online - This opens the [Webclient](./Webclient) in the browser.
|
- _Play Online_ - This opens the [Webclient](./Webclient) in the browser.
|
||||||
|
- _Admin_ The [Web admin](Web admin) will only show if you are logged in.
|
||||||
|
- _Log in/out_ - Allows you to authenticate using the same credentials you use
|
||||||
|
in the game.
|
||||||
|
- _Register_ - Allows you to register a new account. This is the same as
|
||||||
|
creating a new account upon first logging into the game).
|
||||||
|
|
||||||
## Modifying the default Website
|
## Modifying the default Website
|
||||||
|
|
||||||
|
|
@ -263,7 +269,7 @@ your copy. Just remember to reload.
|
||||||
### Using Flat Pages
|
### Using Flat Pages
|
||||||
|
|
||||||
The absolutely simplest way to add a new web page is to use the `Flat Pages`
|
The absolutely simplest way to add a new web page is to use the `Flat Pages`
|
||||||
app available in the [Web Admin](Web-Admin). The page will appear with the same
|
app available in the [Web Admin](./Web-Admin). The page will appear with the same
|
||||||
styling as the rest of the site.
|
styling as the rest of the site.
|
||||||
|
|
||||||
For the `Flat pages` module to work you must first set up a _Site_ (or
|
For the `Flat pages` module to work you must first set up a _Site_ (or
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@
|
||||||
- [Components/Tags](Components/Tags)
|
- [Components/Tags](Components/Tags)
|
||||||
- [Components/TickerHandler](Components/TickerHandler)
|
- [Components/TickerHandler](Components/TickerHandler)
|
||||||
- [Components/Typeclasses](Components/Typeclasses)
|
- [Components/Typeclasses](Components/Typeclasses)
|
||||||
|
- [Components/Web Admin](Components/Web-Admin)
|
||||||
- [Components/Webclient](Components/Webclient)
|
- [Components/Webclient](Components/Webclient)
|
||||||
- [Components/Webserver](Components/Webserver)
|
- [Components/Webserver](Components/Webserver)
|
||||||
- [Components/Website](Components/Website)
|
- [Components/Website](Components/Website)
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ import sys
|
||||||
SERVERNAME = "Evennia"
|
SERVERNAME = "Evennia"
|
||||||
# Short one-sentence blurb describing your game. Shown under the title
|
# Short one-sentence blurb describing your game. Shown under the title
|
||||||
# on the website and could be used in online listings of your game etc.
|
# on the website and could be used in online listings of your game etc.
|
||||||
GAME_SLOGAN = "Python MU* creation system"
|
GAME_SLOGAN = "The Python MUD/MU* creation system"
|
||||||
# Lockdown mode will cut off the game from any external connections
|
# Lockdown mode will cut off the game from any external connections
|
||||||
# and only allow connections from localhost. Requires a cold reboot.
|
# and only allow connections from localhost. Requires a cold reboot.
|
||||||
LOCKDOWN_MODE = False
|
LOCKDOWN_MODE = False
|
||||||
|
|
|
||||||
|
|
@ -77,15 +77,15 @@ class AccountChangeForm(UserChangeForm):
|
||||||
required=False,
|
required=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
# is_superuser = forms.BooleanField(
|
is_superuser = forms.BooleanField(
|
||||||
# label = "Superuser status",
|
label = "Superuser status",
|
||||||
# required=False,
|
required=False,
|
||||||
# help_text="Superusers bypass all in-game locks and has all "
|
help_text="Superusers bypass all in-game locks and has all "
|
||||||
# "permissions without explicitly assigning them. Usually "
|
"permissions without explicitly assigning them. Usually "
|
||||||
# "only one superuser (user #1) is needed, new superusers "
|
"only one superuser (user #1) is needed and only a superuser "
|
||||||
# "can be created by setting the `is_superuser` flag in code "
|
"can create another superuser.<BR>"
|
||||||
# "or by the `evennia createsuperuser` CLI command."
|
"Only Superusers can change the user/group permissions below."
|
||||||
# )
|
)
|
||||||
|
|
||||||
def clean_username(self):
|
def clean_username(self):
|
||||||
"""
|
"""
|
||||||
|
|
@ -312,7 +312,17 @@ class AccountAdmin(BaseUserAdmin):
|
||||||
help_texts["puppeted_objects"] = self.puppeted_objects.help_text
|
help_texts["puppeted_objects"] = self.puppeted_objects.help_text
|
||||||
kwargs["help_texts"] = help_texts
|
kwargs["help_texts"] = help_texts
|
||||||
|
|
||||||
return super().get_form(request, obj, **kwargs)
|
# security disabling for non-superusers
|
||||||
|
form = super().get_form(request, obj, **kwargs)
|
||||||
|
disabled_fields = set()
|
||||||
|
if not request.user.is_superuser:
|
||||||
|
disabled_fields |= {
|
||||||
|
'is_superuser', 'user_permissions', 'user_groups'
|
||||||
|
}
|
||||||
|
for field_name in disabled_fields:
|
||||||
|
if field_name in form.base_fields:
|
||||||
|
form.base_fields[field_name].disabled = True
|
||||||
|
return form
|
||||||
|
|
||||||
@sensitive_post_parameters_m
|
@sensitive_post_parameters_m
|
||||||
def user_change_password(self, request, id, form_url=""):
|
def user_change_password(self, request, id, form_url=""):
|
||||||
|
|
|
||||||
|
|
@ -1,225 +0,0 @@
|
||||||
/**************************************
|
|
||||||
* TITLE: Prosimii Print Stylesheet *
|
|
||||||
* URI : prosimii/prosimii-print.css *
|
|
||||||
* MODIF: 2003-Apr-30 19:15 +0800 *
|
|
||||||
**************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/* ##### Common Styles ##### */
|
|
||||||
|
|
||||||
body {
|
|
||||||
color: black;
|
|
||||||
background-color: white;
|
|
||||||
font-family: "times new roman", times, roman, serif;
|
|
||||||
font-size: 12pt;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
acronym, .titleTip {
|
|
||||||
font-style: italic;
|
|
||||||
border-bottom: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
acronym:after, .titleTip:after { /* Prints titles after the acronyms/titletips. Doesn't work in MSIE */
|
|
||||||
content: "(" attr(title) ")";
|
|
||||||
font-size: 90%;
|
|
||||||
font-style: normal;
|
|
||||||
padding-left: 1ex;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: black;
|
|
||||||
background-color: transparent;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
a[href]:after { /* Prints the links' URIs after the links' texts. Doesn't work in MSIE */
|
|
||||||
content: "<" attr(href) ">";
|
|
||||||
font-size: 90%;
|
|
||||||
padding-left: 1ex;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol {
|
|
||||||
margin: -0.25em 0 1em 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
list-style-type: square;
|
|
||||||
margin: -0.25em 0 1em 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
dl {
|
|
||||||
margin: 0 0 1em 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul li {
|
|
||||||
margin: 1ex 0 0 1.5em;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol li {
|
|
||||||
margin: 1ex 0 0 1.5em;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
dt {
|
|
||||||
font-weight: bold;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
dd {
|
|
||||||
margin: 0 0 0 1.5em;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.doNotPrint {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* ##### Header ##### */
|
|
||||||
|
|
||||||
#header {
|
|
||||||
}
|
|
||||||
|
|
||||||
.superHeader {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.midHeader {
|
|
||||||
color: black;
|
|
||||||
background-color: transparent;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
border-bottom: 1px solid black;
|
|
||||||
}
|
|
||||||
|
|
||||||
.headerTitle {
|
|
||||||
font-family: "trebuchet ms", verdana, helvetica, arial, sans-serif;
|
|
||||||
font-size: 200%;
|
|
||||||
font-weight: normal;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.headerSubTitle {
|
|
||||||
font-family: "trebuchet ms", verdana, helvetica, arial, sans-serif;
|
|
||||||
font-size: 110%;
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: italic;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 0 1ex 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.headerLinks {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.subHeader {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* ##### Side Menu ##### */
|
|
||||||
|
|
||||||
#side-bar {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* ##### Main Copy ##### */
|
|
||||||
|
|
||||||
#main-copy {
|
|
||||||
text-align: justify;
|
|
||||||
margin: 0 !important;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#main-copy h1 {
|
|
||||||
font-family: "trebuchet ms", verdana, helvetica, arial, sans-serif;
|
|
||||||
font-size: 120%;
|
|
||||||
margin: 2ex 0 1ex 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#main-copy h2 {
|
|
||||||
font-family: "trebuchet ms", verdana, helvetica, arial, sans-serif;
|
|
||||||
font-weight: normal;
|
|
||||||
font-size: 100%;
|
|
||||||
margin: 0;
|
|
||||||
padding: 2ex 0 0.5ex 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#main-copy h1 + h2 {
|
|
||||||
padding-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#main-copy p {
|
|
||||||
margin: 0 0 2ex 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 a:after {
|
|
||||||
content: "" !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.newsDate {
|
|
||||||
font-style: italic;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.newsDate:before { /* Prints an '[' before the news item's date. Doesn't work in MSIE */
|
|
||||||
content: "[";
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
.newsDate:after { /* Prints a ']' after the news item's date. Doesn't work in MSIE */
|
|
||||||
content: "]";
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
.newsSummary {
|
|
||||||
display: inline;
|
|
||||||
margin: 0 0 0 1ex !important;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.more {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.smallCaps {
|
|
||||||
font-variant: small-caps;
|
|
||||||
}
|
|
||||||
|
|
||||||
.quarter, .oneThird, .half, .twoThirds, .fullWidth {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* ##### Footer ##### */
|
|
||||||
|
|
||||||
#footer {
|
|
||||||
color: black;
|
|
||||||
background-color: transparent;
|
|
||||||
font-size: 100%;
|
|
||||||
text-align: center;
|
|
||||||
margin: 2em 0 0 0;
|
|
||||||
padding: 1ex 0 0 0;
|
|
||||||
border-top: 1px solid black;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
#footer a {
|
|
||||||
color: black;
|
|
||||||
background-color: transparent;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
@ -1,342 +0,0 @@
|
||||||
/*************************************************
|
|
||||||
* TITLE: Prosimii Alternative Screen Stylesheet *
|
|
||||||
* URI : prosimii/prosimii-screen-alt.css *
|
|
||||||
* MODIF: 2004-Apr-28 21:56 +0800 *
|
|
||||||
*************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/* ##### Common Styles ##### */
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: verdana, helvetica, arial, sans-serif;
|
|
||||||
font-size: 73%; /* Enables font size scaling in MSIE */
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
html > body {
|
|
||||||
font-size: 9pt;
|
|
||||||
}
|
|
||||||
|
|
||||||
acronym, .titleTip {
|
|
||||||
border-bottom: 1px dotted rgb(61,92,122);
|
|
||||||
cursor: help;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 0 0.4px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: rgb(61,92,122);
|
|
||||||
background-color: transparent;
|
|
||||||
text-decoration: underline;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 1px 2px 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover {
|
|
||||||
color: rgb(117,144,174);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol {
|
|
||||||
margin: 1em 0 1.5em 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
list-style-type: square;
|
|
||||||
margin: 1em 0 1.5em 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
dl {
|
|
||||||
margin: 1em 0 0.5em 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul li {
|
|
||||||
line-height: 1.5em;
|
|
||||||
margin: 1.25ex 0 0 1.5em;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol li {
|
|
||||||
line-height: 1.5em;
|
|
||||||
margin: 1.25ex 0 0 2em;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
dt {
|
|
||||||
font-weight: bold;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 0 1ex 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
dd {
|
|
||||||
line-height: 1.75em;
|
|
||||||
margin: 0 0 1.5em 1.5em;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.doNotDisplay {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.smallCaps {
|
|
||||||
font-size: 117%;
|
|
||||||
font-variant: small-caps;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* ##### Header ##### */
|
|
||||||
|
|
||||||
.superHeader {
|
|
||||||
color: rgb(130,128,154);
|
|
||||||
background-color: rgb(33,50,66);
|
|
||||||
text-align: right;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0.5ex 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.superHeader span {
|
|
||||||
color: rgb(195,196,210);
|
|
||||||
background-color: transparent;
|
|
||||||
font-weight: bold;
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
|
|
||||||
.superHeader a {
|
|
||||||
color: rgb(195,196,210);
|
|
||||||
background-color: transparent;
|
|
||||||
text-decoration: none;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 0.25ex 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.superHeader a:hover {
|
|
||||||
color: rgb(193,102,90);
|
|
||||||
background-color: transparent;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.midHeader {
|
|
||||||
color: white;
|
|
||||||
background-color: rgb(61,92,122);
|
|
||||||
margin: 0;
|
|
||||||
padding: 0.26ex 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.headerTitle {
|
|
||||||
font-size: 300%;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.headerSubTitle {
|
|
||||||
font-size: 151%;
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: italic;
|
|
||||||
margin: 0 0 1ex 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.headerLinks {
|
|
||||||
text-align: right;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 0 2ex 0;
|
|
||||||
position: absolute;
|
|
||||||
right: 1.5em;
|
|
||||||
top: 3.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.headerLinks a {
|
|
||||||
color: white;
|
|
||||||
background-color: transparent;
|
|
||||||
text-decoration: none;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 0 0.5ex 0;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.headerLinks a:hover {
|
|
||||||
color: rgb(195,196,210);
|
|
||||||
background-color: transparent;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.subHeader {
|
|
||||||
color: white;
|
|
||||||
background-color: rgb(117,144,174);
|
|
||||||
margin: 0;
|
|
||||||
padding: 0.5ex 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.subHeader a, .subHeader .highlight {
|
|
||||||
color: white;
|
|
||||||
background-color: transparent;
|
|
||||||
font-size: 110%;
|
|
||||||
font-weight: bold;
|
|
||||||
text-decoration: none;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 0.25ex 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.subHeader a:hover, .subHeader .highlight {
|
|
||||||
color: rgb(255,204,0);
|
|
||||||
background-color: transparent;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* ##### Side Menu ##### */
|
|
||||||
|
|
||||||
#side-bar {
|
|
||||||
color: rgb(204,204,204);
|
|
||||||
background-color: transparent;
|
|
||||||
list-style-type: square;
|
|
||||||
list-style-position: inside;
|
|
||||||
width: 10em;
|
|
||||||
margin: 0;
|
|
||||||
padding: 1ex 0;
|
|
||||||
border: 1px solid rgb(204,204,204);
|
|
||||||
position: absolute;
|
|
||||||
left: 1.5ex;
|
|
||||||
top: 12em;
|
|
||||||
}
|
|
||||||
|
|
||||||
[id="side-bar"] {
|
|
||||||
position: fixed !important; /* Makes the side menu scroll with the page. Doesn't work in MSIE */
|
|
||||||
}
|
|
||||||
|
|
||||||
#side-bar a {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#side-bar:hover {
|
|
||||||
color: rgb(117,144,174);
|
|
||||||
background-color: transparent;
|
|
||||||
border-color: rgb(117,144,174);
|
|
||||||
}
|
|
||||||
|
|
||||||
#side-bar li {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0.75ex 0 1ex 1.75ex;
|
|
||||||
}
|
|
||||||
|
|
||||||
#side-bar li:hover {
|
|
||||||
color: rgb(61,92,122);
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#side-bar li a:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* ##### Main Copy ##### */
|
|
||||||
|
|
||||||
#main-copy {
|
|
||||||
text-align: justify;
|
|
||||||
margin: -0.5ex 1em 1em 12.5em;
|
|
||||||
padding: 0.5em 10px;
|
|
||||||
clear: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
#main-copy h1 {
|
|
||||||
color: rgb(117,144,174);
|
|
||||||
background-color: transparent;
|
|
||||||
font-family: "trebuchet ms", verdana, helvetica, arial, sans-serif;
|
|
||||||
font-size: 186%;
|
|
||||||
margin: 0;
|
|
||||||
padding: 1.5ex 0 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#main-copy h2 {
|
|
||||||
color: rgb(61,92,122);
|
|
||||||
background-color: transparent;
|
|
||||||
font-family: "trebuchet ms", verdana, helvetica, arial, sans-serif;
|
|
||||||
font-weight: normal;
|
|
||||||
font-size: 151%;
|
|
||||||
margin: 0;
|
|
||||||
padding: 1ex 0 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#main-copy p {
|
|
||||||
line-height: 1.75em;
|
|
||||||
margin: 1em 0 1.5em 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.newsHeading {
|
|
||||||
color: rgb(61,92,122);
|
|
||||||
background-color: transparent;
|
|
||||||
font-family: "trebuchet ms", verdana, helvetica, arial, sans-serif;
|
|
||||||
font-size: 145%;
|
|
||||||
text-decoration: none;
|
|
||||||
margin: 0;
|
|
||||||
padding: 1ex 0 0 0;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.newsHeading:hover {
|
|
||||||
color: rgb(117,144,174);
|
|
||||||
background-color: transparent;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.newsDate {
|
|
||||||
font-style: italic;
|
|
||||||
margin: 0 !important;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.newsSummary {
|
|
||||||
margin: 1.5ex 0 2.5ex 0.75ex !important;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.more {
|
|
||||||
text-align: right;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0.5em 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.more a {
|
|
||||||
color: rgb(61,92,122);
|
|
||||||
background-color: transparent;
|
|
||||||
font-size: 92%;
|
|
||||||
text-decoration: underline;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0.25ex 0.75ex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.more a:hover {
|
|
||||||
color: rgb(117,144,174);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* ##### Footer ##### */
|
|
||||||
|
|
||||||
#footer {
|
|
||||||
color: rgb(51,51,102);
|
|
||||||
background-color: rgb(239,239,239);
|
|
||||||
font-size: 87%;
|
|
||||||
text-align: center;
|
|
||||||
line-height: 1.25em;
|
|
||||||
margin: 2em 0 0 0;
|
|
||||||
padding: 1ex 10px;
|
|
||||||
clear: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
#footer a {
|
|
||||||
color: rgb(0,68,204);
|
|
||||||
background-color: transparent;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
#footer a:hover {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
@ -1,359 +0,0 @@
|
||||||
/***************************************
|
|
||||||
* TITLE: Prosimii Screen Stylesheet *
|
|
||||||
* URI : prosimii/prosimii-screen.css *
|
|
||||||
* MODIF: 2004-Apr-28 21:43 +0800 *
|
|
||||||
***************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/* ##### Common Styles ##### */
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: verdana, helvetica, arial, sans-serif;
|
|
||||||
font-size: 73%; /* Enables font size scaling in MSIE */
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
html > body {
|
|
||||||
font-size: 9pt;
|
|
||||||
}
|
|
||||||
|
|
||||||
acronym, .titleTip {
|
|
||||||
border-bottom: 1px dotted rgb(61,92,122);
|
|
||||||
cursor: help;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 0 0.4px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: rgb(61,92,122);
|
|
||||||
background-color: transparent;
|
|
||||||
text-decoration: underline;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 1px 2px 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover {
|
|
||||||
color: rgb(117,144,174);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol {
|
|
||||||
margin: 1em 0 1.5em 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
list-style-type: square;
|
|
||||||
margin: 1em 0 1.5em 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
dl {
|
|
||||||
margin: 1em 0 0.5em 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul li {
|
|
||||||
line-height: 1.5em;
|
|
||||||
margin: 1.25ex 0 0 1.5em;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol li {
|
|
||||||
line-height: 1.5em;
|
|
||||||
margin: 1.25ex 0 0 2em;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
dt {
|
|
||||||
font-weight: bold;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 0 1ex 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
dd {
|
|
||||||
line-height: 1.75em;
|
|
||||||
margin: 0 0 1.5em 1.5em;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.doNotDisplay {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.smallCaps {
|
|
||||||
font-size: 117%;
|
|
||||||
font-variant: small-caps;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* ##### Header ##### */
|
|
||||||
|
|
||||||
.superHeader {
|
|
||||||
color: rgb(130,128,154);
|
|
||||||
background-color: rgb(33,50,66);
|
|
||||||
text-align: right;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0.5ex 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.superHeader span {
|
|
||||||
color: rgb(195,196,210);
|
|
||||||
background-color: transparent;
|
|
||||||
font-weight: bold;
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
|
|
||||||
.superHeader a {
|
|
||||||
color: rgb(195,196,210);
|
|
||||||
background-color: transparent;
|
|
||||||
text-decoration: none;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 0.25ex 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.superHeader a:hover {
|
|
||||||
color: rgb(193,102,90);
|
|
||||||
background-color: transparent;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.midHeader {
|
|
||||||
color: white;
|
|
||||||
background-color: rgb(61,92,122);
|
|
||||||
margin: 0;
|
|
||||||
padding: 0.26ex 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.headerTitle {
|
|
||||||
font-size: 300%;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.headerSubTitle {
|
|
||||||
font-size: 151%;
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: italic;
|
|
||||||
margin: 0 0 1ex 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.headerLinks {
|
|
||||||
text-align: right;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 0 2ex 0;
|
|
||||||
position: absolute;
|
|
||||||
right: 1.5em;
|
|
||||||
top: 3.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.headerLinks a {
|
|
||||||
color: white;
|
|
||||||
background-color: transparent;
|
|
||||||
text-decoration: none;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 0 0.5ex 0;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.headerLinks a:hover {
|
|
||||||
color: rgb(195,196,210);
|
|
||||||
background-color: transparent;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.subHeader {
|
|
||||||
color: white;
|
|
||||||
background-color: rgb(117,144,174);
|
|
||||||
margin: 0;
|
|
||||||
padding: 0.5ex 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.subHeader a, .subHeader .highlight {
|
|
||||||
color: white;
|
|
||||||
background-color: transparent;
|
|
||||||
font-size: 110%;
|
|
||||||
font-weight: bold;
|
|
||||||
text-decoration: none;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 0.25ex 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.subHeader a:hover, .subHeader .highlight {
|
|
||||||
color: rgb(255,204,0);
|
|
||||||
background-color: transparent;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* ##### Main Copy ##### */
|
|
||||||
|
|
||||||
#main-copy {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0.5em 10px;
|
|
||||||
clear: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
#main-copy h1 {
|
|
||||||
color: rgb(117,144,174);
|
|
||||||
background-color: transparent;
|
|
||||||
font-family: "trebuchet ms", verdana, helvetica, arial, sans-serif;
|
|
||||||
font-size: 200%;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#main-copy h2 {
|
|
||||||
color: rgb(61,92,122);
|
|
||||||
background-color: transparent;
|
|
||||||
font-family: "trebuchet ms", verdana, helvetica, arial, sans-serif;
|
|
||||||
font-weight: normal;
|
|
||||||
font-size: 151%;
|
|
||||||
margin: 0;
|
|
||||||
padding: 1ex 0 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#main-copy p {
|
|
||||||
line-height: 1.75em;
|
|
||||||
margin: 1em 0 1.5em 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.newsHeading {
|
|
||||||
color: rgb(61,92,122);
|
|
||||||
background-color: transparent;
|
|
||||||
font-family: "trebuchet ms", verdana, helvetica, arial, sans-serif;
|
|
||||||
font-size: 145%;
|
|
||||||
text-decoration: none;
|
|
||||||
margin: 0;
|
|
||||||
padding: 1ex 0 0 0;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.newsHeading:hover {
|
|
||||||
color: rgb(117,144,174);
|
|
||||||
background-color: transparent;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.newsDate {
|
|
||||||
font-style: italic;
|
|
||||||
margin: 0 !important;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.newsSummary {
|
|
||||||
margin: 1.5ex 0 2.5ex 0.75ex !important;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.more {
|
|
||||||
text-align: right;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0.5em 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.more a {
|
|
||||||
color: rgb(61,92,122);
|
|
||||||
background-color: transparent;
|
|
||||||
font-size: 92%;
|
|
||||||
text-decoration: underline;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0.25ex 0.75ex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.more a:hover {
|
|
||||||
color: rgb(117,144,174);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rowOfBoxes {
|
|
||||||
clear: both;
|
|
||||||
}
|
|
||||||
|
|
||||||
.quarter, .oneThird, .half, .twoThirds, .fullWidth {
|
|
||||||
margin: 1em 0;
|
|
||||||
float: left;
|
|
||||||
border-left: 1px solid rgb(204,204,204);
|
|
||||||
}
|
|
||||||
|
|
||||||
.quarter {
|
|
||||||
width: 21%;
|
|
||||||
padding: 0 1.9%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.oneThird {
|
|
||||||
width: 28%;
|
|
||||||
padding: 0 1.9%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.half {
|
|
||||||
text-align: justify;
|
|
||||||
width: 46%;
|
|
||||||
padding: 0 1.9%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.twoThirds {
|
|
||||||
text-align: justify;
|
|
||||||
width: 63%;
|
|
||||||
padding: 0 1.9%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fullWidth {
|
|
||||||
text-align: justify;
|
|
||||||
width: 96%;
|
|
||||||
padding: 0 1.2em;
|
|
||||||
border-left: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.filler { /* use with an empty <p> element to add padding to the end of a text box */
|
|
||||||
border: 1px solid white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.noBorderOnLeft {
|
|
||||||
border-left: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dividingBorderAbove {
|
|
||||||
border-top: 1px solid rgb(204,204,204);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* More elegant alternatives to .noBorderOnLeft & .dividingBorderAbove
|
|
||||||
* that don't require the creation of new classes - but which are not
|
|
||||||
* supported by MSIE - are the following:
|
|
||||||
*
|
|
||||||
* .rowOfBoxes > div:first-child {
|
|
||||||
* border-left: none;
|
|
||||||
* }
|
|
||||||
*
|
|
||||||
* .rowOfBoxes + .rowOfBoxes {
|
|
||||||
* border-top: 1px solid rgb(204,204,204);
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/* ##### Footer ##### */
|
|
||||||
|
|
||||||
#footer {
|
|
||||||
color: rgb(51,51,102);
|
|
||||||
background-color: rgb(239,239,239);
|
|
||||||
font-size: 87%;
|
|
||||||
text-align: center;
|
|
||||||
line-height: 1.25em;
|
|
||||||
margin: 2em 0 0 0;
|
|
||||||
padding: 1ex 10px;
|
|
||||||
clear: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
#footer a {
|
|
||||||
color: rgb(0,68,204);
|
|
||||||
background-color: transparent;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
#footer a:hover {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
/* Evennia CSS styles for the game website */
|
||||||
|
|
||||||
|
|
||||||
/* Old site styles, left in just in case.
|
/* Old site styles, left in just in case.
|
||||||
Shouldn't break anything! */
|
Shouldn't break anything! */
|
||||||
@media (max-width: 570px) {
|
@media (max-width: 570px) {
|
||||||
|
|
@ -49,16 +52,6 @@ body {
|
||||||
background-color: #eee;
|
background-color: #eee;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer {
|
|
||||||
position: absolute;
|
|
||||||
bottom: 0;
|
|
||||||
width: 100%;
|
|
||||||
/* Set the fixed height of the footer here */
|
|
||||||
height: 60px;
|
|
||||||
line-height: 60px; /* Vertically center the text there */
|
|
||||||
background-color: #7590ae;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-brand-logo {
|
.navbar-brand-logo {
|
||||||
height: 64px;
|
height: 64px;
|
||||||
width: 64px;
|
width: 64px;
|
||||||
|
|
@ -69,3 +62,40 @@ body {
|
||||||
.navbar {
|
.navbar {
|
||||||
background-color: #3d5c7a;
|
background-color: #3d5c7a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
/* Set the fixed height of the footer here */
|
||||||
|
height: 60px;
|
||||||
|
line-height: 60px; /* Vertically center the text there */
|
||||||
|
background-color: #3d5c7a;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Fancy play - button */
|
||||||
|
|
||||||
|
a.playbutton {
|
||||||
|
box-shadow: 0px 1px 10px 5px #9fb4f2;
|
||||||
|
background:linear-gradient(to bottom, #7892c2 5%, #476e9e 100%);
|
||||||
|
background-color:#7892c2;
|
||||||
|
border-radius:12px;
|
||||||
|
border:1px solid #4e6096;
|
||||||
|
display:inline-block;
|
||||||
|
cursor:pointer;
|
||||||
|
color:#ffffff;
|
||||||
|
font-family:Arial;
|
||||||
|
font-size:19px;
|
||||||
|
padding:14px 37px;
|
||||||
|
text-decoration:none;
|
||||||
|
text-shadow:0px 1px 0px #283966;
|
||||||
|
}
|
||||||
|
a.playbutton:hover {
|
||||||
|
background:linear-gradient(to bottom, #476e9e 5%, #7892c2 100%);
|
||||||
|
background-color:#476e9e;
|
||||||
|
}
|
||||||
|
a.playbutton:active {
|
||||||
|
position:relative;
|
||||||
|
top:1px;
|
||||||
|
}
|
||||||
|
|
@ -25,13 +25,6 @@ folder and edit it to add/remove links to the menu.
|
||||||
<li>
|
<li>
|
||||||
<a class="nav-link" href="{% url 'index' %}">Home</a>
|
<a class="nav-link" href="{% url 'index' %}">Home</a>
|
||||||
</li>
|
</li>
|
||||||
<!-- evennia documentation -->
|
|
||||||
<li>
|
|
||||||
<a class="nav-link" href="https://www.evennia.com/docs/latest/Evennia-Introduction.html">About</a>
|
|
||||||
</li>
|
|
||||||
<li><a class="nav-link" href="https://www.evennia.com/docs/latest">Documentation</a></li>
|
|
||||||
<!-- end evennia documentation -->
|
|
||||||
|
|
||||||
<!-- game views -->
|
<!-- game views -->
|
||||||
<li><a class="nav-link" href="{% url 'characters' %}">Characters</a></li>
|
<li><a class="nav-link" href="{% url 'characters' %}">Characters</a></li>
|
||||||
<li><a class="nav-link" href="{% url 'channels' %}">Channels</a></li>
|
<li><a class="nav-link" href="{% url 'channels' %}">Channels</a></li>
|
||||||
|
|
|
||||||
|
|
@ -12,10 +12,11 @@
|
||||||
<link rel="icon" type="image/x-icon" href="/static/website/images/evennia_logo.png" />
|
<link rel="icon" type="image/x-icon" href="/static/website/images/evennia_logo.png" />
|
||||||
|
|
||||||
<!-- Bootstrap CSS -->
|
<!-- Bootstrap CSS -->
|
||||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
|
<!--link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.6.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"-->
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l" crossorigin="anonymous">
|
||||||
|
|
||||||
<!-- Base CSS -->
|
<!-- Base CSS -->
|
||||||
<link rel="stylesheet" type="text/css" href="{% static "website/css/app.css" %}">
|
<link rel="stylesheet" type="text/css" href="{% static "website/css/website.css" %}">
|
||||||
|
|
||||||
{% comment %}
|
{% comment %}
|
||||||
Allows for loading custom styles without overriding the base site styles
|
Allows for loading custom styles without overriding the base site styles
|
||||||
|
|
@ -55,7 +56,9 @@
|
||||||
<footer class="footer">
|
<footer class="footer">
|
||||||
{% block footer %}
|
{% block footer %}
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
<div class="row justify-content-center">
|
||||||
<span class="text-white">Powered by <a class="text-white font-weight-bold" href="https://evennia.com">Evennia.</a></span>
|
<span class="text-white">Powered by <a class="text-white font-weight-bold" href="https://evennia.com">Evennia.</a></span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
</footer>
|
</footer>
|
||||||
|
|
|
||||||
|
|
@ -8,42 +8,37 @@
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="card">
|
<div class="card text-center">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h1 class="card-title">Welcome!</h1>
|
|
||||||
|
<h1 class="card-title">Welcome to Evennia!</h1>
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
<p class="lead">
|
<p class="lead">
|
||||||
Welcome to your new installation of <a href="https://evennia.com">Evennia</a>, your friendly
|
The Python MUD/MU* creation system.
|
||||||
neighborhood next-generation MUD development system and server.
|
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
You are looking at Evennia's web
|
You are looking at the start of your game's website, generated out of
|
||||||
presence, which can be expanded to a full-fledged site as needed.<br />
|
the box by Evennia. It has several example pages and can be expanded
|
||||||
Through the <a href="{% url 'admin:index' %}">admin interface</a> you can view and edit the
|
into a full-fledged home for your game.
|
||||||
database without logging into the game.
|
|
||||||
</p>
|
</p>
|
||||||
{% if webclient_enabled %}
|
{% if webclient_enabled %}
|
||||||
<p>
|
<p>
|
||||||
You can also connect to the game directly from your browser using our
|
<a href="{% url 'webclient:index' %}" class="playbutton">Play in the browser!</a>
|
||||||
<a href="{% url 'webclient:index' %}">online client</a>!<br>
|
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<p>
|
<p>
|
||||||
For more info, take your time to
|
For more info, take your time to
|
||||||
peruse our extensive online <a href="https://evennia.com/docs/latest">documentation</a>.
|
peruse Evennia's extensive online <a href="https://evennia.com/docs/latest">manual</a>.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Should you have any questions, concerns, bug reports, or
|
If you have any questions, don't hesitate to join the Evennia community! Drop a message in the <a href="https://github.com/evennia/evennia/discussions">Evennia forums</a>
|
||||||
if you want to help out, don't hesitate to join the Evennia community
|
or come say hi in the support/chat channels (<a href="http://webchat.freenode.net/?channels=evennia">IRC</a>
|
||||||
to make your voice heard! Drop a mail to the <a
|
or <a href="https://discord.gg/NecFePw">Discord</a>).
|
||||||
href="https://github.com/evennia/evennia/discussions">mailing
|
|
||||||
list</a> or to come say hi in the <a
|
|
||||||
href="http://webchat.freenode.net/?channels=evennia">developer chatroom</a>.
|
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
If you find bugs, please report them to our <a href="https://github.com/evennia/evennia/issues">Issue tracker</a>.
|
If you find bugs, please report them to our <a href="https://github.com/evennia/evennia/issues">Issue tracker</a> on GitHub.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -99,16 +94,16 @@
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="card">
|
<div class="card text-center">
|
||||||
<h4 class="card-header text-center">Evennia</h4>
|
<h4 class="card-header text-center">Evennia</h4>
|
||||||
|
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<p><a href="https://evennia.com">Evennia</a> is an open-source MUD server built in
|
<p><a href="https://evennia.com">Evennia</a> is an open-source MUD/MU*-creation framework built in
|
||||||
<a href="http://python.org">Python</a>, on top of the
|
<a href="http://python.org">Python</a>, using
|
||||||
<a href="http://twistedmatrix.com">Twisted</a> and
|
<a href="http://twistedmatrix.com">Twisted</a> and
|
||||||
<a href="http://djangoproject.com">Django</a> frameworks. This
|
<a href="http://djangoproject.com">Django</a>.<br>
|
||||||
combination of technologies allows for the quick and easy creation
|
Create the text-based multiplayer-game of your dreams - as
|
||||||
of the game of your dreams - as simple or as complex as you like.</p>
|
simple or as complex as you like.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue