pax_global_header 0000666 0000000 0000000 00000000064 14010370125 0014503 g ustar 00root root 0000000 0000000 52 comment=7cfecd838c93b78cde41ad66282c9b9f8f7a996c
samizdat-0.7.1/ 0000775 0000000 0000000 00000000000 14010370125 0013324 5 ustar 00root root 0000000 0000000 samizdat-0.7.1/AUTHORS 0000664 0000000 0000000 00000000666 14010370125 0014404 0 ustar 00root root 0000000 0000000 Samizdat Authors
================
Dmitry Borodaenko
Contributors
------------
Denis Valoha
Hleb Valoska
Vladimir Shakhov
Kirill Shutemov
Boud/Indymedia Toruń
Translators
-----------
Vital Khilko (be)
Antono Vasiljev (eo)
Leftist/Indymedia Ukraine (uk)
Boud/Indymedia Toruń (pl, fr, es)
Czarna Kotka (es)
Matthias Kaschub (de)
Mailing Lists
-------------
samizdat-devel: http://lists.nongnu.org/mailman/listinfo/samizdat-devel
samizdat-0.7.1/COPYING 0000664 0000000 0000000 00000104374 14010370125 0014370 0 ustar 00root root 0000000 0000000
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Copyright (C)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
Copyright (C)
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
.
samizdat-0.7.1/ChangeLog.cvs 0000664 0000000 0000000 00000313100 14010370125 0015666 0 ustar 00root root 0000000 0000000 2009-06-10 16:40 angdraug
* data/samizdat/database/triggers-pgsql.sql,
data/samizdat/templates/page_layout.rhtml, doc/notes.txt,
doc/diagrams/samizdat_rdf_classes.dia,
lib/samizdat/controllers/query_controller.rb,
lib/samizdat/plugins/textile.rb, po/be.po:
* use member_link in page header
* update the monkey patch for RedCloth4
* include subproperties in properties menu in query editor
* Samizdat RDF classes diagram added
* fix *_update_part triggers to react when only
part_of_subproperty is changed
* ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
* this is the last CVS commit: Samizdat switched from CVS to
Monotone (mtn pull samizdat.mtn-host.prjek.net \*)
2009-04-22 15:15 angdraug
* lib/samizdat/models/message.rb: another Message.new optimization:
do not run queries that are expected to return empty results
2009-04-22 14:49 angdraug
* lib/samizdat/controllers/message_controller.rb:
brown-paper-bag-bug in timestamp-based message locking
2009-04-22 13:03 angdraug
* TODO, lib/samizdat/controllers/message_controller.rb,
lib/samizdat/helpers/application_helper.rb,
lib/samizdat/models/message.rb, po/be.po, po/ru.po:
* simple message locking via timestamps
* use parametrized RDF queries instead of interpolated query
strings: 30% speedup for front page and tag page generation due
to better hit rate on translated RDF queries
* use case insensitive sort for tag names
* TODO cleanup: many of the planned items have been done
2009-04-20 14:43 angdraug
* data/samizdat/defaults.yaml, data/samizdat/css/common.css,
data/samizdat/css/default.css, data/samizdat/css/indy.css,
data/samizdat/css/nihon.css, data/samizdat/css/savannah.css,
data/samizdat/css/sky.css, data/samizdat/css/torun.css,
data/samizdat/css/venezuela-centro.css,
data/samizdat/templates/frontpage_index.rhtml,
lib/samizdat/storage.rb, lib/samizdat/components/list.rb,
lib/samizdat/controllers/frontpage_controller.rb,
lib/samizdat/controllers/member_controller.rb,
lib/samizdat/engine/request.rb,
lib/samizdat/helpers/application_helper.rb,
lib/samizdat/plugins/flowplayer.rb, po/be.po, po/ru.po:
* refactored and integrated Savannah patch #6167 (monolanguage)
by Boud
* render Top Tags as a tag cloud instead of a list (sorted by
name, font size proportional to usage), sort tags by name in tags
pull-down menu
* support for OpenDocument formats: odg, odp, ods, odt
* minor Flowplayer rendering improvements
2009-04-16 18:48 angdraug
* bin/samizdat-role, data/samizdat/rdf.yaml,
data/samizdat/css/common.css, data/samizdat/css/default.css,
data/samizdat/css/indy.css, data/samizdat/css/nihon.css,
data/samizdat/css/savannah.css, data/samizdat/css/sky.css,
data/samizdat/css/torun.css,
data/samizdat/css/venezuela-centro.css,
data/samizdat/database/grant-pgsql.sql, doc/man/samizdat-role.1,
doc/migration/upgrade_from_v0.6.2.sql, lib/samizdat/sanitize.rb,
lib/samizdat/storage.rb, lib/samizdat/components/list.rb,
lib/samizdat/components/resource.rb,
lib/samizdat/controllers/frontpage_controller.rb,
lib/samizdat/controllers/member_controller.rb,
lib/samizdat/controllers/message_controller.rb,
lib/samizdat/controllers/moderation_controller.rb,
lib/samizdat/controllers/query_controller.rb,
lib/samizdat/controllers/resource_controller.rb,
lib/samizdat/engine/controller.rb,
lib/samizdat/engine/dataset.rb, lib/samizdat/engine/helpers.rb,
lib/samizdat/engine/request.rb, lib/samizdat/engine/session.rb,
lib/samizdat/helpers/application_helper.rb,
lib/samizdat/helpers/message_helper.rb,
lib/samizdat/models/content.rb, lib/samizdat/models/member.rb,
lib/samizdat/models/message.rb, lib/samizdat/models/tag.rb,
lib/samizdat/plugins/blog.rb,
lib/samizdat/plugins/content_file.rb,
lib/samizdat/plugins/content_inline.rb,
lib/samizdat/plugins/image.rb, po/be.po, po/de.po, po/en.po,
po/eo.po, po/es.po, po/fr.po, po/ja.po, po/pl.po, po/ru.po,
po/ua.po, po/zh_CN.po, test/mock.rb, test/tc_robot.rb:
* samizdat-role: command-line tool to grant and revoke moderator
(and other) priviledges (addresses Savannah bug #24157)
* when blog plugin is enabled, use blog location instead of
resource id for a member link
* RSS feed of blog messages
* RDF: use parent property's transitive closure for
subproperties
* option to show all replies in one page, including nested;
count subreplies when displaying number of replies to a message
* major overhaul of message part links rewriting; Sanitize and
Content API changed, Request#temporary_language introduced
* fixed message cut for multibyte characters
* merged i18n fixes from Boud: Savannah bugs #23687 (english
user-friendliness), #23700 ('English' is a wrong msgid), patch
#6560 (undetermined language)
2009-04-10 15:07 angdraug
* data/samizdat/config.yaml, data/samizdat/defaults.yaml,
data/samizdat/templates/frontpage_index.rhtml, doc/install.txt,
lib/samizdat/controllers/frontpage_controller.rb,
lib/samizdat/controllers/message_controller.rb,
lib/samizdat/engine/deployment.rb,
lib/samizdat/engine/helpers.rb, test/mock.rb:
* Savannah patch #6278 by Boud (more_links): allow to display
content of a message as part of Links on front page
* Savannah patch #6467 by Boud (antispam_titles - partial):
check message titles for spam, too
* timezone conversion (based on Savannah patch #6505 by Boud,
but using TZInfo instead of manual conversion)
2009-04-09 09:35 angdraug
* po/: be.po, ru.po: translations updated: Belarusian, Russian
2009-04-09 09:30 angdraug
* lib/samizdat/: components/list.rb,
controllers/frontpage_controller.rb,
controllers/moderation_controller.rb, engine/dataset.rb,
models/member.rb, plugins/access.rb, plugins/role.rb:
moderator_who patch from Boud refactored and merged (Savannah
patch #6283); EmptyDataSet, ResourceList#page,
AccessPlugin#find_who_can introduced
2009-04-09 09:29 angdraug
* data/samizdat/defaults.yaml, lib/samizdat/engine/dispatcher.rb,
lib/samizdat/engine/request.rb, lib/samizdat/plugins/blog.rb,
lib/samizdat/plugins/language_prefix.rb,
lib/samizdat/plugins/route.rb: Savannah patch #6171: allow to
force preferred language via URL (using /lang/ route prefix)
2009-04-09 09:29 angdraug
* bin/samizdat-import-feeds,
lib/samizdat/helpers/syndication_helper.rb: don't send
Accept-Language header when importing feeds (see i18n discussion
in Savannah patch #5881); minor code duplications removed
2009-04-09 09:28 angdraug
* lib/samizdat/controllers/diff_controller.rb: bugfix: don't use <<
around gettextized strings
2009-04-02 09:32 angdraug
* lib/samizdat/controllers/member_controller.rb: forced login
downcasing removed: it turned out to be backwards-incompatible
with legacy logins containing capital letters
2009-04-02 08:49 angdraug
* data/samizdat/defaults.yaml, data/samizdat/css/savannah.css,
data/samizdat/database/create-pgsql.sql,
doc/migration/upgrade_from_v0.6.2.sql,
lib/samizdat/components/resource.rb,
lib/samizdat/controllers/resource_controller.rb,
lib/samizdat/helpers/message_helper.rb,
lib/samizdat/models/event.rb, lib/samizdat/plugins/blog.rb,
po/be.po, po/ru.po:
* remove traces of Tag.type from DB scripts
* disable usage of TExp in Event
* blog route rewriting plugin
* show link from subtag to parent tag
* make action links stand out more in Savannah theme
2009-04-01 13:23 angdraug
* data/samizdat/defaults.yaml, data/samizdat/css/savannah.css,
data/samizdat/database/create-pgsql.sql,
doc/diagrams/samizdat_database.dia,
doc/diagrams/samizdat_message_classes.dia,
doc/migration/upgrade_from_v0.6.2.sql,
lib/samizdat/controllers/member_controller.rb,
lib/samizdat/controllers/message_controller.rb,
lib/samizdat/helpers/message_helper.rb,
lib/samizdat/models/tag.rb, lib/samizdat/plugins/image.rb,
po/be.po, po/ru.po:
* dropped unused Tag.type field
* updated database schema and message classes diagrams
* usability fixes
* Belarusian and Russian translations updated
2009-03-30 19:32 angdraug
* data/samizdat/defaults.yaml,
lib/samizdat/controllers/message_controller.rb: make number of
parts file fields configurable, increase default to 10
2009-03-30 16:37 angdraug
* lib/samizdat/components/resource.rb,
lib/samizdat/helpers/message_helper.rb,
lib/samizdat/helpers/resource_helper.rb, po/be.po, po/ru.po:
minor resource rendering improvements; Belarusian and Russian
translations updated
2009-03-30 14:12 angdraug
* doc/migration/upgrade_from_v0.6.2.sql: actualized DB migration
script
2009-03-30 11:35 angdraug
* README, TODO, data/samizdat/config.yaml,
data/samizdat/defaults.yaml, data/samizdat/rdf.yaml,
data/samizdat/xhtml.yaml, data/samizdat/css/default.css,
data/samizdat/css/indy.css, data/samizdat/css/nihon.css,
data/samizdat/css/savannah.css, data/samizdat/css/sky.css,
data/samizdat/css/torun.css,
data/samizdat/css/venezuela-centro.css,
data/samizdat/database/create-pgsql.sql,
data/samizdat/database/grant-pgsql.sql,
data/samizdat/database/triggers-pgsql.sql,
data/samizdat/rdf/focus.n3, data/samizdat/rdf/schema.n3,
data/samizdat/rdf/tag.n3,
data/samizdat/templates/frontpage_index.rhtml, doc/concepts.txt,
doc/design-goals.txt, doc/install.txt, doc/notes.txt,
doc/rdf-storage.txt, doc/references.txt,
doc/diagrams/samizdat_message_classes.dia,
doc/migration/upgrade_from_v0.6.2.sql, lib/samizdat/engine.rb,
lib/samizdat/sanitize.rb, lib/samizdat/storage.rb,
lib/samizdat/components/list.rb,
lib/samizdat/components/resource.rb,
lib/samizdat/controllers/event_controller.rb,
lib/samizdat/controllers/foci_controller.rb,
lib/samizdat/controllers/frontpage_controller.rb,
lib/samizdat/controllers/item_controller.rb,
lib/samizdat/controllers/member_controller.rb,
lib/samizdat/controllers/message_controller.rb,
lib/samizdat/controllers/moderation_controller.rb,
lib/samizdat/controllers/query_controller.rb,
lib/samizdat/controllers/resource_controller.rb,
lib/samizdat/controllers/tags_controller.rb,
lib/samizdat/engine/controller.rb,
lib/samizdat/engine/deployment.rb,
lib/samizdat/engine/dispatcher.rb,
lib/samizdat/engine/helpers.rb, lib/samizdat/engine/plugins.rb,
lib/samizdat/engine/preferences.rb,
lib/samizdat/engine/request.rb, lib/samizdat/engine/session.rb,
lib/samizdat/helpers/application_helper.rb,
lib/samizdat/helpers/event_helper.rb,
lib/samizdat/helpers/message_helper.rb,
lib/samizdat/helpers/resource_helper.rb,
lib/samizdat/models/content.rb, lib/samizdat/models/event.rb,
lib/samizdat/models/focus.rb, lib/samizdat/models/member.rb,
lib/samizdat/models/message.rb,
lib/samizdat/models/moderation.rb, lib/samizdat/models/tag.rb,
lib/samizdat/plugins/access.rb,
lib/samizdat/plugins/content_inline.rb,
lib/samizdat/plugins/file_default.rb,
lib/samizdat/plugins/flash.rb,
lib/samizdat/plugins/flowplayer.rb,
lib/samizdat/plugins/image.rb, lib/samizdat/plugins/loader.rb,
lib/samizdat/plugins/occupation.rb,
lib/samizdat/plugins/profile.rb, lib/samizdat/plugins/role.rb,
lib/samizdat/plugins/route.rb, lib/samizdat/plugins/tag.rb,
lib/samizdat/plugins/tag_default.rb,
lib/samizdat/plugins/virtual_tag.rb, po/be.po, po/ru.po,
test/mock.rb, test/tc_application_helper.rb,
test/tc_message_helper.rb, test/tc_robot.rb, test/tc_storage.rb:
* RDF sub-properties, transitive closures, must-not-bind
sub-patterns
* focuses renamed back to tags
* sub-tags may be defined by moderators
* replies, versions, translations, sub-tags and other parts are
generalized as transitive sub-properties of dct:isPartOf
* back to PostgreSQL-only until new triggers are ported
* new plugin APIs: tag, route
* global API-wide plugin options
* plugin dependencies
* upload queue (fixes Savannah bug #20710)
* upload message and its multimedia parts in one go
* record original_filename
* pass a block to Sanitize to programmatically filter out or
rewrite HTML attribute values
* manual cut-off mark for short message display
* edit title of a multimedia message without re-uploading the
file (fixes Savannah bug #20402)
* lock message to prevent further replies
* allow to recover accounts blocked due to lost confirmation
email, show list of blocked accounts to moderators
* login automatically on email confirmation
* require old password to change password
* generalized dynamic page cache out of FrontpageController
* CSRF protection moved from ApplicationHelper to Request,
allowing multiple secure forms per page
* allow custom strings inside generated forms
* use Message#load_from_rdf
* ResourcesList component
* frontpage template extracted from the controller
* do not display redundant reply titles
* do not display a setting if only one option is available
* separate limit on number of tags in a list
* cookie-based flash notices
* calendar (incomplete)
2009-02-12 12:14 angdraug
* doc/install.txt: installation instructions updated for Samizdat
0.6.2
2009-02-12 11:31 angdraug
* NEWS: Samizdat 0.6.2 release documented
2009-02-11 19:31 angdraug
* README, TODO, bin/samizdat-create-database,
bin/samizdat-drb-server, bin/samizdat-import-feeds,
bin/update-indymedia-cities, cgi-bin/dispatch.rb,
data/samizdat/defaults.yaml, data/samizdat/css/default.css,
data/samizdat/css/savannah.css,
data/samizdat/database/create-mysql.sql,
data/samizdat/database/create-pgsql.sql,
data/samizdat/database/create-sqlite3.sql,
data/samizdat/database/grant-mysql.sql,
data/samizdat/database/grant-pgsql.sql,
data/samizdat/database/triggers-mysql.sql,
data/samizdat/database/triggers-pgsql.sql,
data/samizdat/database/triggers-sqlite3.sql,
data/samizdat/js/flashembed.js, data/samizdat/rdf/focus.n3,
data/samizdat/rdf/items.n3, data/samizdat/rdf/schema.n3,
doc/examples/apache.conf, doc/examples/lighttpd.conf,
lib/samizdat/antispam.rb, lib/samizdat/cache.rb,
lib/samizdat/engine.rb, lib/samizdat/sanitize.rb,
lib/samizdat/storage.rb, lib/samizdat/components/resource.rb,
lib/samizdat/controllers/diff_controller.rb,
lib/samizdat/controllers/foci_controller.rb,
lib/samizdat/controllers/frontpage_controller.rb,
lib/samizdat/controllers/history_controller.rb,
lib/samizdat/controllers/item_controller.rb,
lib/samizdat/controllers/member_controller.rb,
lib/samizdat/controllers/message_controller.rb,
lib/samizdat/controllers/moderation_controller.rb,
lib/samizdat/controllers/query_controller.rb,
lib/samizdat/controllers/resource_controller.rb,
lib/samizdat/engine/controller.rb,
lib/samizdat/engine/dataset.rb,
lib/samizdat/engine/deployment.rb,
lib/samizdat/engine/dispatcher.rb,
lib/samizdat/engine/exceptions.rb,
lib/samizdat/engine/helpers.rb, lib/samizdat/engine/password.rb,
lib/samizdat/engine/preferences.rb,
lib/samizdat/engine/request.rb, lib/samizdat/engine/session.rb,
lib/samizdat/engine/view.rb,
lib/samizdat/helpers/application_helper.rb,
lib/samizdat/helpers/diff_helper.rb,
lib/samizdat/helpers/message_helper.rb,
lib/samizdat/helpers/resource_helper.rb,
lib/samizdat/helpers/syndication_helper.rb,
lib/samizdat/models/content.rb, lib/samizdat/models/focus.rb,
lib/samizdat/models/member.rb, lib/samizdat/models/message.rb,
lib/samizdat/models/moderation.rb,
lib/samizdat/plugins/access.rb,
lib/samizdat/plugins/content_file.rb,
lib/samizdat/plugins/content_inline.rb,
lib/samizdat/plugins/file_default.rb,
lib/samizdat/plugins/flash.rb,
lib/samizdat/plugins/flowplayer.rb, lib/samizdat/plugins/html.rb,
lib/samizdat/plugins/image.rb,
lib/samizdat/plugins/inline_default.rb,
lib/samizdat/plugins/loader.rb,
lib/samizdat/plugins/occupation.rb,
lib/samizdat/plugins/plain_text.rb,
lib/samizdat/plugins/profile.rb, lib/samizdat/plugins/role.rb,
lib/samizdat/plugins/squish.rb, lib/samizdat/plugins/textile.rb,
test/mock.rb, test/tc_application_helper.rb, test/tc_cache.rb,
test/tc_message_helper.rb, test/tc_password.rb, test/tc_robot.rb,
test/tc_storage.rb, test/tc_version.rb, test/ts_samizdat.rb,
test/util.rb: added several missing CGI.escapeHTML for message
title and member full name (CVS-2009-0359); escape single quote
as ' for compatibility with IE; improved handling of REXML
and Tidy errors in Sanitize; password encryption upgraded from
MD5 to salted SHA-512; documentation, unit tests, copyright
notices updated; Flowplayer integration updated for Flowplayer 3,
flowplayer aliases removed from example web server configs; don't
redirect back to login page on successful login; sort moderation
log by descending date for consistency with all other lists
2008-12-15 00:31 boud
* po/pl.po: again minor
2008-12-15 00:28 boud
* po/pl.po: another minor change
2008-12-14 22:59 boud
* po/pl.po: minor: flash-related translation corrections
2008-10-28 18:49 angdraug
* lib/samizdat/plugins/textile.rb: make RedCloth monkey fix
forward-compatible with RedCloth4
2008-10-28 18:48 angdraug
* lib/samizdat/: controllers/member_controller.rb,
engine/request.rb: forced HTTPS forms fixes: handle return to
frontpage as a special case (blank relative location unsets the
cookie), enforce HTTPS on account creation, not only login
2008-10-25 20:33 angdraug
* data/samizdat/defaults.yaml,
data/samizdat/flowplayer/FlowPlayerDark.swf,
lib/samizdat/plugins/flowplayer.rb: removed Flowplayer from
Samizdat source code, documented where to download it from and
how to configure flowplayer plugin to use it, added configuration
options to change Flowplayer location and background color
2008-10-25 19:35 angdraug
* data/samizdat/defaults.yaml, lib/samizdat/antispam.rb: fix for
Savannah bug #24361: remove antispam sleep, it doesn't stop
spambots and only uses up system resources
2008-10-25 18:46 angdraug
* data/samizdat/defaults.yaml: don't link to an external URL in the
default antispam configuration, default setup should be
self-contained
2008-10-25 17:27 angdraug
* data/samizdat/config.yaml,
lib/samizdat/controllers/member_controller.rb,
lib/samizdat/controllers/message_controller.rb,
lib/samizdat/engine/request.rb: make sure session cookie secure
flag is set when sending over HTTPS; allow to force encrypted
login when HTTPS is available
2008-10-22 16:51 angdraug
* lib/samizdat/engine/dataset.rb: fix for Savannah bug #24091:
RdfDataSet fails to use optional parameter hash in cache key
2008-10-22 16:36 angdraug
* lib/samizdat/sanitize.rb: fix for Savannah bug #23848: on ruby
1.8.5 (Debian/etch), NameError is raised instead
2008-09-28 19:28 angdraug
* lib/samizdat/sanitize.rb: suppress extra messages from tidy_pipe
2008-09-28 19:27 angdraug
* lib/samizdat/models/content.rb: bugfix: pass StringIO uploads
directly to Mahoro#buffer()
2008-09-28 19:27 angdraug
* lib/samizdat/controllers/member_controller.rb: fix for Savannah
bug #24185: sensible default redirect for /member/index
2008-09-28 19:27 angdraug
* lib/samizdat/: engine.rb, engine/helpers.rb: make date/time
handling compatible with Ruby/DBI 0.4.0
2008-09-21 13:44 angdraug
* lib/samizdat/sanitize.rb: don't require tidy if we're using
binary
2008-09-21 13:26 angdraug
* lib/samizdat/sanitize.rb: due to Tidy/Ruby being broken by Ruby
1.8.7-p72 DL taint fixes, Sanitize now prefers to use tidy binary
via pipe over tidy.so via DL
2008-08-31 17:59 angdraug
* data/samizdat/js/flashembed.js: flashembed updated to version
0.31
2008-08-31 17:08 angdraug
* data/samizdat/flowplayer/FlowPlayerDark.swf: Flowplayer updated
to version 2.2.2
2008-08-31 16:50 angdraug
* lib/samizdat/: components/resource.rb,
controllers/frontpage_controller.rb,
controllers/query_controller.rb,
controllers/resource_controller.rb,
helpers/application_helper.rb: RSS feeds fixed: Resource#rss is
really uncacheable; ApplicationHelper#render_rss extracted to
render a set of resources as RSS and cache the result
2008-08-30 22:48 boud
* doc/translations.txt, po/es.po, po/fr.po, po/ja.po, po/pl.po:
minor translation changes: fr + pl updated, es partially updated,
ja updated to include msgid prompts and fuzzy guesses, trivial
language corrections to translations.txt
2008-08-30 00:09 boud
* data/samizdat/css/: nihon.css, venezuela-centro.css: two css
files - nihon.css has outset button style for user action links
2008-08-11 08:25 angdraug
* lib/samizdat/components/resource.rb: followup to the account
creation bugfix: fix display of accounts with unset full name
2008-08-07 16:17 angdraug
* data/samizdat/database/create-mysql.sql,
data/samizdat/database/create-pgsql.sql,
data/samizdat/database/create-sqlite3.sql,
lib/samizdat/controllers/member_controller.rb,
lib/samizdat/engine/session.rb, lib/samizdat/models/member.rb:
bugfix: it is now possible to create account without full name,
login is used as default substitute; removed code duplication
between Member and Session
2008-08-07 16:16 angdraug
* data/samizdat/defaults.yaml,
lib/samizdat/controllers/message_controller.rb: map both x-ms-wmv
and x-ms-asf to wmv extension, add support for realmedia files
2008-08-07 16:16 angdraug
* doc/diagrams/samizdat_database.dia: fixed Role.role field name in
the DB diagram
2008-07-19 23:20 boud
* data/samizdat/defaults.yaml: improving explanation to sysadmin in
defaults.yaml, so that we can close the bug
https://savannah.nongnu.org/bugs/?21243
2008-07-15 01:22 boud
* doc/examples/apache.conf: Closing patch #5930 - fixing ambiguous
language in apache.conf comments. The two interpretations of the
old version are: # Replace the first "/samizdat" here with (your
site location for all aliases) vs # (Replace the first
"/samizdat" here with your site location) for all aliases See the
replacement. With this, we can close patch #5930 IMHO.
2008-07-03 18:15 angdraug
* test/tc_message_helper.rb: update unit tests for message_content
== nil bug
2008-07-03 14:48 boud
* data/samizdat/defaults.yaml, po/ja.po, po/pl.po: ja corrected by
a native speaker and should be acceptable in default.yaml, ja
also includes msgids and some msgstrs for recent patches, one
line correction in pl, these have not yet been updated for
post-070818
2008-07-03 14:16 angdraug
* data/samizdat/flowplayer/FlowPlayerDark.swf: Flowplayer updated
to version 2.2.1
2008-07-03 14:15 angdraug
* doc/: diagrams/samizdat_database.dia,
diagrams/samizdat_deployment.dia,
diagrams/samizdat_message_classes.dia, diagrams/samizdat_mvc.dia,
slides/lvee2008_samizdat.xml: added Dia diagrams and LVEE-2008
slides
2008-07-03 14:14 angdraug
* lib/samizdat/components/resource.rb: fixed VoteComponent that was
broken by role-based access control changes
2008-07-03 14:14 angdraug
* lib/samizdat/storage.rb: make sure mutually referencing records
are inserted in the right order during RDF#assert
2008-07-03 14:13 angdraug
* lib/samizdat/: helpers/message_helper.rb, models/content.rb: fix
message_content == nil bug
2008-07-03 14:13 angdraug
* data/samizdat/defaults.yaml, lib/samizdat/plugins/flowplayer.rb:
fix flv mime type to match what Mahoro returns
2008-05-25 15:50 angdraug
* lib/samizdat/models/member.rb: fixed a missing title in
MemberController; localize action names in access denied error
2008-05-25 15:49 angdraug
* doc/install.txt, lib/samizdat/models/content.rb: don't trust
content_type coming with the request, use Mahoro library
(libmagic) to detect file type instead
2008-05-25 15:48 angdraug
* lib/samizdat/models/message.rb: prepend 'Message' to 404 error
when raised from Message
2008-05-25 15:46 angdraug
* lib/samizdat/storage.rb: added minor comment to Storage
2008-05-25 15:46 angdraug
* lib/samizdat/plugins/role.rb: removed debug output
2008-05-25 15:45 angdraug
* lib/samizdat/controllers/member_controller.rb, po/be.po,
po/ru.po: fixed a missing title in MemberController; localize
action names in access denied error
2008-05-13 09:14 boud
* po/ja.po: wrong translation for 'translation' corrected in ja.po
2008-05-10 17:06 angdraug
* data/samizdat/flowplayer/FlowPlayerDark.swf: Flowplayer binary
included in Samizdat source, see flowplayer.org for source code
2008-05-10 17:04 angdraug
* COPYING, README, bin/samizdat-create-database,
bin/samizdat-drb-server, bin/samizdat-import-feeds,
bin/update-indymedia-cities, cgi-bin/dispatch.rb,
data/samizdat/config.yaml, data/samizdat/defaults.yaml,
data/samizdat/css/default.css, data/samizdat/css/savannah.css,
data/samizdat/css/sky.css,
data/samizdat/database/create-mysql.sql,
data/samizdat/database/create-pgsql.sql,
data/samizdat/database/create-sqlite3.sql,
data/samizdat/database/grant-mysql.sql,
data/samizdat/database/grant-pgsql.sql,
data/samizdat/database/triggers-mysql.sql,
data/samizdat/database/triggers-pgsql.sql,
data/samizdat/database/triggers-sqlite3.sql,
data/samizdat/js/flashembed.js, data/samizdat/rdf/focus.n3,
data/samizdat/rdf/items.n3, data/samizdat/rdf/schema.n3,
data/samizdat/templates/page_layout.rhtml,
doc/examples/apache.conf, doc/examples/lighttpd.conf,
doc/man/samizdat-create-database.1,
doc/man/samizdat-drb-server.1, doc/man/samizdat-import-feeds.1,
doc/man/update-indymedia-cities.1, lib/samizdat/antispam.rb,
lib/samizdat/cache.rb, lib/samizdat/engine.rb,
lib/samizdat/sanitize.rb, lib/samizdat/storage.rb,
lib/samizdat/components/resource.rb,
lib/samizdat/controllers/diff_controller.rb,
lib/samizdat/controllers/foci_controller.rb,
lib/samizdat/controllers/frontpage_controller.rb,
lib/samizdat/controllers/history_controller.rb,
lib/samizdat/controllers/item_controller.rb,
lib/samizdat/controllers/member_controller.rb,
lib/samizdat/controllers/message_controller.rb,
lib/samizdat/controllers/moderation_controller.rb,
lib/samizdat/controllers/query_controller.rb,
lib/samizdat/controllers/resource_controller.rb,
lib/samizdat/engine/controller.rb,
lib/samizdat/engine/dataset.rb,
lib/samizdat/engine/deployment.rb,
lib/samizdat/engine/dispatcher.rb,
lib/samizdat/engine/exceptions.rb,
lib/samizdat/engine/helpers.rb,
lib/samizdat/engine/preferences.rb,
lib/samizdat/engine/request.rb, lib/samizdat/engine/session.rb,
lib/samizdat/engine/view.rb,
lib/samizdat/helpers/application_helper.rb,
lib/samizdat/helpers/diff_helper.rb,
lib/samizdat/helpers/message_helper.rb,
lib/samizdat/helpers/resource_helper.rb,
lib/samizdat/helpers/syndication_helper.rb,
lib/samizdat/models/content.rb, lib/samizdat/models/focus.rb,
lib/samizdat/models/member.rb, lib/samizdat/models/message.rb,
lib/samizdat/models/moderation.rb,
lib/samizdat/plugins/access.rb,
lib/samizdat/plugins/content_file.rb,
lib/samizdat/plugins/content_inline.rb,
lib/samizdat/plugins/file_default.rb,
lib/samizdat/plugins/flash.rb,
lib/samizdat/plugins/flowplayer.rb, lib/samizdat/plugins/html.rb,
lib/samizdat/plugins/image.rb,
lib/samizdat/plugins/inline_default.rb,
lib/samizdat/plugins/loader.rb,
lib/samizdat/plugins/occupation.rb,
lib/samizdat/plugins/plain_text.rb,
lib/samizdat/plugins/profile.rb, lib/samizdat/plugins/role.rb,
lib/samizdat/plugins/squish.rb, lib/samizdat/plugins/textile.rb,
po/be.po, po/eo.po, po/pl.po, po/ru.po, po/ua.po, test/mock.rb,
test/tc_application_helper.rb, test/tc_cache.rb,
test/tc_message_helper.rb, test/tc_robot.rb, test/tc_storage.rb,
test/tc_version.rb, test/ts_samizdat.rb, test/util.rb: license
upgraded to GPL 3; Flowplayer flash video player integrated (flv
and mp4 files supported); member settings split into profile,
account, and UI settings pages, implemented flash notices in
Request; role-based access control plugin: list of moderators is
now stored in db instead of config; minor UI fixes and
improvements; Belarusian and Russian translations updated
2008-04-11 21:14 angdraug
* lib/samizdat/: controllers/frontpage_controller.rb,
controllers/member_controller.rb, engine/deployment.rb,
engine/request.rb, engine/view.rb, models/content.rb,
plugins/image.rb, plugins/loader.rb: untaint trusted configs
2008-04-11 21:13 angdraug
* cgi-bin/dispatch.rb: make sure SAFE level is at least 1
2008-04-06 22:36 angdraug
* lib/samizdat/: models/content.rb, plugins/loader.rb: several
mod_ruby-specific security errors fixed
2008-04-06 21:25 angdraug
* TODO, doc/design-goals.txt, po/be.po, po/ru.po: documentation,
Belarusian and Russian translations updated
2008-04-06 21:14 angdraug
* bin/samizdat-import-feeds, data/samizdat/defaults.yaml,
data/samizdat/css/default.css, data/samizdat/css/indy.css,
data/samizdat/css/savannah.css, data/samizdat/css/sky.css,
lib/samizdat/engine.rb, lib/samizdat/components/resource.rb,
lib/samizdat/controllers/frontpage_controller.rb,
lib/samizdat/controllers/message_controller.rb,
lib/samizdat/controllers/query_controller.rb,
lib/samizdat/controllers/resource_controller.rb,
lib/samizdat/engine/deployment.rb,
lib/samizdat/engine/request.rb,
lib/samizdat/helpers/diff_helper.rb,
lib/samizdat/helpers/message_helper.rb,
lib/samizdat/models/content.rb, lib/samizdat/models/message.rb,
lib/samizdat/plugins/content_file.rb,
lib/samizdat/plugins/content_inline.rb,
lib/samizdat/plugins/file_default.rb,
lib/samizdat/plugins/html.rb, lib/samizdat/plugins/image.rb,
lib/samizdat/plugins/inline_default.rb,
lib/samizdat/plugins/loader.rb,
lib/samizdat/plugins/plain_text.rb,
lib/samizdat/plugins/squish.rb, lib/samizdat/plugins/textile.rb,
test/mock.rb, test/tc_message_helper.rb, test/tc_robot.rb,
test/tc_storage.rb, test/util.rb: introduced plugins system;
extracted content rendering into plugins; image plugin generates
and displays reduced versions of images; Message.replace! now
removes old file if it exists; extracted Resource#rss from
Message and QueryController; replaced samizdat_site_name global
with samizdat_current_request
2008-03-22 14:38 angdraug
* doc/install.txt, lib/samizdat/storage.rb,
lib/samizdat/engine/helpers.rb,
lib/samizdat/helpers/message_helper.rb: documentation and error
handling fixes
2008-03-22 14:37 angdraug
* lib/samizdat/models/message.rb: based on patch by mend0za:
include description in RSS feeds
2008-03-20 21:06 mend0za
* lib/samizdat/engine/: deployment.rb, helpers.rb: configuration
handling: fix for directories not tailing by /
2008-03-09 11:08 angdraug
* po/be.po: fixed incorrect email for Hleb Valoshka
2008-03-04 13:51 angdraug
* lib/samizdat/engine.rb: update 'all classes equal' hack for
Ruby/GetText 1.90
2008-03-04 13:04 angdraug
* lib/samizdat/engine.rb, test/tc_version.rb: update version to
0.6.1
2008-03-04 12:37 angdraug
* NEWS, README, doc/concepts.txt, doc/design-goals.txt,
doc/references.txt: documentation updated for Samizdat 0.6.1
release
2008-02-25 14:55 angdraug
* lib/samizdat/: storage.rb, components/resource.rb,
controllers/message_controller.rb,
controllers/query_controller.rb, engine/exceptions.rb: replace
remnants of 'skip' parameter with 'page', untie Storage from
Samizdat engine so that it can be used stand-alone
2008-02-24 10:39 angdraug
* data/samizdat/database/create-mysql.sql,
data/samizdat/database/create-pgsql.sql,
data/samizdat/database/create-sqlite3.sql,
lib/samizdat/storage.rb, lib/samizdat/helpers/message_helper.rb,
lib/samizdat/helpers/syndication_helper.rb,
lib/samizdat/models/message.rb: fixes: more resiliense against
malformed configs (from patch #5881), cripple links and images in
hidden messages (patch #6372); optimizations: index on Resource
(uriref), load core message parameters using single SQL query
2008-02-22 23:37 angdraug
* lib/samizdat/antispam.rb, lib/samizdat/components/resource.rb,
lib/samizdat/controllers/message_controller.rb,
lib/samizdat/controllers/resource_controller.rb,
lib/samizdat/engine/dataset.rb, lib/samizdat/engine/request.rb,
lib/samizdat/helpers/message_helper.rb,
lib/samizdat/models/moderation.rb, po/be.po, po/ru.po: multiple
resource rendering improvements: separate :full and :page modes,
use :full instead of :short where full non-translated message
should be displayed, use :short instead of :list_item for
messages on member page, include link to votes in statement page;
bugfixes: no moderation log when previewing a new message, better
fix for bug #21490; Belarusian and Russian translations updated
2008-02-22 23:33 angdraug
* TODO: defined todo items for release 0.6.2
2008-02-22 23:33 angdraug
* bin/samizdat-import-feeds: fail-safe feed parsing
2008-02-22 00:51 boud
* po/zh_CN.po: initial rough, partial version of zh_CN.po,
samizdat-0.6.0.070818-1 seems to require installing the .mo file
in zh/ and using zh in the config.yaml file instead of
zh_CN/ and zh_CN respectively
2008-02-14 19:56 angdraug
* lib/samizdat/helpers/application_helper.rb: don't << to a
localized string, GetText doesn't like that
2008-02-14 18:15 angdraug
* TODO, data/samizdat/database/grant-pgsql.sql,
doc/rdf-storage.txt, lib/samizdat/cache.rb,
lib/samizdat/engine.rb, lib/samizdat/sanitize.rb,
lib/samizdat/storage.rb, lib/samizdat/components/resource.rb,
lib/samizdat/controllers/foci_controller.rb,
lib/samizdat/controllers/frontpage_controller.rb,
lib/samizdat/controllers/history_controller.rb,
lib/samizdat/controllers/member_controller.rb,
lib/samizdat/controllers/moderation_controller.rb,
lib/samizdat/controllers/query_controller.rb,
lib/samizdat/controllers/resource_controller.rb,
lib/samizdat/engine/dataset.rb, lib/samizdat/engine/helpers.rb,
lib/samizdat/helpers/application_helper.rb,
lib/samizdat/helpers/message_helper.rb,
lib/samizdat/models/moderation.rb, po/be.po, po/ru.po,
test/tc_storage.rb: major update of RDF storage: OPTIONAL
sub-patterns (in SELECT only for now), per-statement FILTERs; new
DataSet based pagination system; show pending moderation requests
to everyone, force lowercase login names, use REXML::Formatters
in Sanitize when available, documentation updated
2008-01-20 16:02 angdraug
* README, TODO, doc/slides/barcampsheffield2007_samizdat.xml,
lib/samizdat/engine.rb, lib/samizdat/components/resource.rb,
lib/samizdat/controllers/member_controller.rb,
lib/samizdat/controllers/message_controller.rb,
lib/samizdat/controllers/moderation_controller.rb,
lib/samizdat/engine/exceptions.rb,
lib/samizdat/engine/request.rb,
lib/samizdat/helpers/application_helper.rb,
lib/samizdat/helpers/message_helper.rb,
lib/samizdat/models/message.rb,
lib/samizdat/models/moderation.rb, po/be.po, po/ru.po,
test/tc_message_helper.rb: notify moderator functionality added;
Moderation model introduced; bugfixes: #20678 (redirect_when_done
cookie is used to always redirect back to where login process was
started from), always default to parent's title, don't append new
lines to the end of message body; API changes: Request#redirect
now requires '' to redirect to site base, Request#set_cookie
'expires' parameter defaults to non-persistent (session) cookie,
#forever value now must be passed explicitly; Belarusian and
Russian translations updated; documentation updated, Barcamp
Sheffield 2007 slides added
2007-11-12 00:12 angdraug
* TODO, bin/samizdat-drb-server, doc/install.txt,
doc/examples/apache.conf, lib/samizdat/cache.rb,
lib/samizdat/controllers/message_controller.rb,
lib/samizdat/helpers/application_helper.rb,
lib/samizdat/helpers/message_helper.rb,
lib/samizdat/models/content.rb, po/be.po, po/ru.po: show
non-inline message file size; rate-limit cache.flush; inform
guest users that they can't edit even open-for-all messages;
Belarusian and Russian translations updated; minor documentation
updates
2007-11-04 23:39 angdraug
* lib/samizdat/controllers/moderation_controller.rb: bugfix:
models/moderation never came to be
2007-11-04 21:00 angdraug
* test/: mock.rb, tc_application_helper.rb: unit tests updated
2007-11-04 20:45 angdraug
* data/samizdat/config.yaml, data/samizdat/defaults.yaml,
data/samizdat/database/create-mysql.sql,
data/samizdat/database/create-pgsql.sql,
data/samizdat/database/create-sqlite3.sql, doc/install.txt,
lib/samizdat/components/resource.rb,
lib/samizdat/controllers/frontpage_controller.rb,
lib/samizdat/controllers/message_controller.rb,
lib/samizdat/controllers/moderation_controller.rb,
lib/samizdat/controllers/resource_controller.rb,
lib/samizdat/engine/request.rb,
lib/samizdat/helpers/message_helper.rb,
lib/samizdat/models/message.rb, po/be.po, po/ru.po: reverted back
to not swapping message with its preferred translation in full
mode; per-resource moderation logs; more DB indexes; RSS import
documented; Belarusian and Russian translations updated; store
Antispam object in persistent cache; fixes for bugs #21286,
#20932, #21490, #21242, setting focus during publishing of new
message, pagination when mixing replies and translations
2007-11-01 14:27 boud
* po/: es.po, fr.po: es+fr translation strings for a few patches
2007-09-09 10:14 boud
* lib/samizdat/antispam.rb, po/pl.po: pl.po: multipublish patch,
antispam.rb typo correction (/'delay'/,"'delay_limit'")
2007-08-25 21:03 boud
* po/ja.po: a few strings used in patches are added here
2007-08-25 04:45 boud
* po/ja.po: a few spaces
2007-08-24 02:39 boud
* po/pl.po: two strings for multipublish patch 0.4
2007-08-20 22:42 boud
* po/: es.po, fr.po, ja.po, pl.po: es/fr/ja/pl translations of
'Alternatively, upload a file ... '
2007-08-19 15:55 angdraug
* lib/samizdat/: components/resource.rb,
controllers/message_controller.rb: fixed setting focus during
publishing of new message
2007-08-18 17:18 angdraug
* doc/man/samizdat-import-feeds.1: man page for
samizdat-import-feeds
2007-08-18 16:51 angdraug
* TODO, bin/samizdat-import-feeds, data/samizdat/config.yaml,
data/samizdat/defaults.yaml, data/samizdat/css/default.css,
data/samizdat/css/indy.css, data/samizdat/css/savannah.css,
data/samizdat/css/sky.css, lib/samizdat/antispam.rb,
lib/samizdat/cache.rb, lib/samizdat/engine.rb,
lib/samizdat/controllers/frontpage_controller.rb,
lib/samizdat/controllers/member_controller.rb,
lib/samizdat/controllers/message_controller.rb,
lib/samizdat/engine/antispam.rb,
lib/samizdat/engine/deployment.rb,
lib/samizdat/engine/helpers.rb, lib/samizdat/engine/request.rb,
lib/samizdat/helpers/application_helper.rb,
lib/samizdat/helpers/syndication_helper.rb,
lib/samizdat/models/content.rb, po/be.po, po/ru.po: import feeds
patch by Boud refactored and integrated; Cache expiry made more
flexible, persistent cross-site cache added; Antipam module
unbundled from engine into standalone library; bugs fixed: #19830
(upload file message), #20303 (basic interface fixed and
expanded), #20305 (don't display focus option without vote
acess), #20678 (don't redirect to referer on login/logout),
#20491 (fixed inconsistent handling of form action location by
CSRF protection); documentation updated; minor refactorings and
cleanups
2007-08-07 22:22 boud
* doc/install.txt: clarifications: apache.conf is a samizdat file;
importance of .yaml config files
2007-07-06 00:30 boud
* doc/install.txt: trivial: s/default.yaml/defaults.yaml/
2007-07-01 00:11 boud
* po/pl.po: minor pl language correction while waiting for fix to
bug #19830
2007-06-23 22:34 boud
* po/pl.po: minor: typo, antispam message
2007-06-20 00:46 boud
* po/: es.po, fr.po, pl.po: minor {es/fr/pl}.po: removed disabling
'fuzzy' comments
2007-06-18 21:59 boud
* po/pl.po: minor pl replace of replacement string for replace
action ;)
2007-06-18 19:51 angdraug
* lib/samizdat/: components/resource.rb, helpers/message_helper.rb,
models/focus.rb, models/message.rb: translations overhaul
inspired by separate translations patch by Boud: swap preferred
translation and original, don't show translations in the list of
replies, don't allow to post reply to a translation
2007-06-18 11:04 angdraug
* lib/samizdat/controllers/message_controller.rb: more faulty logic
in message editing
2007-06-17 17:55 angdraug
* data/samizdat/defaults.yaml, lib/samizdat/cache.rb,
lib/samizdat/controllers/message_controller.rb,
lib/samizdat/engine/antispam.rb,
lib/samizdat/engine/controller.rb,
lib/samizdat/engine/exceptions.rb,
lib/samizdat/engine/helpers.rb: antispam module (by Boud with
some refactoring); log_exception helper extracted from
ErrorController; clarified that Cache#fetch_or_add is the
preferred method; fixed fix for #20134
2007-06-16 11:21 angdraug
* lib/samizdat/controllers/message_controller.rb: bug #20134: wrong
edit message permission check
2007-06-03 22:37 boud
* data/samizdat/config.yaml: ja: japanese header added for default
installation
2007-06-02 01:42 boud
* po/ja.po: experimental version of ja.po; deliberately not yet
added to config.yaml
2007-05-20 22:11 boud
* po/: es.po, fr.po, pl.po: es + fr + pl updates after major
20070501 revision; Plural-Forms definitions corrected
2007-05-20 13:32 angdraug
* lib/samizdat/controllers/message_controller.rb: set creator in
message/edit (can be different from original when open-for-all)
2007-05-19 12:54 angdraug
* lib/samizdat/components/resource.rb: don't cache
MessageComponent#info
2007-05-19 12:36 angdraug
* data/samizdat/config.yaml, doc/examples/apache.conf: merged in
config file comments clarifications by Boud
2007-05-19 12:25 angdraug
* lib/samizdat/components/resource.rb: fixed mutual recursion
between MessageComponent and Focus (bug #19903)
2007-05-19 12:25 angdraug
* lib/samizdat/cache.rb: monkey fixes for bugs in sync.rb
2007-05-12 20:28 boud
* doc/examples/apache.conf: less ambiguity in comments in suggested
apache.conf file
2007-05-09 20:50 angdraug
* AUTHORS: translators list updated
2007-05-09 20:21 angdraug
* lib/samizdat/: cache.rb, controllers/frontpage_controller.rb,
engine/deployment.rb, helpers/application_helper.rb: Cache
rewritten for better deadlock avoidance, FIFO replaced with
flexible replacement policy defaulting to LRU, debugging to
syslog added, has_key? removed
2007-05-06 11:55 angdraug
* lib/samizdat/: engine/request.rb, helpers/application_helper.rb:
use cache instead of database for CSRF protection; input
validation improvement in Request
2007-05-05 13:18 angdraug
* lib/samizdat/: controllers/diff_controller.rb,
controllers/frontpage_controller.rb,
controllers/member_controller.rb,
controllers/query_controller.rb,
controllers/resource_controller.rb,
helpers/application_helper.rb, models/message.rb: language list
restored (Boud); account creation fixed; several RSS fixes; input
validation improvements in DiffController and QueryController
2007-05-04 00:12 boud
* lib/samizdat/engine/controller.rb, po/be.po, po/ru.po: corrected
spelling error visible to users: s/priviledge/privilege/
2007-05-01 20:31 angdraug
* lib/samizdat/helpers/message_helper.rb, po/be.po, test/mock.rb,
test/tc_application_helper.rb, test/tc_message_helper.rb,
test/tc_template.rb, test/ts_samizdat.rb, test/util.rb:
Belarusian translation updated, unit tests updated for
application and message helpers
2007-04-25 21:04 angdraug
* TODO, doc/examples/lighttpd.conf,
lib/samizdat/controllers/frontpage_controller.rb,
lib/samizdat/controllers/member_controller.rb,
lib/samizdat/controllers/message_controller.rb,
lib/samizdat/controllers/moderation_controller.rb,
lib/samizdat/controllers/resource_controller.rb,
lib/samizdat/engine/deployment.rb,
lib/samizdat/engine/helpers.rb,
lib/samizdat/engine/preferences.rb,
lib/samizdat/engine/request.rb, lib/samizdat/engine/session.rb,
lib/samizdat/helpers/application_helper.rb,
lib/samizdat/helpers/message_helper.rb,
lib/samizdat/models/content.rb, po/ru.po, test/tc_robot.rb: CSRF
protection for message, resource, and member controllers;
translation of actions in moderation log; cache sites map
configuration, ignore trailing slashes in URI prefixes;
RequestSingleton reduced to ; upload location handling moved from
Content to Request
2007-04-22 14:05 angdraug
* data/samizdat/templates/page_layout.rhtml,
doc/examples/apache.conf, doc/examples/lighttpd.conf,
lib/samizdat/components/resource.rb,
lib/samizdat/controllers/member_controller.rb,
lib/samizdat/controllers/message_controller.rb,
lib/samizdat/controllers/moderation_controller.rb,
lib/samizdat/controllers/query_controller.rb,
lib/samizdat/controllers/resource_controller.rb,
lib/samizdat/engine/deployment.rb,
lib/samizdat/engine/dispatcher.rb,
lib/samizdat/engine/helpers.rb, lib/samizdat/engine/request.rb,
lib/samizdat/models/content.rb, test/tc_robot.rb,
test/ts_samizdat.rb, test/util.rb: unit tests fixed (except
tc_template); lighttpd support added, route handling straightened
(Apache config also changed)
2007-04-18 19:55 angdraug
* po/: be.po, ru.po: Russian and Belarusian translations updated
2007-04-17 21:08 angdraug
* data/samizdat/css/default.css, data/samizdat/css/indy.css,
data/samizdat/css/savannah.css, data/samizdat/css/sky.css,
doc/translations.txt,
lib/samizdat/controllers/frontpage_controller.rb,
lib/samizdat/controllers/member_controller.rb,
lib/samizdat/controllers/message_controller.rb,
lib/samizdat/helpers/message_helper.rb,
lib/samizdat/helpers/resource_helper.rb: link to foci moved to
top focuses as 'more'; stylesheets updated for action links; show
message preview for hide/unhide; translation instructions updated
for new code layout
2007-04-17 17:48 angdraug
* cgi-bin/dispatch.rb, cgi-bin/foci.rb, cgi-bin/history.rb,
cgi-bin/index.rb, cgi-bin/item.rb, cgi-bin/login.rb,
cgi-bin/logout.rb, cgi-bin/member.rb, cgi-bin/message.rb,
cgi-bin/moderation.rb, cgi-bin/query.rb, cgi-bin/resource.rb,
data/samizdat/config.yaml, data/samizdat/defaults.yaml,
data/samizdat/database/create-mysql.sql,
data/samizdat/database/create-pgsql.sql,
data/samizdat/database/create-sqlite3.sql,
data/samizdat/templates/page_layout.rhtml,
doc/examples/apache.conf, lib/samizdat/cache.rb,
lib/samizdat/engine.rb, lib/samizdat/storage.rb,
lib/samizdat/components/resource.rb,
lib/samizdat/controllers/diff_controller.rb,
lib/samizdat/controllers/foci_controller.rb,
lib/samizdat/controllers/frontpage_controller.rb,
lib/samizdat/controllers/history_controller.rb,
lib/samizdat/controllers/item_controller.rb,
lib/samizdat/controllers/member_controller.rb,
lib/samizdat/controllers/message_controller.rb,
lib/samizdat/controllers/moderation_controller.rb,
lib/samizdat/controllers/query_controller.rb,
lib/samizdat/controllers/resource_controller.rb,
lib/samizdat/engine/controller.rb,
lib/samizdat/engine/deployment.rb,
lib/samizdat/engine/dispatcher.rb, lib/samizdat/engine/focus.rb,
lib/samizdat/engine/helpers.rb, lib/samizdat/engine/message.rb,
lib/samizdat/engine/preferences.rb,
lib/samizdat/engine/request.rb, lib/samizdat/engine/resource.rb,
lib/samizdat/engine/session.rb, lib/samizdat/engine/template.rb,
lib/samizdat/engine/view.rb,
lib/samizdat/helpers/application_helper.rb,
lib/samizdat/helpers/diff_helper.rb,
lib/samizdat/helpers/message_helper.rb,
lib/samizdat/helpers/resource_helper.rb,
lib/samizdat/models/content.rb, lib/samizdat/models/focus.rb,
lib/samizdat/models/member.rb, lib/samizdat/models/message.rb:
MVC refactoring (Apache config change required, todo: css, po,
test); passwd renamed to password (DB change required); digest()
updated for Ruby 1.8.5; diff now includes images and file links
2007-02-26 03:13 angdraug
* cgi-bin/history.rb, cgi-bin/index.rb, cgi-bin/member.rb,
cgi-bin/moderation.rb, cgi-bin/query.rb, cgi-bin/resource.rb,
doc/install.txt, lib/samizdat/cache.rb,
lib/samizdat/engine/focus.rb, lib/samizdat/engine/helpers.rb,
lib/samizdat/engine/message.rb, lib/samizdat/engine/resource.rb,
lib/samizdat/engine/session.rb, lib/samizdat/engine/template.rb,
po/be.po, po/de.po, po/eo.po, po/es.po, po/fr.po, po/pl.po,
po/ru.po, po/ua.po, test/tc_robot.rb, test/ts_samizdat.rb:
Resource refactored: render*() replaced by polymorphic resource
controllers; smarter locking in Samizdat::Cache to make
fetch_or_add() re-enterable; option to show hidden messages
removed; set defaults for environment variables required by the
tests
2007-02-23 23:46 boud
* data/samizdat/config.yaml: (es) front page default header -
(headers in be/ru/eo/ua still missing)
2007-02-18 17:57 angdraug
* TODO, cgi-bin/history.rb, data/samizdat/xhtml.yaml,
doc/install.txt, lib/samizdat/engine/message.rb,
lib/samizdat/engine/template.rb, po/be.po, po/ru.po:
documentation update (new bug, recommended modules); inherit
hidden status from current message version, reflect hidden status
in a diff; fix absolute image paths starting with //;
ASCII-encode ellipsis (Boud); fix to let rgettext pick up Front
Page, Belarusian and Russian translations updated
2007-02-14 00:51 boud
* po/: es.po, fr.po, pl.po: pl.po - several small corrections;
pl+es+fr Front Page in template.rb
2007-02-12 20:21 boud
* po/pl.po: minor grammatical corrections in pl.po
2007-02-02 21:52 angdraug
* cgi-bin/resource.rb, lib/samizdat/engine/focus.rb,
lib/samizdat/engine/message.rb, lib/samizdat/engine/resource.rb,
lib/samizdat/engine/template.rb: revert Focus#rating=
refactoring, it requires too many fixes
2007-02-02 20:33 angdraug
* TODO, cgi-bin/foci.rb, cgi-bin/history.rb, cgi-bin/index.rb,
cgi-bin/item.rb, cgi-bin/login.rb, cgi-bin/logout.rb,
cgi-bin/member.rb, cgi-bin/message.rb, cgi-bin/moderation.rb,
cgi-bin/query.rb, cgi-bin/resource.rb,
data/samizdat/css/common.css, doc/translations.txt,
lib/samizdat/storage.rb, lib/samizdat/engine/deployment.rb,
lib/samizdat/engine/focus.rb, lib/samizdat/engine/message.rb,
lib/samizdat/engine/resource.rb, lib/samizdat/engine/session.rb,
lib/samizdat/engine/template.rb, po/be.po, po/ru.po: apply
line-through style to hidden messages; Focus#rating= refactored
to Focus#vote(); request() renamed to each_request();
documentation and copyrights updated
2007-02-01 23:49 boud
* data/samizdat/config.yaml: config.yaml header section in (de)
2007-01-31 22:23 boud
* data/samizdat/config.yaml, doc/translations.txt: example
site-specific header l10n: config.yaml: +fr, +pl, request in
translations.txt
2007-01-31 20:03 boud
* data/samizdat/defaults.yaml, po/de.po, po/es.po, po/fr.po,
po/pl.po: adding German translation; putting Project-Id-Version
to 0.6.0 in de/es/fr/pl
2007-01-28 00:23 boud
* po/es.po: fixed minor formatting errors in es.po - this time
msgfmt should work :)
2007-01-27 16:18 boud
* data/samizdat/defaults.yaml: add castellano (es) to language list
in defaults.yaml config file
2007-01-27 04:34 boud
* po/es.po: castellano (a.k.a. espanol or spanish) - thanks to a
local spanish-speaker :)
2007-01-27 04:26 boud
* po/: fr.po, pl.po: translations for "replace" instead of
"displace"; "full name" better translated
2007-01-20 12:30 angdraug
* TODO, data/samizdat/database/create-mysql.sql,
data/samizdat/database/create-sqlite3.sql,
data/samizdat/database/grant-mysql.sql,
data/samizdat/database/triggers-mysql.sql,
lib/samizdat/storage.rb, lib/samizdat/engine/deployment.rb,
lib/samizdat/engine/message.rb, lib/samizdat/engine/session.rb,
lib/samizdat/engine/template.rb, po/be.po, po/eo.po, po/fr.po,
po/pl.po, po/ru.po, po/ua.po: added MySQL and improved SQLite3
support (documentation will follow), minor deployment fixes,
renamed 'displace' to 'replace' as suggested by Boud, posting
comment to a long thread now redirects to the right page, major
improvement to error reporting: full stack trace is written to
error log and referred by a hash supplied to the user
2006-12-07 21:40 angdraug
* doc/examples/apache.conf, lib/samizdat/engine/message.rb,
lib/samizdat/engine/resource.rb, lib/samizdat/engine/template.rb:
refactoring: new MessageContent class (still more refactoring
needed for things like RSS import); sort replies by id, to avoid
confusion when comments are edited; send Apache error.log to
/dev/null as a safe default for IP address logging prevention
2006-12-04 16:35 angdraug
* data/samizdat/xhtml.yaml: Sanitize: allow ':' in URI (RFC 2396)
if it's absolute and with legit scheme
2006-11-29 17:38 angdraug
* bin/samizdat-drb-server, cgi-bin/foci.rb, cgi-bin/history.rb,
cgi-bin/index.rb, cgi-bin/login.rb, cgi-bin/member.rb,
cgi-bin/message.rb, cgi-bin/query.rb, cgi-bin/resource.rb,
lib/samizdat/cache.rb, lib/samizdat/sanitize.rb,
lib/samizdat/storage.rb, lib/samizdat/engine/focus.rb,
lib/samizdat/engine/resource.rb, lib/samizdat/engine/session.rb,
lib/samizdat/engine/template.rb, test/tc_robot.rb,
test/tc_storage.rb, test/tc_template.rb, test/tc_version.rb,
test/util.rb: updated copyrights
2006-11-29 17:16 angdraug
* lib/samizdat/engine.rb, test/tc_version.rb: SAMIZDAT_VERSION =
'0.6.0'
2006-11-29 16:07 angdraug
* NEWS, TODO, doc/design-goals.txt,
lib/samizdat/engine/template.rb, po/fr.po: auto-url in default
message format; French translation update; documentation update
2006-11-28 17:35 angdraug
* README, TODO, doc/concepts.txt, doc/design-goals.txt,
doc/notes.txt: documentation update
2006-11-28 14:54 angdraug
* TODO, test/tc_robot.rb, test/tc_template.rb: unit tests updated,
functional test now works with focuses
2006-11-27 08:28 angdraug
* bin/samizdat-create-database, doc/man/samizdat-create-database.1,
doc/man/samizdat-drb-server.1, doc/man/update-indymedia-cities.1:
written minimal manpages for samizdat-drb-server,
samizdat-create-database, and update-indymedia-cities, print
usage updated for samizdat-create-database
2006-11-26 15:46 angdraug
* bin/cities.rb, bin/update-indymedia-cities, cgi-bin/query.rb,
data/samizdat/defaults.yaml, lib/samizdat/storage.rb, po/fr.po,
po/pl.po: login timeout increased to 4 hours; cities.rb renamed
to update-indymedia-cities; fixed query UI bug with unsubstituted
literals
2006-11-16 04:02 angdraug
* TODO, bin/cities.rb, cgi-bin/history.rb, cgi-bin/index.rb,
cgi-bin/query.rb, cgi-bin/resource.rb, doc/translations.txt,
lib/samizdat/engine/template.rb, po/be.po, po/ru.po: fixed
ampersand in URLs again, added cities.rb utility script,
instructions on translations added, Belarusian and Russian
translations updated
2006-11-14 23:49 angdraug
* TODO, doc/install.txt: documentation update
2006-10-29 10:58 angdraug
* cgi-bin/index.rb, data/samizdat/defaults.yaml,
data/samizdat/css/default.css, data/samizdat/css/indy.css,
data/samizdat/css/savannah.css, data/samizdat/css/sky.css,
lib/samizdat/engine/deployment.rb,
lib/samizdat/engine/message.rb, lib/samizdat/engine/session.rb,
lib/samizdat/engine/template.rb: HTML diff, view source for
Textile and HTML; PublishMessage cleanup; CGIEnvironment renamed
to RequestSingleton and expanded to keep host and site name
globals; limit:cache option removed
2006-10-24 00:33 angdraug
* cgi-bin/index.rb: add uri_prefix to fragment cache key (atm
relevant only for index.rb)
2006-10-23 21:03 angdraug
* lib/samizdat/: sanitize.rb, engine/message.rb: fix for memory
leak in Tidy.path=(), introduced Message.regenerate_html(id) to
regenerate only one message
2006-10-08 14:31 angdraug
* AUTHORS, cgi-bin/message.rb, data/samizdat/sites.yaml,
lib/samizdat/engine.rb, lib/samizdat/engine/session.rb, po/fr.po:
GetText and sites.yaml fixes by Boud, requires cleanup
2006-09-24 13:34 angdraug
* AUTHORS, TODO, cgi-bin/index.rb, data/samizdat/config.yaml,
data/samizdat/defaults.yaml, data/samizdat/sites.yaml,
lib/samizdat/engine.rb, lib/samizdat/engine/deployment.rb,
lib/samizdat/engine/message.rb, lib/samizdat/engine/session.rb,
lib/samizdat/engine/template.rb, po/fr.po: deployment fixes
(upload should now work everywhere), upload_enabled? moved to
PublishMessage, SiteConfig#content_location introduced,
documentation updated, default message size limit increased to
1M, French translation and version-independent GetText wrapper
(thanks Boud)
2006-09-20 21:24 angdraug
* README, bin/samizdat-create-database, cgi-bin/login.rb,
cgi-bin/member.rb, data/samizdat/config.yaml,
data/samizdat/defaults.yaml, doc/install.txt,
doc/examples/apache.conf, lib/samizdat/engine/deployment.rb,
lib/samizdat/engine/message.rb, lib/samizdat/engine/session.rb,
test/tc_robot.rb, test/tc_template.rb, test/util.rb: deployment
cleanup: shorter default login timouts for tighter security,
SiteConfig#email_enabled? and #upload_enabled? checks, restored
support for single-directory installation, updated documentation
and unit tests
2006-09-16 21:19 angdraug
* doc/examples/apache.conf: move cgi-bin scripts to Debian policy
compliant location under /usr/share
2006-09-16 18:45 angdraug
* bin/samizdat-create-database,
data/samizdat/database/create-pgsql.sql,
data/samizdat/database/create-sqlite3.sql,
data/samizdat/database/create.sql,
data/samizdat/database/grant-pgsql.sql,
data/samizdat/database/triggers-pgsql.sql,
data/samizdat/database/triggers-sqlite3.sql,
data/samizdat/database/triggers.sql, lib/samizdat/engine.rb,
lib/samizdat/storage.rb, lib/samizdat/engine/deployment.rb,
lib/samizdat/engine/message.rb, lib/samizdat/engine/resource.rb,
lib/samizdat/engine/session.rb, test/tc_robot.rb: database
generation script; experimental SQLite3 support
2006-09-14 12:26 angdraug
* data/samizdat/xhtml.yaml, lib/samizdat/engine.rb,
lib/samizdat/engine/deployment.rb,
lib/samizdat/engine/message.rb, lib/samizdat/engine/session.rb:
now works with new libgettext-ruby; cross-site images in
xhtml.yaml (replace path with uri to unblock); add environment
variables allowing to access Samiz dat classes from command line
2006-09-13 01:35 angdraug
* bin/samizdat-site, bin/samizdat-webrick-server, cgi-bin/index.rb,
data/samizdat/config.yaml, data/samizdat/defaults.yaml,
data/samizdat/rdf.yaml, data/samizdat/sites.yaml,
data/samizdat/xhtml.yaml, data/samizdat/css/sky.css,
doc/examples/apache.conf, lib/samizdat/engine.rb,
lib/samizdat/engine/deployment.rb,
lib/samizdat/engine/exceptions.rb,
lib/samizdat/engine/helpers.rb, lib/samizdat/engine/resource.rb,
lib/samizdat/engine/session.rb, lib/samizdat/engine/template.rb,
po/eo.po, test/tc_robot.rb, test/tc_storage.rb,
test/tc_template.rb: deployment refactored: get configuration
from /etc/samizdat/* instead of environment variables; common
options loaded from shared config file; FastCGI now works
correctly with multi-site setups; configs now allow to use method
names instead of hash keys; universal example of Apache site
config provided; first attempt to update for new libgettext-ruby;
Esperanto translation updated; unit and functional tests updated;
new theme from Indymedia Ukraine
2006-04-17 12:54 angdraug
* cgi-bin/index.rb, lib/samizdat/cache.rb, lib/samizdat/engine.rb,
lib/samizdat/engine/message.rb, po/be.po, po/eo.po, po/pl.po,
po/ru.po, po/ua.po: fixed cross-site config cache corruption,
selective flush implemented, only cache of the current site is
flushed on updates, added 'All Replies' to Links section on the
front page, updated translations
2006-04-16 11:14 angdraug
* bin/samizdat-drb-server, lib/samizdat/cache.rb,
lib/samizdat/engine.rb, lib/samizdat/storage.rb,
lib/samizdat/engine/session.rb, lib/samizdat/engine/template.rb:
many improvements in code safety and security: synchronized
Cache, $SAFE = 1 in samizdat-drb-server, more HTML escaping;
fixed RSS/DRbUnknown bug by rearranging requires
2006-04-09 19:02 angdraug
* cgi-bin/resource.rb: fixed: previous uriref focus fix broke
normal focuses
2006-04-07 10:01 angdraug
* cgi-bin/resource.rb, doc/install.txt,
lib/samizdat/engine/focus.rb, lib/samizdat/engine/message.rb,
lib/samizdat/engine/template.rb: fixed NULL new message language
bug; fixed virtual uriref focus again; stricter focus uriref
validation; links update from Kirill Shutemov
2006-02-28 15:36 angdraug
* cgi-bin/index.rb, cgi-bin/resource.rb,
lib/samizdat/engine/focus.rb, lib/samizdat/engine/message.rb,
lib/samizdat/engine/session.rb, lib/samizdat/engine/template.rb,
po/be.po, po/eo.po, po/pl.po, po/ru.po, po/ua.po: butchered the
l10n in the code to work with rgettext, updated and cleaned up
all translations with rgettext, updated Belarusian and Russian
translations
2006-02-21 17:40 angdraug
* cgi-bin/resource.rb: fixed brown paper bug with 'add new focus'
menu
2006-02-21 15:55 angdraug
* .cvsignore: unmess changelog
2006-02-21 15:46 angdraug
* TODO, cgi-bin/foci.rb, cgi-bin/history.rb, cgi-bin/index.rb,
cgi-bin/member.rb, cgi-bin/message.rb, cgi-bin/pingback.rb,
cgi-bin/query.rb, cgi-bin/resource.rb, data/samizdat/config.yaml,
doc/install.txt, lib/samizdat/engine.rb,
lib/samizdat/sanitize.rb, lib/samizdat/storage.rb,
lib/samizdat/engine/focus.rb, lib/samizdat/engine/message.rb,
lib/samizdat/engine/resource.rb, lib/samizdat/engine/template.rb,
test/tc_robot.rb, test/tc_template.rb: new focus management
interface, massive RDF update (parametrized queries, RDF#assert
returns ids of new resources and should be wrapped inside
transaction, PRESET NS is optional), better input validation
(thanks Alster), Pingback support removed, intuitive page titles,
modularized moderation logging, restored replies to focuses until
Translations are done via dct:isPartOf
2006-02-21 11:43 angdraug
* .cvsignore, doc/install.txt: typo in install.txt, directory
structure housekeeping
2006-01-17 12:23 angdraug
* lib/samizdat/sanitize.rb: make previous Sanitize fix compatible
with older REXML versions
2006-01-17 11:53 angdraug
* data/samizdat/xhtml.yaml, lib/samizdat/sanitize.rb,
lib/samizdat/engine/template.rb: 3 XSS vulnerabilities fixed:
regexp, non-whitelisted tag removal, HTML-escaping
message title
2006-01-11 11:51 mend0za
* .cvsignore: add tags file
2006-01-09 02:01 mend0za
* doc/install.txt: Add hint for missing SetEnv directive
2006-01-09 01:39 mend0za
* .cvsignore: move sample installation in single place
2006-01-09 00:59 mend0za
* .cvsignore: add some ignored files for apache tuning over CVS
working directory
2005-12-19 14:03 angdraug
* cgi-bin/index.rb, data/samizdat/css/default.css,
data/samizdat/css/indy.css, data/samizdat/css/savannah.css,
doc/install.txt, lib/samizdat/engine/message.rb,
lib/samizdat/engine/resource.rb, lib/samizdat/engine/template.rb,
po/be.po, po/pl.po, po/ru.po: set language and format in edit
form from previous message version; place buttons after comments,
don't offer to post replies to focuses; count only positively
rated relations in Message#nreplies; moderation log link on the
front page; Polish translation updated; installation manual
updated
2005-12-02 15:28 angdraug
* po/pl.po: typo in Polish translation
2005-12-02 11:14 angdraug
* AUTHORS, data/samizdat/config.yaml, po/pl.po: Polish translation
added
2005-11-10 19:32 angdraug
* lib/samizdat/sanitize.rb, lib/samizdat/engine/focus.rb,
test/tc_robot.rb, test/tc_storage.rb, test/tc_template.rb,
test/tc_version.rb, test/util.rb: updated unit tests
2005-11-10 19:28 angdraug
* cgi-bin/index.rb, cgi-bin/query.rb, cgi-bin/resource.rb,
lib/samizdat/engine/resource.rb: RSS feed of RDF query results
implemented; show just messages when paginating replies, latest
messages or query results
2005-11-10 19:26 angdraug
* lib/samizdat/cache.rb, test/tc_cache.rb, test/ts_samizdat.rb:
better fix for Cache issues; unit test for Cache added
2005-11-10 19:24 angdraug
* lib/samizdat/engine/template.rb: updated links to GPL and to
Samizdat engine site in page footer; replaced absolute xhtml path
in Template.format_inline_content with a lookup
2005-11-10 19:22 angdraug
* po/: be.po, ru.po, ua.po: Belarusian, Russian, Ukrainian
translations updated
2005-11-10 19:18 angdraug
* AUTHORS, README, doc/design-goals.txt, doc/install.txt: minor
documentation update
2005-10-27 18:38 angdraug
* COPYING: FSF address is changed in GPL
2005-10-27 18:21 angdraug
* AUTHORS, NEWS, README, TODO, config.yaml, foci.rb, history.rb,
index.rb, item.rb, login.rb, logout.rb, member.rb, message.rb,
moderation.rb, pingback.rb, query.rb, resource.rb, samizdat.rb,
setup.rb, xhtml.yaml, bin/samizdat-drb-server, bin/samizdat-site,
bin/samizdat-webrick-server, cgi-bin/foci.rb, cgi-bin/history.rb,
cgi-bin/index.rb, cgi-bin/item.rb, cgi-bin/login.rb,
cgi-bin/logout.rb, cgi-bin/member.rb, cgi-bin/message.rb,
cgi-bin/moderation.rb, cgi-bin/pingback.rb, cgi-bin/query.rb,
cgi-bin/resource.rb, data/samizdat/config.yaml,
data/samizdat/xhtml.yaml, data/samizdat/css/common.css,
data/samizdat/css/default.css, data/samizdat/css/indy.css,
data/samizdat/css/savannah.css,
data/samizdat/database/create.sql,
data/samizdat/database/triggers.sql, data/samizdat/rdf/focus.n3,
data/samizdat/rdf/items.n3, data/samizdat/rdf/schema.n3,
doc/about.txt, doc/concepts.txt, doc/design-goals.txt,
doc/install.txt, doc/notes.txt, lib/samizdat/cache.rb,
lib/samizdat/engine.rb, lib/samizdat/sanitize.rb,
lib/samizdat/storage.rb, lib/samizdat/engine/focus.rb,
lib/samizdat/engine/message.rb, lib/samizdat/engine/resource.rb,
lib/samizdat/engine/session.rb, lib/samizdat/engine/template.rb,
po/be.po, po/eo.po, po/ru.po, po/ua.po: update from 5-month long
development in private Monotone tree. source code restructured
for Minero Aoki's setup.rb, Cache, Sanitize, and Storage are
separated from core engine modules, samizdat-drb-server added to
the tree; hidden messages are implemented; CSS validation is
implemented; major documentation update, added verbose comments
to config.yaml (cookie_prefix option moved to site section along
the way); Ukrainian translation added, other translations
updated; minor fixes: Cache entry deletion fixed, NOT in RDF
literal expressions fixed, removed from RedCloth markup,
flush cache when member full name is changed, Sanitized updated
for Ruby Tidy 1.1.x, several RSS improvements, html_short cache
corruption fixed
2005-05-23 13:32 angdraug
* po/: be.po, eo.po, ru.po: fixed s:openForAll and added url
parsing to reparent
2005-05-23 09:51 angdraug
* config.yaml, index.rb, pingback.rb, query.rb, resource.rb,
samizdat.rb, doc/install.txt: multi-site configuration fixes:
SAMIZDAT_CONFIG replaced with SAMIZDAT_BASE, full path to
xhtml.yaml is used, honor HTTP_X_FORWARDED_HOST when set, cleared
out cross-site singletons and globals, optional dRuby
cross-process cache; Cache, Sanitize, and Storage moved to
Samizdat namespace and untied from Samizdat core; minor fixes and
improvements
2005-05-16 10:06 angdraug
* config.yaml, history.rb, index.rb, member.rb, message.rb,
moderation.rb, resource.rb, samizdat.rb, doc/install.txt,
po/be.po, po/eo.po, po/ru.po, test/tc_robot.rb,
test/tc_template.rb: message handling severely re-organized;
database cache of sanitized html rendition of inline messages is
implemented; message reparent implemented; moved language
selection to the front page; moderation log rendering
implemented; static header and footer are now translateable; new
SamizdatRDF#get_property method; Pingback disabled by default;
many rendering fixes and code clean-ups
2005-05-05 14:35 angdraug
* xhtml.yaml: add rss link to html head where applicable
2005-05-05 14:35 angdraug
* message.rb: structured message publishing into Message class in
message.rb
2005-04-28 14:54 angdraug
* po/eo.po: Esperanto translation update from Antono Vasiljev
2005-04-28 14:54 angdraug
* config.yaml: add .torrent to supported formats
2005-04-28 14:53 angdraug
* message.rb: message parameter validation is refactored into
methods; migrated from ftools to FileUtils in upload handling
2005-04-28 14:52 angdraug
* test/tc_template.rb: updated unit test for new rendering
2005-04-28 14:51 angdraug
* po/: be.po, ru.po: reparent button placeholder
2005-04-28 14:47 angdraug
* doc/: about.txt, design-goals.txt: added feature list to
about.txt, updated design-goals.txt
2005-03-30 09:51 angdraug
* config.yaml, index.rb: only include message in features if its
rating exceeds or equals features_threshold
2005-03-28 11:52 angdraug
* foci.rb, history.rb, index.rb, item.rb, login.rb, logout.rb,
member.rb, message.rb, pingback.rb, query.rb, resource.rb,
samizdat.rb, test/tc_robot.rb, test/tc_storage.rb,
test/tc_template.rb, test/tc_version.rb, test/ts_samizdat.rb,
test/util.rb: coding style updated to Pickaxe2 recommendations;
include dc:date in RSS, display links to RSS feeds; associate
labels with form fields via 'for' attribute; show link to full
content in truncated messages; mark focus messages in short and
list modes; cache one front page per accept_language combination;
refactored focus_head and Session#accept_language; take config
file name from SAMIZDAT_CONFIG environment variable if set
2005-03-28 11:44 angdraug
* doc/install.txt: recommend disabling cache when running tests
2005-02-21 16:38 angdraug
* index.rb: do Apache's job and include files in static headers
2005-02-21 16:33 angdraug
* config.yaml: add ogg, mp3, mpeg, avi, and wmv to the list of
supported file formats
2005-02-17 17:11 angdraug
* config.yaml, member.rb: styles configuration changed from hash to
list, first style in the list is the default
2005-02-17 17:09 angdraug
* index.rb: get rid of duplicates in features query
2005-02-17 17:05 angdraug
* doc/install.txt: fixed Ruby/Tidy setup instructions
2005-02-15 13:48 angdraug
* foci.rb, history.rb, index.rb, item.rb, login.rb, logout.rb,
member.rb, message.rb, pingback.rb, query.rb, resource.rb,
samizdat.rb, po/be.po, po/ru.po, test/tc_robot.rb,
test/tc_storage.rb, test/tc_template.rb, test/tc_version.rb,
test/ts_samizdat.rb, test/util.rb: copyright notices updated to
year 2005
2005-02-15 13:37 angdraug
* foci.rb, index.rb, message.rb, resource.rb, samizdat.rb,
po/be.po, po/eo.po, po/ru.po, test/tc_robot.rb: new three-column
front-page layout, old "main focuses" moved to foci.rb; language
tags and translations, focus:Translation introduced; RSS
syndication of front page features and focus updates;
configurable site icon; Savannah style by Vladimir Shahov
enabled; query result caching and rendered resources; "redirect
to parent" usability tweak; many rendering clean-ups
2005-02-15 13:34 angdraug
* config.yaml: new three-column front-page layout, old "main
focuses" moved to foci.rb; language tags and translations,
focus:Translation introduced; RSS syndication of front page
features and focus updates; configurable site icon; Savannah
style by Vladimir Shahov enabled; query result caching and
rendered resources; "redirect to parent" usability tweak; many
rendering clean-ups
2005-02-11 13:31 angdraug
* test/tc_robot.rb: unit tests updated
2005-02-11 12:59 angdraug
* po/: be.po, ru.po: Russian and Belarusian translations updated
2005-02-11 12:58 angdraug
* member.rb, message.rb, query.rb: basic and advanced UI modes
introduced, some options in message publishing and search
interface are hidden in basic mode
2005-02-11 12:54 angdraug
* doc/install.txt: updated documentation on Tidy dependence
2004-12-20 15:01 angdraug
* login.rb, member.rb, message.rb, query.rb: fixed IE bug
2004-12-17 13:44 angdraug
* index.rb, member.rb, po/be.po, po/eo.po, po/ru.po: implemented
option to hide static header and footer from front page
2004-12-17 13:43 angdraug
* doc/install.txt, test/tc_robot.rb: unit tests updated
2004-12-03 17:15 angdraug
* message.rb: fixed another MSIE quirk, about PNG this time
2004-12-01 18:55 angdraug
* member.rb: fixed confirmation bug caused by guest posting
implementation
2004-11-29 10:54 angdraug
* config.yaml, index.rb, po/be.po, po/ru.po: static header and
footer, site head links clarified
2004-11-26 19:53 angdraug
* po/: be.po, ru.po: got rid of "focus" term in Russian and
Belarussian translation: real world hates perfection :(((
2004-11-26 19:35 angdraug
* po/ru.po, resource.rb, po/be.po: access control for voting is
finished
2004-11-25 16:54 angdraug
* member.rb, message.rb, po/be.po, po/eo.po, po/ru.po: anonymous
publishing and flexible access control (publishing only so far)
implemented; untaint custom locale path for mod_ruby
2004-11-25 16:51 angdraug
* doc/install.txt: stressed significance of order of pg_hba.conf
lines in install.txt
2004-11-24 14:19 angdraug
* config.yaml, member.rb: preparation for anonymous posting and
flexible access control
2004-11-23 14:03 angdraug
* history.rb, index.rb, item.rb, login.rb, logout.rb, member.rb,
message.rb, pingback.rb, query.rb, resource.rb, samizdat.rb,
test/tc_robot.rb, test/tc_storage.rb, test/tc_template.rb,
test/tc_version.rb, test/ts_samizdat.rb, test/util.rb: added vim
spacing instructions to all .rb files
2004-11-23 13:32 angdraug
* config.yaml: added text/html message format, renamed
application/x-textile to text/textile, added alternative filter
parameter to Sanitize
2004-11-15 16:47 angdraug
* test/tc_version.rb: unit tests updated
2004-11-15 16:26 angdraug
* samizdat.rb, xhtml.yaml: fixed escaping of quotes in XML
attributes, updated version to 0.5.5
2004-11-15 16:24 angdraug
* index.rb: fixed XHTML on the front page
2004-11-15 16:23 angdraug
* config.yaml, doc/install.txt, po/be.po, po/eo.po, po/ru.po:
Esperanto translation added, other translations updated,
documentation actualized
2004-11-12 14:13 angdraug
* message.rb: bugfixes: first upload lookup_uri, render_related for
empty focus
2004-11-08 15:29 angdraug
* xhtml.yaml: HTML validation implemented
2004-10-22 11:20 angdraug
* doc/notes.txt: Samizdat 0.5.4 release notes
2004-10-22 11:18 angdraug
* index.rb: XHTML fixed on the front page
2004-10-21 16:26 angdraug
* test/tc_template.rb: updated unit tests
2004-10-21 16:03 angdraug
* config.yaml, po/be.po, po/ru.po: make database connection
configurable to allow multiple Samizdat instances on the same
host; documentation update, translations update
2004-10-14 10:27 angdraug
* config.yaml, index.rb, member.rb, message.rb: stricter DB table
permissions, show description in message preview, theme selection
implemented
2004-10-11 10:39 angdraug
* config.yaml, message.rb, samizdat.rb, po/be.po, po/ru.po: string
length limits implemented for titles and short messages;
translations update
2004-10-04 13:13 angdraug
* resource.rb: fixed typo that broke Pingback
2004-10-04 12:47 angdraug
* doc/notes.txt: minor roadmap update
2004-10-04 12:38 angdraug
* config.yaml, history.rb, index.rb, query.rb, resource.rb,
po/be.po, po/ru.po: new frontpage layout, Belarusian translation
added, about link added, rendering fixes, crash with disabled
Pingback fixed
2004-10-01 12:15 angdraug
* resource.rb: fixed crash with disabled Pingback
2004-10-01 11:18 angdraug
* member.rb, message.rb: moderation log implemented
2004-09-27 16:41 angdraug
* message.rb: display RedCloth crashes as RuntimeError; minor code
cleanups
2004-09-27 09:47 angdraug
* member.rb, message.rb, samizdat.rb, po/ru.po,
test/tc_template.rb, test/tc_version.rb: moderation implemented
(take over message, displace message, block account); version
bumped to 0.5.4
2004-09-24 15:33 angdraug
* doc/about.txt: papers and link to boblycat added
2004-09-24 15:11 angdraug
* config.yaml, member.rb, po/ru.po: moderation: facility settings,
takeover and displacement buttons
2004-09-24 15:09 angdraug
* doc/notes.txt: removed all news that are not related to Samizdat
releases
2004-09-20 15:54 angdraug
* message.rb, po/ru.po: closed description recursion bug
2004-09-20 14:33 angdraug
* doc/notes.txt: Samizdat 0.5.3 release notes
2004-09-20 14:30 angdraug
* member.rb: global patterns, proper untaint of command line for
sendmail
2004-09-20 13:20 angdraug
* config.yaml, history.rb, message.rb, resource.rb, po/ru.po,
test/tc_robot.rb, test/tc_template.rb: dc:description
implemented, added date in vote display, destination anchors for
messages, link to settings even when not logged in
2004-09-20 13:20 angdraug
* doc/papers/: collreif.tex, rel-rdf.tex: added papers source to
documentation
2004-09-14 12:24 angdraug
* member.rb, samizdat.rb, doc/install.txt, doc/notes.txt, po/ru.po,
test/tc_robot.rb, test/tc_version.rb: email confirmation using
preferences, account management refactored, uniform digest
function, bugfixes, documentation update
2004-07-14 10:18 angdraug
* config.yaml, login.rb, member.rb, message.rb, samizdat.rb,
doc/install.txt, doc/notes.txt, po/ru.po: email interface to
account management, lost password recovery, l10n update,
documentation update
2004-07-05 11:01 angdraug
* doc/notes.txt: Samizdat 0.5.2 release notes
2004-07-05 10:23 angdraug
* history.rb, index.rb, login.rb, member.rb, message.rb,
resource.rb, doc/concepts.txt, doc/install.txt, doc/notes.txt,
po/ru.po, test/tc_robot.rb, test/tc_template.rb: major UI
reorganization for better usability; documentation update
2004-07-02 10:10 angdraug
* pingback.rb: older versions now can't be pingbacked and won't
appear in member's latest messages
2004-07-01 21:17 angdraug
* history.rb: implemented difference engine for history of changes,
added more input validation cases along the way
2004-07-01 21:15 angdraug
* test/tc_template.rb: updated tests for site name variable
2004-07-01 21:13 angdraug
* message.rb: several input validation improvements
2004-06-28 15:48 angdraug
* doc/notes.txt: another update to roadmap: added account
management to 0.6.0
2004-06-28 09:39 angdraug
* config.yaml, index.rb, member.rb, message.rb, resource.rb,
doc/design-goals.txt, po/ru.po: Big Monday Checkin 3.
New features: history of changes, s:openForAll message property,
new focus representation, site logo setting in config.yaml.
Minor improvements: show number of replies in message info, old
versions now can't be edited or commented, form template supports
disabled fields, show language box on account settings page,
textarea size increased, and some bugfixes.
Documentation: updated design goal achievements.
2004-06-25 15:56 angdraug
* config.yaml, index.rb, message.rb, pingback.rb, resource.rb,
po/ru.po, test/tc_storage.rb, test/tc_template.rb: basic Wiki
functionality implemented: message versioning and Textile
hypertext format; message.rb refactored, s:thread eliminated
2004-06-25 15:51 angdraug
* doc/notes.txt: reshuffled roadmap to postpone RDF coolness in
favor of features
2004-06-23 12:20 angdraug
* doc/: design-goals.txt, install.txt, notes.txt: documentation
update: updated design goal achievements, installation note about
FastCGI, SQLite added to roadmap, comment on unnecessary aliases
in storage
2004-04-07 16:08 angdraug
* config.yaml: default site name is Demo
2004-03-29 08:44 angdraug
* index.rb, pingback.rb, query.rb, resource.rb,
doc/rdf-storage.txt, doc/storage-impl.txt, test/tc_storage.rb,
test/tc_template.rb: RDF storage update: * SamizdatRDF is
Singleton again: instead of , internal resources
are now (local URIref) * SamizdatRDF#assert fixed to
unconditionally insert blank nodes from INSERT section *
standardized storage documentation on the 'assertion' term
2004-03-29 08:41 angdraug
* test/tc_robot.rb: pingback test implemented
2004-03-22 09:25 angdraug
* index.rb, item.rb, login.rb, logout.rb, member.rb, message.rb,
query.rb, resource.rb: FastCGI support implemented
2004-03-22 09:25 angdraug
* samizdat.rb, test/tc_version.rb: updated version to 0.5.2; read
config.yaml inside block
2004-03-22 09:23 angdraug
* doc/notes.txt: removed Webrick, added installer to 0.5.2 roadmap
2004-03-18 17:19 angdraug
* doc/notes.txt: 0.5.1 release note
2004-03-18 16:34 angdraug
* test/tc_template.rb: explicitly select 'C' locale for template
tests
2004-03-15 15:08 angdraug
* config.yaml: denormalized away Proposition table to double the
speed of front page generation
2004-03-15 15:01 angdraug
* message.rb, po/ru.po: auto-detect format of uploaded files; fixed
text/uri-list validation bug
2004-03-15 14:57 angdraug
* doc/notes.txt: detalized 5.x-6.0 roadmap
2004-03-12 15:28 angdraug
* test/: tc_robot.rb, tc_template.rb: update to Template changes,
added message rendering tests
2004-03-12 15:27 angdraug
* index.rb, member.rb, message.rb, pingback.rb, query.rb,
resource.rb: API change: message rendering is refactored into
Template#{message,message_info,message_content} and now takes
parameters in a Hash; updated to Session and SamizdatRDF API
changes; add ", page #" to title of second and other pages of
long listings; take advantage of count() in focus usage counting;
moved set_lang to index.rb; focus threads skipping bug fixed;
"Skip navigation" accessibility link and "Vote" tooltip are added
2004-03-12 15:13 angdraug
* test/tc_storage.rb: updated to latest storage.rb changes
2004-03-12 14:54 angdraug
* po/ru.po: Russian translation update
2004-03-12 14:54 angdraug
* login.rb, logout.rb: use new Session#redirect
2004-03-12 14:52 angdraug
* item.rb: throwing out some dead weight
2004-03-12 14:52 angdraug
* doc/notes.txt: storage requirements for better performance and
versioning
2004-03-12 14:48 angdraug
* doc/install.txt: Apache setup clarifications
2004-03-01 16:29 angdraug
* config.yaml, index.rb, item.rb, login.rb, logout.rb, member.rb,
message.rb, pingback.rb, query.rb, resource.rb, samizdat.rb,
doc/install.txt, doc/notes.txt, po/ru.po, test/tc_robot.rb,
test/tc_storage.rb, test/tc_template.rb, test/tc_version.rb,
test/ts_samizdat.rb, test/util.rb: Another Big Monday Checkin:
gettext l10n support is implemented, Russian translation is
added.
Other changes: cookie handling refactored; copyrights updated to
2004; file upload in plain CGI mode is fixed; resource rendering
code cleaned up.
2004-02-27 19:46 angdraug
* resource.rb: add "Recent Threads" to the focus page recent
threads box
2004-02-16 18:18 angdraug
* test/tc_robot.rb: generate timestamped test user to allow
multiple subsequent runs
2004-02-16 10:21 angdraug
* message.rb: detect image/pjpeg MIME type from MSIE; remove some
dead code (Session class now handles that
2004-02-16 10:14 angdraug
* doc/notes.txt: reflect nextVersionOf->dct:isVersionOf schema
change; notes on sub-resources
2004-02-16 10:11 angdraug
* doc/install.txt: updates from Denis Valoha: reference to
Ruby/Postgres, psql-less database setup, generalize PostgreSQL
config files location, reflect Database class relocation,
Samizdat on Windows section
2004-02-16 10:04 angdraug
* samizdat.rb, test/tc_version.rb: update version to 0.5.1; rename
Config to SamizdatConfig to avoid conflict with standard class
2004-02-16 09:53 angdraug
* resource.rb: code cleanup: don't request rating of not voting
2004-02-16 09:51 angdraug
* doc/design-goals.txt: added admin-defined quorum to Vote features
2003-12-01 13:00 angdraug
* doc/notes.txt: remove (done) labels from roadmap, as latest
released version is obvious from news section
2003-12-01 11:27 angdraug
* samizdat.rb, doc/notes.txt: Samizdat 0.5.0 is released
2003-11-19 15:12 angdraug
* message.rb, samizdat.rb: fixed location to filename translation
for content uploads to /~username style locations
2003-11-18 18:45 angdraug
* message.rb: Pingback client is now working (latest Ruby CVS +
cgi.rb multipart fix required)
2003-11-18 14:45 angdraug
* doc/: notes.txt, about.txt: demo site is available
2003-11-10 10:49 angdraug
* doc/design-goals.txt: marked finished (+) and in-progress (~)
design goals; added spam filtering and Mixmaster anon-publishing
2003-11-10 10:47 angdraug
* message.rb, pingback.rb: URI::REGEXP::URI_REF -> URI::URI_REF
2003-11-06 18:32 angdraug
* message.rb, pingback.rb, test/tc_robot.rb: replaced === with
kind_of? invocations for readability
2003-11-03 20:25 angdraug
* resource.rb: don't allow to focus resource on itself; clean-up
message content padding
2003-11-03 20:14 angdraug
* test/tc_robot.rb: mass-message stress test added
2003-11-03 20:13 angdraug
* message.rb: non-functional Pingback client
2003-11-03 20:11 angdraug
* doc/design-goals.txt: added some ideas from blog discussion on
active2-dev
2003-10-26 20:44 angdraug
* doc/notes.txt: upgrade forthcoming 0.0.5 to 0.5.0 and call it a
beta release
2003-10-26 20:44 angdraug
* focus.rb, index.rb, resource.rb: focus management implemented:
store current focus in a cookie, render table of site focuses on
front page, show related threads in focus resource page, show
current, standard, and related focuses in focus box on resource
page; more paging with nav link
2003-10-26 20:42 angdraug
* samizdat.rb: define 5 year expire timeout for permanent cookie as
#forever
2003-10-26 20:41 angdraug
* doc/install.txt: to avoid spam, only first URI in text/uri-list
should be pingbacked
2003-10-26 20:41 angdraug
* doc/concepts.txt: reflect availability of non-existent standard
focuses
2003-10-26 20:38 angdraug
* query.rb: paging with nav link
2003-10-26 20:37 angdraug
* message.rb, test/tc_robot.rb: resource list, resource table,
navigation link; message rendering clean-up; make focus name in
focus info clickable
2003-10-24 15:51 angdraug
* test/tc_robot.rb: new focus handling
2003-10-24 15:48 angdraug
* resource.rb: placeholder focus management
2003-10-24 15:48 angdraug
* config.yaml: focus cookie, s:id property
2003-10-24 15:46 angdraug
* test/tc_storage.rb: s:id universal property implemented (however,
with a redundant self-join on Resource)
2003-10-22 15:24 angdraug
* doc/notes.txt: added news item on samizdat-devel ML creation
2003-10-20 17:49 angdraug
* pingback.rb: Pingback server
2003-10-20 17:18 angdraug
* config.yaml, focus.rb, index.rb, login.rb, member.rb, message.rb,
query.rb, resource.rb, samizdat.rb, tag.rb, doc/about.txt,
doc/concepts.txt, doc/design-goals.txt, doc/install.txt,
doc/notes.txt, doc/rdf-storage.txt, doc/references.txt,
test/tc_robot.rb, test/tc_storage.rb, test/tc_template.rb: Big
Monday Checkin. Content storage rewritten again: store inline
text content in the table, write multimedia uploads to files in
content/ directory; database schema changed, Upload table
removed. Tags are renamed to Focuses (kudos to Mike McMillan and
Anton Andreasson for coinage). Pingback server implemented,
text/uri-list MIME type added to support it.
Lesser changes: detect host name for base URI from HTTP_HOST
instead of config.yaml and propagate it through session to RDF
storage; renamed Storage to SamizdatRDF and Query to SquishQuery,
reshuffled both a bit; added NOT NULL constraints to mandatory
property fields to honour new dangling blank node behaviour;
changed MIME class aliasing from should to may in concepts.txt;
added instructions on enabling PL/pgSQL; added USING PRESET NS
Squish extension; use case-insensitive substring search in
query.rb; moved vote_box() to Template; more XHTML fixes.
2003-10-17 16:12 angdraug
* test/tc_robot.rb: many XHTML fixes: Samizdat output now passes
W3C validator
2003-10-16 13:40 angdraug
* test/tc_robot.rb: major update, use REXML to parse Samizdat
output, more strict checks for HTTP error codes
2003-10-16 13:38 angdraug
* test/tc_template.rb: moved REXML utility methods to test/util.rb,
refactored parse() to return instead of yield doc.root, completed
coverage (except tag-depended templates which need to access the
database)
2003-10-16 13:37 angdraug
* test/util.rb: moved REXML utility methods to test/util.rb
2003-10-16 13:35 angdraug
* samizdat.rb: version updated
2003-10-16 13:32 angdraug
* item.rb, login.rb, logout.rb, message.rb, query.rb, tag.rb:
copyright information updated (2002-2003), code polish (multiline
bracket spacing)
2003-10-16 13:31 angdraug
* doc/notes.txt: added static publishing task
2003-10-14 18:45 angdraug
* test/tc_template.rb: use shortcut methods to extract XML elements
texts
2003-10-14 18:40 angdraug
* doc/install.txt: unit tests now use REXML to parse Samizdat
output
2003-10-14 17:51 angdraug
* doc/: install.txt, rdf-storage.txt, storage-impl.txt:
acknowledged changes to config.yaml
2003-10-14 17:41 angdraug
* config.yaml: acknowledged publishing of Samizdat RDF schema;
moved default base location from personal /~angdraug/samizdat to
a more generic http://localhost/samizdat
2003-10-13 19:07 angdraug
* query.rb: code consistency fix
2003-10-13 19:05 angdraug
* test/: tc_storage.rb, ts_samizdat.rb, tc_template.rb: more tests:
test Template with REXML, update tc_storage.rb
2003-10-13 08:43 angdraug
* query.rb: fix substring search query indentation
2003-10-13 08:42 angdraug
* query.rb, samizdat.rb, test/tc_storage.rb: expand and polish code
comments for RDoc; make unstring a Query instance method; move
login_form template code to member_box since it is no longer used
elsewhere
2003-10-13 08:30 angdraug
* tag.rb: display tags usage
2003-10-13 08:25 angdraug
* query.rb: many usability fixes: select query target, show clause
numbers, don't offer BLANK CLAUSE when limit_pattern is reached,
explanatory labels for ASC/DESC, auto-rerun query on any
modification
2003-10-13 08:17 angdraug
* samizdat.rb: SAMIZDAT_VERSION constant
2003-10-13 08:16 angdraug
* message.rb: code consistency fix
2003-10-13 08:15 angdraug
* doc/notes.txt: testing framework marked as in proress; minor
polish
2003-10-13 08:14 angdraug
* doc/install.txt: Running Tests section
2003-10-13 08:13 angdraug
* test/: tc_robot.rb, tc_storage.rb, tc_version.rb, ts_samizdat.rb:
testing framework added
2003-10-13 08:11 angdraug
* README: put reference to doc/about.txt to the obligatory README
2003-10-13 08:10 angdraug
* config.yaml: comments fixup
2003-10-07 18:03 angdraug
* doc/install.txt: add libyaml-ruby1.8 to the note about
Debian/woody; removed comment about apt_preferences
2003-10-07 14:52 angdraug
* doc/install.txt: reference to backported packages on
http://people.debian.org/~angdraug/
2003-10-06 08:30 angdraug
* member.rb, message.rb, query.rb: changed handling of submit in
forms to allow l10n of submit button texts
2003-10-04 15:38 angdraug
* tag.rb: fixed for new resource rendering
2003-10-04 15:33 angdraug
* login.rb: fixed cornercase bug with base->ns['base'] replacement
2003-10-03 18:11 angdraug
* config.yaml, index.rb, login.rb, logout.rb, member.rb,
message.rb, query.rb, resource.rb, samizdat.rb, tag.rb: proper
error reporting implemented around yield from Session#out;
resource rendering (esp. listing) seriously improved; major code
clean-up; rudimentary tag management implementation started
2003-10-03 18:04 angdraug
* doc/: design-goals.txt, notes.txt: updated development plans:
calendar, trackback, testing framework, vocabulary entailment
2003-10-03 18:01 angdraug
* doc/about.txt: expanded project description on examples of
supported activities
2003-09-11 17:02 angdraug
* query.rb: fixed bug caused by config change: switch from expanded
to prefixed urirefs
2003-09-11 17:01 angdraug
* doc/rdf-impl-report.txt: link to web archive of www-rdf-interest
mailing list
2003-09-11 10:45 angdraug
* doc/rdf-impl-report.txt: added RDF Implementation Report sent to
www-rdf-interest
2003-09-11 10:41 angdraug
* index.rb, item.rb, message.rb, query.rb, resource.rb,
samizdat.rb: reflect changes in config.yaml; initiate GC in
Session before exit; detect undefined namespace in Query; cache
internal property map with expanded namespaces in Storage; minor
code clean-ups
2003-09-11 10:40 angdraug
* doc/: concepts.txt, design-goals.txt, notes.txt, rdf-storage.txt:
Major documentation and schema update: - "tag" property replaced
with "dc::relation"; - "friend" property removed in favor of
relating members to tags, "Friend" tag added; - private
messages removed; - material item exchange split into separate
namespace; - reflected the split of text messages into default
and verbatim, removal of vote comments, and implementation of
assumed reification for external properties and subjects; -
updated Design Goals priorities on advanced calendar (down) and
member grouping (up); - updated terminology throughout the
documentation
2003-09-11 10:39 angdraug
* config.yaml: major config dust-up: reorganized and lowercased
keys; added formats, namespaces, and input size limit; urirefs
are abbreviated using namespaces
2003-09-08 09:20 angdraug
* index.rb, item.rb, login.rb, logout.rb, member.rb, message.rb,
query.rb, resource.rb, samizdat.rb, tag.rb: CGI and Template are
consolidated under Session; input size limit implemented; on
message confirm uploader id is checked; "%" substring search
fixed; "%" -> "%{}"; template XHTML fix
2003-09-08 08:39 angdraug
* doc/concepts.txt: mime -> MIME
2003-09-08 08:17 angdraug
* doc/: about.txt, notes.txt, references.txt: RDF Implementation
Report added; notes and references are polished
2003-09-01 16:46 angdraug
* doc/: about.txt, notes.txt: added News section to notes.txt and
retitled it to "News and Roadmap"
2003-09-01 14:19 angdraug
* message.rb, query.rb, resource.rb: multimedia messages and query
publishing is complete
2003-09-01 14:11 angdraug
* doc/notes.txt: removed outdated Dublin Core and Active2 items,
added storage todo on blob literals
2003-09-01 14:08 angdraug
* samizdat.rb: reordered requires
2003-08-23 14:29 angdraug
* doc/install.txt: enable PL/pgSQL in PostgreSQL and install
StringIO from Ruby Shim for Ruby 1.6
2003-08-23 14:18 angdraug
* item.rb, login.rb, member.rb, query.rb, resource.rb: minor code
style cleanup
2003-08-23 14:17 angdraug
* message.rb, samizdat.rb: file upload finished: requires StringIO
from Ruby 1.8 or Ruby Shim
2003-08-20 17:51 angdraug
* samizdat.rb: workaround for yaml.rb/StringIO#binmode problem
2003-08-18 09:51 angdraug
* config.yaml: removed vote comment
2003-08-18 09:43 angdraug
* message.rb: message format wasn't quite complete: forgot to add
it in couple more places
2003-08-18 09:22 angdraug
* message.rb: added message dc:format (MIME type) property support
(file upload doesn't work due to what seems to be a bug in
cgi.rb); some naming consistency fixes (render format->mode;
message body->content)
2003-08-18 09:18 angdraug
* member.rb: don't allow duplicate full names; use passwd1 field
name in account settings to fool browsers that remember user
passwords and produce inconvenient password mismatch
2003-08-18 09:14 angdraug
* doc/notes.txt: updated storage tasks
2003-08-18 09:08 angdraug
* doc/: euruko2003_samizdat.xml, oscom3_samizdat.xml,
slides/euruko2003_samizdat.xml, slides/oscom3_samizdat.xml: moved
slides into separate directory
2003-08-12 14:27 angdraug
* doc/notes.txt: minor error
2003-08-08 15:04 angdraug
* doc/notes.txt: version 3.0.0 is done
2003-08-08 15:03 angdraug
* query.rb: improved help messages
2003-08-08 12:29 angdraug
* query.rb: sort property labels in select; NEW CLAUSE -> BLANK
CLAUSE
2003-08-08 12:19 angdraug
* index.rb, item.rb, member.rb, message.rb, query.rb, resource.rb:
always use UTF-8 encoding
2003-08-08 12:17 angdraug
* tag.rb: placeholder to give meaningful error message until tag
management is implemented
2003-08-06 19:14 angdraug
* query.rb: finished namespace management in query construction UI;
added NEW CLAUSE to query pattern form
2003-08-05 10:03 angdraug
* doc/install.txt: rewritten Apache configuration instructions to
set everything from .htaccess instead of httpd.conf
2003-08-05 08:05 angdraug
* doc/references.txt: updated reference to DQL
2003-08-05 08:04 angdraug
* doc/notes.txt: storage task: parametrized queries
2003-08-05 08:02 angdraug
* query.rb: Update button now works; reorganized form parameters
processing; minor construction UI enhancements
2003-08-05 08:01 angdraug
* doc/rdf-storage.txt: ORDER BY can include ASC or DESC order
direction
2003-08-01 19:15 angdraug
* doc/notes.txt: added aggregation and material item exchange to
release roadmap
2003-07-30 09:45 angdraug
* index.rb, member.rb, message.rb, query.rb: query construction UI:
form rendering refactored, query construction form is rendered,
but not yet updated; resource rendering improvements; in RDF
storage, query parsing and translation is separated to Query
class
2003-07-30 09:38 angdraug
* doc/: notes.txt, rdf-storage.txt: cleaned up terminology in
Squish section descriptions (needs yet more syncronization with
DAML Query Language)
2003-07-14 19:17 angdraug
* samizdat.rb: minor changes
2003-07-14 19:16 angdraug
* resource.rb: tag handling is refactored
2003-07-14 19:14 angdraug
* query.rb: report no matching resources
2003-07-14 19:13 angdraug
* doc/: install.txt, notes.txt, rdf-storage.txt: documentation
update
2003-07-14 19:12 angdraug
* config.yaml: Site Name parameter introduced; tags are moved to a
separate namespace
2003-07-14 14:06 angdraug
* query.rb: fixed bug with displaying non-unstringed query parts
2003-07-14 10:02 angdraug
* member.rb: fix stupid bug in session handling
2003-07-14 07:10 angdraug
* index.rb, item.rb, login.rb, logout.rb, member.rb, message.rb,
query.rb, resource.rb: queries updated to Dublin Core
integration; access to utility classes is reorganized; fetch_many
is used to reduce size of transfer from database; resource
rendering is separated into a class, search result display is
enhanced
2003-07-14 07:05 angdraug
* config.yaml: Dublin Core integration; tags namespace; page
lengths and query pattern limits introduced
2003-07-14 07:00 angdraug
* samizdat.rb: access to utility classes is reorganized
2003-07-14 06:56 angdraug
* doc/: concepts.txt, design-goals.txt, notes.txt, rdf-storage.txt,
storage-impl.txt: documentation update; Dublin Core integration,
terminology fixes
2003-06-24 14:45 angdraug
* samizdat.rb: ProgrammingError exception class
2003-06-24 14:43 angdraug
* query.rb: form submit=nil handling changed in template.rb
2003-06-24 14:42 angdraug
* member.rb: fixed bug: changes never accepted because of exit
before transaction commit
2003-06-24 14:36 angdraug
* doc/: about.txt, euruko2003_samizdat.xml, notes.txt,
oscom3_samizdat.xml: euruko2003 slides and minor documentation
update
2003-06-18 15:50 angdraug
* doc/install.txt: clarifications on required software
2003-06-18 14:58 angdraug
* doc/notes.txt: roadmap for versions 0.0.1 to 0.0.5
2003-06-18 14:57 angdraug
* doc/about.txt: removed reference to samizdat.tar.gz
2003-06-09 15:50 angdraug
* query.rb: first cut at RDF query construction UI
2003-06-07 21:21 angdraug
* doc/: about.txt, design-goals.txt, notes.txt: major documentation
update
2003-06-06 16:38 angdraug
* doc/install.txt: Installation manual, first version.
2003-05-24 21:10 angdraug
* doc/oscom3_samizdat.xml: text comments for slides 6-8
2003-05-23 17:40 angdraug
* doc/oscom3_samizdat.xml: text comments update, comment for slide
5
2003-05-22 21:07 angdraug
* doc/oscom3_samizdat.xml: text comments for first 4 slides
2003-05-17 19:24 angdraug
* doc/oscom3_samizdat.xml: cleanup; reification in Samizdat
features
2003-05-14 16:33 angdraug
* doc/oscom3_samizdat.xml: comments from active2-dev
2003-05-14 16:32 angdraug
* doc/concepts.txt: mp3->MP3
2003-05-05 12:23 angdraug
* doc/oscom3_samizdat.xml: last minute polish
2003-05-05 12:23 angdraug
* doc/concepts.txt: removed 'private' property: postpone
conceptualization of access model
2003-05-03 18:38 angdraug
* doc/oscom3_samizdat.xml: ready for oscom
2003-04-26 19:47 angdraug
* doc/oscom3_samizdat.xml: First draft of slides for Oscom3,
unfinished.
2003-04-26 18:32 angdraug
* doc/about.txt: more typos
2003-04-26 18:05 angdraug
* doc/about.txt: typo
2003-03-10 08:59 angdraug
* member.rb, message.rb, samizdat.rb: Change database AutoCommit to
off by default; minor comments cleanup
2003-03-10 08:55 angdraug
* config.yaml, item.rb, resource.rb, doc/concepts.txt: Beginning of
item exchange implementation; replaced Instance with Item, and
Item with Message
2003-01-13 09:34 angdraug
* doc/: about.txt, concepts.txt, design-goals.txt, rdf-storage.txt,
references.txt, storage-impl.txt, storage.txt: Documentation
update: storage rehaul, terminology cleanup, minor fixes
2003-01-08 19:07 angdraug
* config.yaml, message.rb, resource.rb, samizdat.rb: first working
prototype, produced on christmas holidays - new files
2003-01-08 19:01 angdraug
* index.rb, login.rb, logout.rb, member.rb, doc/about.txt,
doc/concepts.txt, doc/design-goals.txt, doc/storage.txt: first
working prototype, produced on christmas holidays
2002-12-20 13:17 angdraug
* COPYING, index.rb, login.rb, logout.rb, member.rb, doc/about.txt,
doc/concepts.txt, doc/design-goals.txt, doc/references.txt,
doc/storage.txt: Initial checkin.
samizdat-0.7.1/ChangeLog.mtn 0000664 0000000 0000000 00000060421 14010370125 0015676 0 ustar 00root root 0000000 0000000 ----------------------------------------------------------------------
Revision: 4e8d793aa4fcecee35a4286dfcdb806278e164a7
Parent: 574b5c8a218555c84b9aba2e4e77e3d94d56b3df
Author: angdraug@debian.org
Date: 19/01/11 16:42:31
Branch: samizdat-head
Changelog:
no longer have to set default_type for nginx, default config now does that
Changes against parent 574b5c8a218555c84b9aba2e4e77e3d94d56b3df
patched doc/examples/nginx/conf.d/samizdat.conf
----------------------------------------------------------------------
Revision: 574b5c8a218555c84b9aba2e4e77e3d94d56b3df
Parent: 9f02e657b76bcae1d46cb6f52a7a26a810c4bcc8
Author: angdraug@debian.org
Date: 15/03/10 12:37:08
Branch: samizdat-head
Changelog:
fix SecurityError with pidfile name
Changes against parent 9f02e657b76bcae1d46cb6f52a7a26a810c4bcc8
patched bin/samizdatd
----------------------------------------------------------------------
Revision: 9f02e657b76bcae1d46cb6f52a7a26a810c4bcc8
Parent: 97d7b74594346f34adb821dc076db3be833aa4d8
Author: angdraug@debian.org
Date: 15/03/10 12:36:39
Branch: samizdat-head
Changelog:
extracted Request#normalize_language()
Changes against parent 97d7b74594346f34adb821dc076db3be833aa4d8
patched lib/samizdat/engine/request.rb
----------------------------------------------------------------------
Revision: 97d7b74594346f34adb821dc076db3be833aa4d8
Parent: 3be6aac55c161503e55ed535f400ccb124174c50
Author: angdraug@debian.org
Date: 13/01/10 16:45:06
Branch: samizdat-head
Changelog:
bugfix: handle empty tag cloud
Changes against parent 3be6aac55c161503e55ed535f400ccb124174c50
patched lib/samizdat/helpers/application_helper.rb
----------------------------------------------------------------------
Revision: 3be6aac55c161503e55ed535f400ccb124174c50
Parent: 7262de296b263262acd4c2731e0002babbbfd92a
Author: angdraug@debian.org
Date: 13/01/10 16:39:21
Branch: samizdat-head
Changelog:
disable nginx error logging by default
Changes against parent 7262de296b263262acd4c2731e0002babbbfd92a
patched doc/examples/nginx/include/samizdat-site.conf
----------------------------------------------------------------------
Revision: 7262de296b263262acd4c2731e0002babbbfd92a
Parent: e5d93bcf2377679afecb7ffb4c6ec3f0e85f815e
Author: angdraug@debian.org
Date: 26/12/09 01:12:44
Branch: samizdat-head
Changelog:
samizdat-mongrel-server renamed to samizdatd
Changes against parent e5d93bcf2377679afecb7ffb4c6ec3f0e85f815e
renamed bin/samizdat-mongrel-server
to bin/samizdatd
renamed doc/man/samizdat-mongrel-server.1
to doc/man/samizdatd.1
patched bin/samizdatd
patched doc/man/samizdatd.1
----------------------------------------------------------------------
Revision: e5d93bcf2377679afecb7ffb4c6ec3f0e85f815e
Parent: 898dbcbdb92f44e4f73f10c1844e3d6fb5873f27
Author: angdraug@debian.org
Date: 26/12/09 00:03:20
Branch: samizdat-head
Changelog:
example configuration for nginx as a frontend for samizdat-mongrel-server
Changes against parent 898dbcbdb92f44e4f73f10c1844e3d6fb5873f27
added doc/examples/nginx
added doc/examples/nginx/conf.d
added doc/examples/nginx/include
added doc/examples/nginx/sites-available
added doc/examples/nginx/conf.d/samizdat.conf
added doc/examples/nginx/include/samizdat-site.conf
added doc/examples/nginx/sites-available/samizdat
----------------------------------------------------------------------
Revision: 898dbcbdb92f44e4f73f10c1844e3d6fb5873f27
Parent: 436105a4a19c3934bf3850ba2a7dd6facec995b0
Author: angdraug@debian.org
Date: 25/12/09 23:50:50
Branch: samizdat-head
Changelog:
samizdat-mongrel-server.1 manpage added
Changes against parent 436105a4a19c3934bf3850ba2a7dd6facec995b0
added doc/man/samizdat-mongrel-server.1
patched bin/samizdat-mongrel-server
----------------------------------------------------------------------
Revision: 436105a4a19c3934bf3850ba2a7dd6facec995b0
Parent: 961b0b13390e8eba2ada229ab88b6b404eacb4d2
Author: angdraug@debian.org
Date: 25/12/09 19:30:59
Branch: samizdat-head
Changelog:
minor whitespace fixes
Changes against parent 961b0b13390e8eba2ada229ab88b6b404eacb4d2
patched bin/samizdat-mongrel-server
----------------------------------------------------------------------
Revision: 961b0b13390e8eba2ada229ab88b6b404eacb4d2
Parent: 2c4c3498a1d2043c086b9482669526816f867b0d
Author: angdraug@debian.org
Date: 25/12/09 17:49:21
Branch: samizdat-head
Changelog:
Pack of daemonized Mongrels
* samizdat-mongrel-server turned into a configurable daemon that spawns
one Mongrel process per specified port number and restarts child
processes when they die unexpectedly.
* flush stderr in log()
* include site name in error reports
Changes against parent 2c4c3498a1d2043c086b9482669526816f867b0d
patched bin/samizdat-mongrel-server
patched lib/samizdat/engine/dispatcher.rb
patched lib/samizdat/engine/helpers.rb
----------------------------------------------------------------------
Revision: 2c4c3498a1d2043c086b9482669526816f867b0d
Parent: 19c5fc57fd697ac470ed42eeb1cf019e4039bbdf
Author: angdraug@debian.org
Date: 24/12/09 22:11:18
Branch: samizdat-head
Changelog:
cache-flushing fixes in samizat-import-feeds
Changes against parent 19c5fc57fd697ac470ed42eeb1cf019e4039bbdf
patched bin/samizdat-import-feeds
----------------------------------------------------------------------
Revision: 19c5fc57fd697ac470ed42eeb1cf019e4039bbdf
Parent: b8aa55803fa0f36e7a249ec72ccb1ffbefe23c39
Author: angdraug@debian.org
Date: 23/12/09 22:15:10
Branch: samizdat-head
Changelog:
Several Mongrel-inspired fixes
* fix detection of absolute paths in fronpage header/footer include
directives (Mongrel has no concept of document root)
* use RFC HTTP status headers instead of cgi.rb specific constants
(Mongrel doesn't understand those)
* instead of stopping local DRb service after request completion, start
one service per configured cache_callback value and keep it alive for
the lifetime of the process (should help with the lost DRb connection
error)
Changes against parent b8aa55803fa0f36e7a249ec72ccb1ffbefe23c39
patched lib/samizdat/controllers/frontpage_controller.rb
patched lib/samizdat/engine/controller.rb
patched lib/samizdat/engine/request.rb
patched lib/samizdat/engine/site.rb
----------------------------------------------------------------------
Revision: b8aa55803fa0f36e7a249ec72ccb1ffbefe23c39
Parent: ef01e4cc994b788ae39b26bb994f6291c345540c
Author: angdraug@debian.org
Date: 23/12/09 10:56:35
Branch: samizdat-head
Changelog:
one more way a reverse proxy can forward the http/https scheme is X-Forwarded-Proto
Changes against parent ef01e4cc994b788ae39b26bb994f6291c345540c
patched lib/samizdat/engine/request.rb
----------------------------------------------------------------------
Revision: ef01e4cc994b788ae39b26bb994f6291c345540c
Parent: ce0eb21e57120eb1229cdb3be0565c1b8983088d
Author: angdraug@debian.org
Date: 23/12/09 10:54:40
Branch: samizdat-head
Changelog:
don't print the header, Mongrel doesn't like it
Changes against parent ce0eb21e57120eb1229cdb3be0565c1b8983088d
patched lib/samizdat/engine/request.rb
----------------------------------------------------------------------
Revision: ce0eb21e57120eb1229cdb3be0565c1b8983088d
Parent: 8fb0d664739852a925becedf7cac8b11d740c8ad
Author: angdraug@debian.org
Date: 23/12/09 10:04:59
Branch: samizdat-head
Changelog:
support both X-Forwarded-* (Apache2 style) and X-* (Lighttpd style) for proxied Host, Port, and Scheme headers
Changes against parent 8fb0d664739852a925becedf7cac8b11d740c8ad
patched lib/samizdat/engine/request.rb
----------------------------------------------------------------------
Revision: 8fb0d664739852a925becedf7cac8b11d740c8ad
Parent: 1a512120ce606d7918a67c4689eade8a1117e67f
Author: angdraug@debian.org
Date: 23/12/09 09:51:05
Branch: samizdat-head
Changelog:
don't allow RMagic to second-guess ld.so (see Debian bug #557778)
Changes against parent 1a512120ce606d7918a67c4689eade8a1117e67f
patched lib/samizdat/plugins/image.rb
----------------------------------------------------------------------
Revision: 1a512120ce606d7918a67c4689eade8a1117e67f
Parent: 2e0526bc04ff5f39da97949b23b1896cf00a5453
Author: angdraug@debian.org
Date: 19/10/09 11:55:04
Branch: samizdat-head
Changelog:
use X-Scheme and X-Port headers when behind a reverse proxy
Changes against parent 2e0526bc04ff5f39da97949b23b1896cf00a5453
patched lib/samizdat/engine/request.rb
----------------------------------------------------------------------
Revision: 2e0526bc04ff5f39da97949b23b1896cf00a5453
Parent: 4bf71dc6a7be02b9b9be1831193692f7780c0478
Author: angdraug@debian.org
Date: 17/10/09 16:31:18
Branch: samizdat-head
Changelog:
fixed couple leftovers from the ->Site transition
Changes against parent 4bf71dc6a7be02b9b9be1831193692f7780c0478
patched bin/samizdat-import-feeds
patched lib/samizdat/controllers/moderation_controller.rb
----------------------------------------------------------------------
Revision: 4bf71dc6a7be02b9b9be1831193692f7780c0478
Parent: ac89f09e64193f411c52c1cbaf30be3b757aeec1
Author: angdraug@debian.org
Date: 11/10/09 14:11:48
Branch: samizdat-head
Changelog:
poison_field spam protection plugin
Changes against parent ac89f09e64193f411c52c1cbaf30be3b757aeec1
added lib/samizdat/plugins/poison_field.rb
patched data/samizdat/defaults.yaml
patched lib/samizdat/controllers/message_controller.rb
patched lib/samizdat/plugins/spam.rb
patched lib/samizdat/plugins/spam_merge.rb
----------------------------------------------------------------------
Revision: ac89f09e64193f411c52c1cbaf30be3b757aeec1
Parent: ca4512461736ca1a7b4422071c028e7279dbdf05
Author: angdraug@debian.org
Date: 11/10/09 03:28:08
Branch: samizdat-head
Changelog:
email:blacklist refactored into email_blacklist plugin
Changes against parent ca4512461736ca1a7b4422071c028e7279dbdf05
added lib/samizdat/plugins/email_blacklist.rb
patched data/samizdat/defaults.yaml
patched lib/samizdat/controllers/member_controller.rb
patched lib/samizdat/controllers/message_controller.rb
----------------------------------------------------------------------
Revision: ca4512461736ca1a7b4422071c028e7279dbdf05
Parent: 452ad77c7a776d9447b67c30d8519526b5369029
Author: angdraug@debian.org
Date: 11/10/09 02:26:37
Branch: samizdat-head
Changelog:
Antispam module refactored into spam_merge plugin
Changes against parent 452ad77c7a776d9447b67c30d8519526b5369029
dropped lib/samizdat/antispam.rb
added lib/samizdat/plugins/spam.rb
added lib/samizdat/plugins/spam_merge.rb
patched data/samizdat/defaults.yaml
patched lib/samizdat/controllers/message_controller.rb
patched lib/samizdat/engine/exceptions.rb
patched lib/samizdat/engine/helpers.rb
patched lib/samizdat/engine/plugins.rb
patched lib/samizdat/engine.rb
----------------------------------------------------------------------
Revision: 452ad77c7a776d9447b67c30d8519526b5369029
Parent: a3e1550af0bc5970a8fe38b54f958f9c8b97aa60
Author: angdraug@debian.org
Date: 05/09/09 19:01:51
Branch: samizdat-head
Changelog:
first attempt at Mongrel server (still leaks memory and mongrel workers on concurrent connections)
Changes against parent a3e1550af0bc5970a8fe38b54f958f9c8b97aa60
added bin/samizdat-mongrel-server
patched cgi-bin/dispatch.rb
patched lib/samizdat/engine/dispatcher.rb
patched lib/samizdat/engine/request.rb
----------------------------------------------------------------------
Revision: a3e1550af0bc5970a8fe38b54f958f9c8b97aa60
Parent: 0fea324bab0666549d5c2d25546f0b74d362be4b
Author: angdraug@debian.org
Date: 22/08/09 18:25:14
Branch: samizdat-head
Changelog:
rewrite of deployment classes to replace $samizdat_current_request with thread-safe Site class
* Site class introduced to keep track of site configuration, database
connections etc.
* all objects that need access to Site set @site instance variable and
include SiteHelper module
* ApplicationHelper includes SiteHelper and provides self.request=()
method to initialize all instance variables used in ApplicationHelper
and its subclasses
* site-dependent helpers moved into ApplicationHelper or SiteHelper
* Model class introduced, providing Model.validate_id(), Model.cached(),
and access to Site
* persistent_cache renamed to shared_cache
* site:content config option split into site:content_base and
site:content_dir to spare Samizdat the guessing
* cache_callback configuration option makes it really possible to move
SynCache DRb process to a remote server
* View refactored: those instance_eval's weren't really necessary, and
all you need to do to replace ERB with another templating system is
override set_renderer() and render()
* SiteNotFoundError and UnknownFormatError exceptions introduced
* detect_format moved into MahoroSingleton
* plugin initialization simplified: merging of api and plugin options
moved from Plugin#initialize() into Plugins#load_plugin()
* Session.start() is now an instance method Session#start()
* method_missing chain in ConfigHash and SiteConfig now works as
intended, config['foo']['bar'] now is the same as config.foo.bar
Changes against parent 0fea324bab0666549d5c2d25546f0b74d362be4b
renamed lib/samizdat/engine/deployment.rb
to lib/samizdat/engine/site.rb
added lib/samizdat/engine/model.rb
patched bin/samizdat-import-feeds
patched data/samizdat/config.yaml
patched data/samizdat/defaults.yaml
patched doc/install.txt
patched lib/samizdat/components/list.rb
patched lib/samizdat/components/resource.rb
patched lib/samizdat/controllers/diff_controller.rb
patched lib/samizdat/controllers/event_controller.rb
patched lib/samizdat/controllers/frontpage_controller.rb
patched lib/samizdat/controllers/history_controller.rb
patched lib/samizdat/controllers/member_controller.rb
patched lib/samizdat/controllers/message_controller.rb
patched lib/samizdat/controllers/moderation_controller.rb
patched lib/samizdat/controllers/query_controller.rb
patched lib/samizdat/controllers/resource_controller.rb
patched lib/samizdat/controllers/tags_controller.rb
patched lib/samizdat/engine/controller.rb
patched lib/samizdat/engine/dataset.rb
patched lib/samizdat/engine/dispatcher.rb
patched lib/samizdat/engine/exceptions.rb
patched lib/samizdat/engine/globals.rb
patched lib/samizdat/engine/helpers.rb
patched lib/samizdat/engine/plugins.rb
patched lib/samizdat/engine/request.rb
patched lib/samizdat/engine/session.rb
patched lib/samizdat/engine/site.rb
patched lib/samizdat/engine/view.rb
patched lib/samizdat/engine.rb
patched lib/samizdat/helpers/application_helper.rb
patched lib/samizdat/helpers/message_helper.rb
patched lib/samizdat/helpers/syndication_helper.rb
patched lib/samizdat/models/content.rb
patched lib/samizdat/models/event.rb
patched lib/samizdat/models/member.rb
patched lib/samizdat/models/message.rb
patched lib/samizdat/models/moderation.rb
patched lib/samizdat/models/tag.rb
patched lib/samizdat/plugins/content_file.rb
patched lib/samizdat/plugins/content_inline.rb
patched lib/samizdat/plugins/image.rb
patched lib/samizdat/plugins/squish.rb
patched lib/samizdat/plugins/tag_default.rb
patched test/mock.rb
patched test/tc_message_helper.rb
patched test/tc_robot.rb
patched test/util.rb
----------------------------------------------------------------------
Revision: 0fea324bab0666549d5c2d25546f0b74d362be4b
Parent: 98fc93c05a98bea93e1439b329dc4205ee377ac1
Author: angdraug@debian.org
Date: 15/08/09 13:07:49
Branch: samizdat-head
Changelog:
put all YAML helpers in engine/helpers
Changes against parent 98fc93c05a98bea93e1439b329dc4205ee377ac1
patched lib/samizdat/engine/deployment.rb
patched lib/samizdat/engine/helpers.rb
patched lib/samizdat/engine.rb
----------------------------------------------------------------------
Revision: 98fc93c05a98bea93e1439b329dc4205ee377ac1
Parent: ec5085c823005b11e44daede8ee86a406052b113
Author: angdraug@debian.org
Date: 15/08/09 12:49:32
Branch: samizdat-head
Changelog:
more thread-safety: replaced class variables with singletons
Changes against parent ec5085c823005b11e44daede8ee86a406052b113
added lib/samizdat/engine/globals.rb
patched lib/samizdat/engine/deployment.rb
patched lib/samizdat/engine/helpers.rb
patched lib/samizdat/engine.rb
patched lib/samizdat/models/content.rb
----------------------------------------------------------------------
Revision: ec5085c823005b11e44daede8ee86a406052b113
Parent: 6388909d5c803d588f495fcc8dca02a3efe25851
Author: angdraug@debian.org
Date: 15/08/09 12:45:39
Branch: samizdat-head
Changelog:
do not invoke Kernel#site_name in vain
Changes against parent 6388909d5c803d588f495fcc8dca02a3efe25851
patched lib/samizdat/controllers/message_controller.rb
----------------------------------------------------------------------
Revision: 6388909d5c803d588f495fcc8dca02a3efe25851
Parent: acef13c1d9fe7aaa821b524ae397d0909720b4c1
Author: angdraug@debian.org
Date: 15/08/09 12:26:18
Branch: samizdat-head
Changelog:
blacklist for registration email domains implemented
Changes against parent acef13c1d9fe7aaa821b524ae397d0909720b4c1
patched data/samizdat/defaults.yaml
patched lib/samizdat/controllers/member_controller.rb
----------------------------------------------------------------------
Revision: acef13c1d9fe7aaa821b524ae397d0909720b4c1
Parent: 17576091699400268f826db04a0abeeed5d02369
Author: angdraug@debian.org
Date: 13/08/09 14:27:46
Branch: samizdat-head
Changelog:
abstract $samizdat_current_request away under Request
$samizdat_current_request is now only used by following methods in
Request:
* Request.current_request
* set_current_request
* reset_current_request
These methods will need to be updated once we find a thread-safe AND
DRb-compatible way to keep track of the current Request object.
Changes against parent 17576091699400268f826db04a0abeeed5d02369
patched lib/samizdat/engine/deployment.rb
patched lib/samizdat/engine/request.rb
----------------------------------------------------------------------
Revision: 17576091699400268f826db04a0abeeed5d02369
Parent: 8027df8c7728214def04aca5a623f6c2349638f9
Author: angdraug@debian.org
Date: 04/08/09 13:50:30
Branch: samizdat-head
Changelog:
updated pg_hba.conf example to PostgreSQL 8.4 format
Changes against parent 8027df8c7728214def04aca5a623f6c2349638f9
patched doc/install.txt
----------------------------------------------------------------------
Revision: 8027df8c7728214def04aca5a623f6c2349638f9
Parent: e3ac5a78c59f39b24ab8a569417b887897c8409a
Author: angdraug@debian.org
Date: 03/08/09 20:08:00
Branch: samizdat-head
Changelog:
override whole RDF config instead of merging it
Changes against parent e3ac5a78c59f39b24ab8a569417b887897c8409a
patched lib/samizdat/engine/deployment.rb
----------------------------------------------------------------------
Revision: e3ac5a78c59f39b24ab8a569417b887897c8409a
Parent: 2df30b15fcf30fe7bd79494fe3ccb6d1d2316c0f
Author: angdraug@debian.org
Date: 28/07/09 19:31:41
Branch: samizdat-head
Changelog:
now that the libraries have been split out, Samizdat is just the engine, so we can use require 'samizdat' instead of 'samizdat/engine'
Changes against parent 2df30b15fcf30fe7bd79494fe3ccb6d1d2316c0f
added lib/samizdat.rb
patched bin/samizdat-import-feeds
patched bin/samizdat-role
patched cgi-bin/dispatch.rb
patched doc/install.txt
patched lib/samizdat/components/list.rb
patched lib/samizdat/components/resource.rb
patched lib/samizdat/engine/controller.rb
patched lib/samizdat/engine/dataset.rb
patched lib/samizdat/engine/deployment.rb
patched lib/samizdat/engine/dispatcher.rb
patched lib/samizdat/engine/exceptions.rb
patched lib/samizdat/engine/helpers.rb
patched lib/samizdat/engine/plugins.rb
patched lib/samizdat/engine/request.rb
patched lib/samizdat/engine/session.rb
patched lib/samizdat/engine/view.rb
patched lib/samizdat/helpers/application_helper.rb
patched lib/samizdat/helpers/syndication_helper.rb
patched lib/samizdat/models/content.rb
patched lib/samizdat/models/event.rb
patched lib/samizdat/models/member.rb
patched lib/samizdat/models/message.rb
patched lib/samizdat/models/moderation.rb
patched lib/samizdat/models/tag.rb
patched lib/samizdat/plugins/access.rb
patched lib/samizdat/plugins/blog.rb
patched lib/samizdat/plugins/content_file.rb
patched lib/samizdat/plugins/content_inline.rb
patched lib/samizdat/plugins/file_default.rb
patched lib/samizdat/plugins/flash.rb
patched lib/samizdat/plugins/flowplayer.rb
patched lib/samizdat/plugins/html.rb
patched lib/samizdat/plugins/image.rb
patched lib/samizdat/plugins/inline_default.rb
patched lib/samizdat/plugins/language_prefix.rb
patched lib/samizdat/plugins/occupation.rb
patched lib/samizdat/plugins/plain_text.rb
patched lib/samizdat/plugins/profile.rb
patched lib/samizdat/plugins/role.rb
patched lib/samizdat/plugins/route.rb
patched lib/samizdat/plugins/squish.rb
patched lib/samizdat/plugins/tag.rb
patched lib/samizdat/plugins/tag_default.rb
patched lib/samizdat/plugins/textile.rb
patched lib/samizdat/plugins/virtual_tag.rb
patched test/mock.rb
patched test/tc_application_helper.rb
patched test/tc_message_helper.rb
patched test/tc_password.rb
patched test/tc_robot.rb
patched test/tc_version.rb
----------------------------------------------------------------------
Revision: 2df30b15fcf30fe7bd79494fe3ccb6d1d2316c0f
Parent: 9010dac53a4c730adfe4e606c8db79de29956862
Author: angdraug@debian.org
Date: 28/07/09 17:51:17
Branch: samizdat-head
Changelog:
remove Cache and Storage unit tests
Changes against parent 9010dac53a4c730adfe4e606c8db79de29956862
dropped test/tc_cache.rb
dropped test/tc_storage.rb
patched test/ts_samizdat.rb
----------------------------------------------------------------------
Revision: 9010dac53a4c730adfe4e606c8db79de29956862
Parent: c3dedd2e692067776c91088e54dd02ebbc633bc7
Author: angdraug@debian.org
Date: 28/07/09 15:29:41
Branch: samizdat-head
Changelog:
Split Sanitize, Cache, and Storage libraries into subprojects
- sanitize.rb became Whitewash (branch whitewash-head)
- cache.rb became SynCache (branch syncache-head)
- storage.rb became Graffiti (branch graffiti-head)
Changes against parent c3dedd2e692067776c91088e54dd02ebbc633bc7
dropped bin/samizdat-drb-server
dropped doc/diagrams/samizdat_rdf_classes.dia
dropped doc/man/samizdat-drb-server.1
dropped doc/rdf-impl-report.txt
dropped doc/rdf-storage.txt
dropped doc/storage-impl.txt
dropped lib/samizdat/cache.rb
dropped lib/samizdat/sanitize.rb
dropped lib/samizdat/storage.rb
patched README
patched bin/samizdat-import-feeds
patched lib/samizdat/controllers/query_controller.rb
patched lib/samizdat/engine/deployment.rb
patched lib/samizdat/engine.rb
patched lib/samizdat/helpers/syndication_helper.rb
patched lib/samizdat/models/content.rb
patched lib/samizdat/models/message.rb
patched test/mock.rb
patched test/util.rb
----------------------------------------------------------------------
Revision: c3dedd2e692067776c91088e54dd02ebbc633bc7
Parent: 6e3288e9f2f492a684f7cf842ae9c759acdf3174
Author: angdraug@debian.org
Date: 27/07/09 14:19:53
Branch: samizdat-head
Changelog:
* Squish expression validation: allow '||' and '!=' operators, accept '' token between punctuation marks
* use all nodes, not just subject nodes, when checking if query graph is joint
* dropped the "reassign to smaller collor" optimization, it only works for raster images
Changes against parent 6e3288e9f2f492a684f7cf842ae9c759acdf3174
patched lib/samizdat/storage.rb
----------------------------------------------------------------------
Revision: 6e3288e9f2f492a684f7cf842ae9c759acdf3174
Parent: 1542f605181364a646ed05e3572e3d8de9e7e51a
Author: angdraug@debian.org
Date: 24/07/09 13:14:47
Branch: samizdat-head
Changelog:
revert to allowing ambiguous property maps; support mapping of many-to-many relations
Changes against parent 1542f605181364a646ed05e3572e3d8de9e7e51a
patched lib/samizdat/storage.rb
patched test/tc_storage.rb
samizdat-0.7.1/NEWS 0000664 0000000 0000000 00000024672 14010370125 0014036 0 ustar 00root root 0000000 0000000 Samizdat News
=============
2021-02-08: Samizdat 0.7.1 is released.
This is a bugfix release that brings Samizdat up to date with latest
versions of its dependencies, adds new Captcha plugin, drops the obsolete
Flash and Flowplayer plugins, and replaces them with HTML5 video renderer.
2012-05-12: Samizdat 0.7.0 is released.
This version features massive improvements both in the user interface and
under the hood. Posts by registered members are now organized into blogs,
publishing a message with several pictures and other multimedia parts can
now be done in a single step, sub-tags provide even finer control over site
structure, while translations have been promoted from special-class comments
into its own kind of a message part. Other changes include short message cut
mark, support for comments with empty titles, Lock Comments moderation
action, and public moderators list.
Samizdat Storage, Cache, and Sanitize modules were split out into their own
sub-projects called Graffiti, SynCache, and Whitewash. Since Samizdat 0.6.2,
Graffiti has grown the ability to handle transitive properties and negative
sub-queries, and migrated from Ruby/DBI to Sequel as a backend interface to
relational databases. Whitewash moved away from reliance on HTMLTidy and
REXML, both cleanup and parsing of HTML is now handled by Nokogiri.
Samizdat itself has migrated from cgi.rb to Rack as its interface with the
Web server, examples in the documentation show the new recommended way to
setup Samizdat using Thin Ruby application server and Varnish cache behind
Nginx front-end web server. Mahoro file type detection library was replaced
with Magic FFI bindings, while FastGettext is now preferred over
Ruby/GetText for i18n.
As usual, see release notes [0] for details and upgrade instructions.
[0] http://samizdat.nongnu.org/release-notes/samizdat-0.7.0.html
2009-02-12: Samizdat 0.6.2 is released.
The most important part of this release is the long list of security
improvements in various parts of Samizdat engine. Password encryption is now
as strong as it gets, HTTPS now gets the emphasis it deserves, cross-site
scripting protection has been tightened, and in general the engine is even
more paranoid about user-submitted data than before.
End users will be most interested in the integration with Flowplayer free
Flash video player and the thumbnailing capabilities of the new image
plugin. Both features are enabled by the new plugin mechanism, which, in
addition to handling different content types, allows to add fancy member
profile parameters and alternative access control schemes.
As usual, see release notes [0] for details and upgrade instructions.
[0] http://samizdat.nongnu.org/release-notes/samizdat-0.6.2.html
2008-03-04: Samizdat 0.6.1 is released.
Main goal of 0.6.x series is to address the shortcomings that were
identified in the IMC CMS Survey in November 2006 [0]. This version
takes care of the most important part: security. New security
features in Samizdat 0.6.1 include: CSRF protection, Antispam
module, per-resource moderation logs, moderation requests tracker.
[0] http://samizdat.nongnu.org/doc/CMSSurveyReportSamizdat.html
Samizdat's internals have changed beyond recognition since previous
release. The engine code is refactored into MVC architecture,
Samizdat Cache now uses a deadlock-proof two-level locking
algorithm, RDF Storage has undergone a massive overhaul that allowed
to add support for optional sub-patterns in Squish queries.
Apache/PostgreSQL combo is no longer the only way to install
Samizdat: Lighttpd web server and MySQL and SQLite3 databases are
now supported. The database schema is changed once again, see
release notes [1] on how to upgrade.
[1] http://samizdat.nongnu.org/release-notes/samizdat-0.6.1.html
There's also a lot of small features and usability improvements here
and there. The tired "next page" link is replaced with proper
pagination system, file sizes are displayed next to download links,
replies are sorted by id instead of last edit date, posting comment
to a multi-page thread redirects to thread's last page, translations
don't appear in the replies list and can't be replied to, error
reporting is more detailed and less confusing to users. User
interface was translated into several more languages, with varying
degrees of completeness.
And the "cherry on top" prize goes to RSS import module, with
special thanks to Boud who evangelized this feature for a long time
and created the first implementation.
2006-11-29: Samizdat 0.6.0 is released.
The version increase attributes to the gradual changes in 0.5.x
series and incorporates almost two years worth of real-world
deployment. Now that Samizdat has finally become a mature open
publishing system, the road is cleared for more intrusive changes
and major new features, such as free exchange and calendaring.
In the way of major features, this version introduces ubiquitous
message translations and RSS syndication. Many old tools are now
more flexible and easier to use: focus management interface is
simplified, the front page now packs more information in better
layout and allows to include static headers and footers.
There are even more changes under the hood: multi-layer caching,
gzip and ETag support, support for audio and video uploads,
BitTorrent links, HTML and CSS filtering, flexible access control,
new moderation features, new UI translations and themes, code
reorganization, simplified installation, and more.
2004-10-22: Samizdat 0.5.4 is released.
In this version, front page layout was changed to the more familiar
vertial split with the main column featuring focuses and right
column running recent updates in the open publishing wire. New
moderation facility allows to take over messages, displace their
contents completely, and block member accounts. More new features:
alternative CSS theme Indy is added and now is selectable from the
Settings page; Belarussian translation is added; database connection
is now configurable and allows to run multiple Samizdat instances on
a single server; oversize titles and descriptions are now truncated.
2004-09-20: Samizdat 0.5.3 is released.
Starting with this version, Samizdat can send out email: currently,
it is used to recover lost passwords and to confirm that member
email address is real. Email addresses are now unique, making it
more difficult to cheat using throwaway accounts. Other changes
include new dc:description message property for attaching article
abstract, thumbnail image, or table of contents to a message, new
preferences infrastructure allowing to add more server-side member
settings in the future, and the inevitable database schema change.
2004-07-05: Samizdat 0.5.2 is released.
This version adds Wiki functionality to Samizdat, allowing to edit
messages and track history of changes. Messages may use Textile
format for advanced hypertext markup, editing may be limited to the
original creator or open for all site members. Other highlights of
this release are FastCGI support, configurable site logo, multiple
usability improvements, and the usual bunch of bugfixes. Once again,
database schema is slightly changed.
2004-03-18: Samizdat 0.5.1 "Paris Commune" release is out.
This release is dedicated to 133rd anniversary of the Paris Commune.
Main feature of this version is i18n support, with Russian
translation already in place. Other improvements include ability to
work as plain CGI without mod_ruby, support for Windows/Cygwin,
massive speed increase, and a long list of bugfixes. Database schema
is changed again, but this time it is trivial to migrate from the
previous version.
2003-12-01: Samizdat 0.5.0 is released.
This version introduces basic focus management, completing the
minimal set of features required for an open publishing part of the
engine, and making Samizdat ready for public beta testing. Other
major changes in this release include Pingback support, many user
interface improvements, another rewrite of multimedia upload,
testing framework, and more.
2003-10-17: samizdat-devel mailing list is created.
The mailing list is dedicated to development of the Samizdat
collaboration and open publishing engine. Secondary list topics
include Samizdat demployment, usage, and other related issues.
2003-09-01: Samizdat 0.0.4 is released.
This version allows to upload multimedia messages, including images
and verbatim plain text, and introduces publishing of user-defined
queries in form of "application/x-squish" messages. When migrating
from older versions, Samizdat database should be dropped and
recreated from scratch because of incompatible database schema
change: content is now stored as a blob. In addition, file upload
feature relies on StringIO module that is available as part of the
Ruby 1.8 or can be installed separately from the Ruby Shim library
for Ruby 1.6.
2003-08-08: Samizdat 0.0.3 is released.
In this version, query construction UI is added, allowing to compose
and modify search queries more conveniently and without having to
manually edit raw Squish. Other major changes include switch to
Unicode UTF-8 as default encoding, great improvement of browsers
support in CSS, more code refactoring. Many minor bugs and
inconsistencies are fixed, UI is enhanced in several places.
2003-07-14: Samizdat 0.0.2 is released.
This version implements query validation and security limits, making
execution of user-defined search queries safer. Other changes
include schema improvements (better integration of Samizdat RDF
schema with Dublin Core, separate namespace for tags, switch from
RDF/XML to more readable N3 notation), enhanced search result
display (resource rendering is separated into a class), UI CSS
clean-up, documentation updates. Access to utility classes is
reorganized and simplified.
2003-06-12: Samizdat 0.0.1 is released.
This is the first version that includes basic RDF search query
construction UI. Other functionality covered by this version
includes: registering site members, publishing and replying to
messages, voting for standard tags on resources.
samizdat-0.7.1/README 0000664 0000000 0000000 00000010072 14010370125 0014204 0 ustar 00root root 0000000 0000000 Samizdat: Co-op Engine
======================
Mission Statement
-----------------
Samizdat is a generic RDF-based engine for building collaboration and
open publishing web sites. Samizdat provides users with means to
cooperate and coordinate on all kinds of activities, including media
activism, resource sharing, education and research, advocacy, and so on.
Samizdat implements workflows that promote values of freedom, openness,
equality, and cooperation.
Samizdat users can publish, view, comment, edit, and aggregate text and
multimedia resources, vote on site structure and resource
classifications, filter resources by flexible sets of criteria (see
Features below, and Design Goals document).
Samizdat builds its underlying data model on RDF (Resource Description
Framework), and defines a schema of resource classes and properties for
core concepts of a Samizdat site: member, message, thread, tag,
proposition, vote, version, part, and so on (see Concepts document).
Open nature of RDF allows to add new metadata and new uses of site
resources without effort, and to transparently interoperate with diverse
set of applications supporting this standard.
Samizdat project was inspired by Matthew Arnison's Open Publishing
initiative and Active engine used by the IndyMedia.org project, and by
rusty's Scoop engine used by Kuro5hin.org and other sites (see
References document). Unlike other open editing systems, it uses RDF
model from the ground up and targets other domains beyond publishing,
such as cooperation, education, and resource sharing.
Samizdat is free software and is built using free software, such as Ruby
programming language and PostgreSQL relational database management
system. All Samizdat source code and documentation can be redistributed
and/or modified under the terms of the GNU General Public License as
published by Free Software Foundation; either version 3 of the license,
or (at your option) any later version.
Features
--------
Open Publishing
- open publishing wire
- threaded comments
- multimedia upload (including HTML5 video)
- format messages as text, verbatim plain text, HTML, and Textile
- integrated message translations
Open Editing
- vote for site structure
- vote for dynamic front page
- any message can be voted to become a tag
- moderation interface
- configurable access control to publishing, voting, and moderation
Wiki
- publish new versions
- author-only or open-for-all editing
- history of changes with colored difference tables
Blogging and Syndication
- personal blog space
- export of RSS 1.0 feeds for front page, blogs, tags, and RDF query results
- import of RSS feeds into the front page
Semantic Web
- site structure follows RDF model
- search with RDF queries, publish queries as messages
- Dublin Core metadata
- uses Graffiti relational RDF store
Security
- all user input is tainted and HTML-sanitized
- CSRF protection
- wiki spam filter
- per-resource moderation logs
- moderation request tracker
- login forms and cookies may be limited to HTTPS connections
Implementation
- Ruby, PostgreSQL, Nginx
- full Unicode (UTF-8)
- XHTML 1.0 markup with switchable CSS themes
- GetText l10n framework (UI available in 11 languages)
- in-memory object cache, database cache of rendered and sanitized messages
- built-in MVC mini-framework
More Information
----------------
Documentation
install.txt: Installation
design-goals.txt: Design Goals
concepts.txt: Concepts
translations.txt: Translations
references.txt: References
Presentations
oscom3_samizdat.xml: OSCOM3, May 2003, Cambridge, MA
euruko2003_samizdat.xml: EuRuKo 2003, June 2003, Karlsruhe, DE
barcampsheffield2007_samizdat.xml: BarCamp Sheffield 2007, May 2007,
Sheffield, UK
lvee2008_samizdat.xml: LVEE 2008, June 2008, Grodno, BY
Links
http://samizdat.nongnu.org/
https://github.com/angdraug/samizdat
https://savannah.nongnu.org/projects/samizdat/
http://raa.ruby-lang.org/list.rhtml?name=samizdat
http://freecode.com/projects/samizdat
https://docs.indymedia.org/view/Devel/SamizdatEngine
samizdat-0.7.1/TODO 0000664 0000000 0000000 00000005742 14010370125 0014024 0 ustar 00root root 0000000 0000000 Samizdat ToDo Lists
===================
Short-term Goals
----------------
0.7.2
- feature: basic calendar
- feature: wysiwig HTML editor
- performance: mark-and-sweep, static caching
0.7.x
- security: captcha
- bug: catch and report db connect timeout error
- feature: image manipulation (galleries)
- feature: user notifications
- feature: tag proximity (show tags related to messages in this tag)
- feature: front page filters (belarus.indymedia.org/7285)
- feature: pod/vodcasting
- feature: mobile phones support
- install: database clustering
- install: restart web server in postinst
Release Roadmap
---------------
0.0.1 - basic search interface
0.0.2 - query validation and security limits
0.0.3 - query construction UI
0.0.4 - multimedia messages, query publishing
0.5.0 - basic focus management, first beta release
0.5.1 - i18n, plain CGI, performance
0.5.2 - FastCGI, Textile, versioning
0.5.3 - email interface, account management
0.5.4 - frontpage, moderation
0.6.0 - translations, syndication, caching, packaging
0.6.1 - MVC, security, portability, optional RDF subqueries, RSS import
0.6.2 - security, plugins, Flowplayer
0.8.0 - wiki
0.9.0 - groupware (calendar, task tracker)
0.9.1 - full RDQL, Memcached
0.9.2 - alternate RDF backends: 3store
0.9.0 - multi-part resources
1.0.0 - distributed operation (personal, p2p)
Development Directions
----------------------
- filter and search (important)
- RDF schema integration with Dublin Core (done), FOAF and Annotea
- testing framework (important, in progress)
- email interface (in progress)
- web of trust management -- depends on email interface
- gettext l10n (done)
- calendar/collaboration (help needed)
- p2p (in progress, research help needed)
- usability (in progress)
RDF Storage Tasks
-----------------
- generalize RDF storage, implement SPARQL[0]
- unit, functional, and performance test suite (in progress)
- separate library for RDF storage (done)
- investigate alternative backends: FramerD, 3store, Redland
-- depends on separate library for RDF storage
-- depends on test suite
- security: Squish literal condition safety (done), limited number of
query clauses (done), dry-run of user-defined query, approvable
resource usage
- query result set representation
- don't-bind variables in query pattern (done)
- parametrized queries (done)
- support blob literals
-- depends on parametrized queries
- vocabulary entailment: RDF, RDFS, OWL (in progress)
- RDF aggregates storage internalization (Seq, Bag, Alt)
- storage workflow control (triggers)
- transparent (structured) RDF query storage
-- depends on RDF aggregates storage
-- depends on storage workflow control
- subqueries (query premise)
-- depends on transparent query storage
- chain queries
-- depends on native RDF storage
[0] http://www.w3.org/standards/techs/sparql
RDF Storage Performance
-----------------------
- URIref hashes
- may-bind and don't-bind parameters (done)
- parametrized queries (done)
- query introspection
- query result set representation
samizdat-0.7.1/bin/ 0000775 0000000 0000000 00000000000 14010370125 0014074 5 ustar 00root root 0000000 0000000 samizdat-0.7.1/bin/samizdat-create-database 0000664 0000000 0000000 00000004151 14010370125 0020637 0 ustar 00root root 0000000 0000000 #!/bin/bash
#
# Samizdat database generation script
#
# Copyright (c) 2002-2011 Dmitry Borodaenko
#
# This program is free software.
# You can distribute/modify this program under the terms of
# the GNU General Public License version 3 or later.
#
print_usage()
{
echo "Usage: samizdat-create-database site [ driver ]"
echo
echo "Supported drivers:"
echo " postgres (default)"
echo " sqlite3"
echo
echo "Requires root priviledges to run"
}
if [ -z "$1" ]; then
print_usage
exit 1
fi
SITE="$1"
DRIVER="$2"
[ -z "$DRIVER" ] && DRIVER="postgres"
PACKAGE=samizdat
SQLDIR=/usr/share/$PACKAGE/database
DATADIR=/var/lib/$PACKAGE
SQL=`cat $SQLDIR/{create,triggers}-${DRIVER}.sql 2>/dev/null`
if [ -r "$SQLDIR/grant-${DRIVER}.sql" ]; then
SQL=$SQL`sed "s/samizdat/$SITE/g" $SQLDIR/grant-${DRIVER}.sql`
fi
case "$DRIVER" in
postgres)
su -c "echo '' | psql -q '$SITE' 2>/dev/null" - postgres
if [ "$?" = "0" ]; then
echo "Error: database '$SITE' already exists."
exit 3
fi
echo "Creating database and user..."
su -c "createdb --encoding UNICODE '$SITE' && createuser -SDR '$SITE' && createlang plpgsql '$SITE'" - postgres
echo "Generating database schema..."
echo "$SQL" | su -c "psql -q '$SITE' 2>/dev/null" - postgres
echo
echo "Please configure IDENT access as described in install.txt, or provide"
echo "other means for Samizdat to log in to PostrgreSQL database '$SITE'."
echo
echo "adapter: postgres"
echo "database: ${SITE}"
echo "user: ${SITE}"
;;
sqlite3)
SQLITE_DIR=$DATADIR/$SITE
SQLITE_FILE=$SQLITE_DIR/${SITE}-sqlite.db
if [ -e "$SQLITE_FILE" ]; then
echo "Error: SQLite3 database file for site '$SITE' already exists."
exit 3
fi
echo "Creating database..."
mkdir -p $SQLITE_DIR
sqlite3 $SQLITE_FILE "$SQL"
echo "Granting write access to the database to group 'www-data'..."
chgrp -R www-data $SQLITE_DIR
chmod 775 $SQLITE_DIR
chmod 664 $SQLITE_FILE
echo
echo "adapter: sqlite3"
echo "database: $SQLITE_FILE"
;;
*)
echo "Error: driver '$DRIVER' is not supported."
exit 2
;;
esac
echo "Database generation completed."
samizdat-0.7.1/bin/samizdat-import-feeds 0000664 0000000 0000000 00000006643 14010370125 0020240 0 ustar 00root root 0000000 0000000 #!/usr/bin/env ruby
#
# Samizdat syndication feeds updater
#
# Copyright (c) 2002-2011 Dmitry Borodaenko
#
# This program is free software.
# You can distribute/modify this program under the terms of
# the GNU General Public License version 3 or later.
#
# vim: et sw=2 sts=2 ts=8 tw=0
require 'samizdat'
require 'samizdat/helpers/syndication_helper'
require 'rss/1.0'
require 'rss/2.0'
require 'rss/dublincore'
require 'rss/maker'
require 'timeout'
class FeedUpdaterError < RuntimeError; end
class FeedUpdater
include SyndicationHelper
CONNECTION_TIMEOUT = 60 # 1 minute
def initialize
@sites = SamizdatSites.instance.all
end
# cycle through all sites and update all configured imported feeds
#
# configuration:
#
# import_feeds:
# name:
# url: http://example.com/feed.rss
# limit: 5
#
# or, to use limit:page limit:
#
# import_feeds:
# name: http://example.com/feed.rss
#
# each feed is only fetched once per URL across all sites
#
def run
feeds = {}
@sites.each do |site_name|
@site = Site.new(site_name)
# Only sites with a shared remote cache can import feeds.
# See Site#initialize().
cache_uri = config.cache or next
each_import_feed do |feed_name, url, limit|
# fetch once per url across shared caches of all sites
(feeds[url] ||= {})[cache_uri] ||= shared_cache if url
end
end
feeds.each do |url, caches|
begin
update_feed(url, caches)
rescue FeedUpdaterError => error
log error
next # just ignore the feed if it can't be updated
end
end
flush_pages_with_syndication(feeds)
end
private
def update_feed(url, caches)
response = nil # scope fix
begin
Timeout.timeout(CONNECTION_TIMEOUT) do
response = open(url) {|file| file.read }
end
rescue => error
raise FeedUpdaterError, "Failed to fetch feed from #{url}: " + error.message
end
begin
feed = parse_feed(response)
rescue => error
raise FeedUpdaterError, "Failed to parse feed from #{url}: " + error.message
end
caches.each_value do |c|
c['samizdat/*/import_feeds/' + url] = feed # '*' to avoid clashes with site_name
end
end
def parse_feed(response)
# Remove tag section not needed and known to be buggy for invalid "mn" type
# URI http://usefulinc.com/rss/manifest/
#
# fixme: explain this better
#
if response =~ %r{http://usefulinc.com/rss/manifest/}
response.sub!(%r{}, '')
end
begin
rss = RSS::Parser.parse(response) # try RSS 1.0 compliant parser first
rescue RSS::Error
rss = RSS::Parser.parse(response, false) # fall back to non RSS 1.0 compliant
end
rss.respond_to?(:items) or raise FeedUpdaterError, "Failed to parse RSS"
# don't store more than limit:page items
rss.items[0, limit_page].collect {|item|
{
'link' => item.link.strip,
'title' => item.title.strip,
'date' => item.date
}
}
end
def flush_pages_with_syndication(feeds)
# make sure we only flush each affected shared cache once
all_caches = {}
feeds.each_value do |caches|
all_caches.merge!(caches)
end
all_caches.each_value do |c|
c.flush(%r{\Asamizdat/[^/]+/index/})
end
end
end
FeedUpdater.new.run
samizdat-0.7.1/bin/samizdat-manage-captcha 0000664 0000000 0000000 00000004467 14010370125 0020475 0 ustar 00root root 0000000 0000000 #!/usr/bin/env ruby
#
# vim: et sw=2 sts=2 ts=8 tw=0
require 'optparse'
require 'samizdat/captcha/captcha'
require 'samizdat/captcha/equation'
class App
include SiteHelper
def run
opts = OptionParser.new
appconfig = {}
opts.on('-s', '--site=SITE', String, 'Samizdat site name') {|val|
appconfig[:site] = val }
opts.on('-f', '--format=[FORMAT]', String, 'Image format') {|val|
appconfig[:format] = val.downcase }
opts.on('-c', '--create', 'Create images and database table') {
appconfig[:action] = :create }
opts.on('-u', '--update', 'Update (create new) images') {
appconfig[:action] = :update }
opts.on('-d', '--delete', 'Delete images and drop table') {
appconfig[:action] = :delete }
opts.parse(ARGV)
if appconfig[:site]
@site = Site.new(appconfig[:site])
else
$stderr.puts opts.to_s
exit 1;
end
@captcha = Captcha.new(site)
@number = try_config(Captcha::CONFIG + 'number', Captcha::DEFAULT_NUMBER)
@format = appconfig[:format] || 'png'
self.send appconfig[:action]
end
private
def generate
mathops = Equation::MATHOPS.map {|op, ch| ch }
@number.times do |id|
equation = Equation.generate
filename = "#{id}.#{@format}"
w, h = @captcha.generate_file( "#{equation}=", filename, mathops )
yield id, equation.result, filename, w, h
end
end
def create
table = @captcha.create_table
generate do |id, result, filename, width, height|
table.insert(
:id => id,
:result => result,
:filename => filename,
:width => width,
:height => height
)
end
end
def delete
table = @captcha.table
table.each {|ds| @captcha.delete_file(ds[:filename]) }
db.drop_table Captcha::TABLE
end
def update
table = @captcha.table
generate do |id, result, filename, width, height|
table.filter( :id => id ) \
.each {|ds|
# generate will silently rewrite existing files so we don't want
# to delete them again
@captcha.delete_file(ds[:filename]) if ds[:filename] != filename
} \
.update(
:result => result,
:filename => filename,
:width => width,
:height => height
)
end
end
end
App.new.run
samizdat-0.7.1/bin/samizdat-role 0000664 0000000 0000000 00000007501 14010370125 0016575 0 ustar 00root root 0000000 0000000 #!/usr/bin/env ruby
#
# Samizdat role management
#
# Copyright (c) 2002-2011 Dmitry Borodaenko
#
# This program is free software.
# You can distribute/modify this program under the terms of
# the GNU General Public License version 3 or later.
#
# vim: et sw=2 sts=2 ts=8 tw=0
require 'samizdat'
require 'getoptlong'
class SamizdatRole
def initialize
opts = GetoptLong.new(
[ '--help', '-h', GetoptLong::NO_ARGUMENT ],
[ '--site', '-s', GetoptLong::REQUIRED_ARGUMENT ],
[ '--role', GetoptLong::REQUIRED_ARGUMENT ],
[ '--list', '-l', GetoptLong::NO_ARGUMENT ],
[ '--grant', '-g', GetoptLong::REQUIRED_ARGUMENT ],
[ '--revoke', '-r', GetoptLong::REQUIRED_ARGUMENT ]
)
@role = 'moderator'
@list = nil
@grant = nil
@revoke = nil
@member = nil
opts.each do |opt, arg|
case opt
when '--help'
usage
when '--site'
ENV['SAMIZDAT_SITE'] = arg
when '--role'
@role = arg
when '--list'
@list = true
when '--grant'
@grant = true
@member = arg
when '--revoke'
@revoke = true
@member = arg
end
end
unless @list or @grant or @revoke
usage
end
unless ENV['SAMIZDAT_SITE']
raise "Samizdat site must be defined in either --site option or SAMIZDAT_SITE environment variable"
end
if @grant or @revoke
set_id
set_dbroot
end
end
def run
if @grant or @revoke
@dbroot.transaction do
grant if @grant
revoke if @revoke
end
end
list if @list
end
private
def usage
puts %q{
Usage:
samizdat-role --help
display this message
samizdat-role [ OPTIONS ] --list
list members who have ROLE priviledges
samizdat-role [ OPTIONS ] --grant MEMBER
grant ROLE priviledges to MEMBER
samizdat-role [ OPTIONS ] --revoke MEMBER
revoke ROLE priviledges from MEMBER
Options:
--site SITE
name of the Samizdat site (overrides SAMIZDAT_SITE environment variable)
--role ROLE
name of a role, default is 'moderator'
--grant MEMBER, --revoke MEMBER
id or login of a member
NB: To grant or revoke priviledges using this command, you must use
database superuser priviledges (in PostgreSQL, this is 'postgres').
Example:
su postgres -c 'samizdat-role --site s1 --grant joe --role moderator --list'
Grant moderator priviledges to the member 'joe' of site 's1' and list all
moderators.
}
exit
end
def set_id
if @member.to_i > 0
@id = member.to_i
else
@id, = db.select_one(%q{SELECT id FROM Member WHERE login = ?}, @member)
@id or raise "Member #{@member} not found."
end
end
def set_dbroot
adapter = config['db']['adapter']
case adapter
when 'postgres'
@dbroot = Sequel.connect(
:adapter => adapter,
:host => config['db']['host'],
:database => config['db']['database'],
:user => 'postgres'
)
when 'sqlite'
@dbroot = db
else
raise "Database driver #{db.driver_name} is not supported by this command."
end
end
def list
puts "Members of the site #{ENV['SAMIZDAT_SITE']} with #{@role} priviledges:"
puts db.fetch(
%q{SELECT DISTINCT m.login
FROM role r
INNER JOIN member m ON r.member = m.id
WHERE r.role = ?
ORDER BY m.login}, @role
).all.map {|r| r[:login] }.join("\n")
end
def grant
data = {
:member => @id,
:role => @role
}
@dbroot[:role].filter(data).empty? or raise "Member #{@member} already has #{@role} priviledges."
@dbroot[:role].insert(data)
end
def revoke
@dbroot[:role].filter(:member => @id, :role => @role).delete
end
end
begin
SamizdatRole.new.run
rescue RuntimeError => e
puts "ERROR: " + e.message
exit 1
end
samizdat-0.7.1/bin/update-indymedia-cities 0000664 0000000 0000000 00000002172 14010370125 0020522 0 ustar 00root root 0000000 0000000 #!/usr/bin/env ruby
#
# create cities.inc from http://www.indymedia.org/cities.xml
#
# Copyright (c) 2005-2009 Dmitry Borodaenko
#
# This program is free software.
# You can distribute/modify this program under the terms of
# the GNU General Public License version 3 or later.
#
# vim: et sw=4 sts=4 ts=8 tw=0
require 'open-uri'
require 'rexml/document'
# borrowed from CGI
def escape_html(string)
string.gsub(/&/n, '&').gsub(/\"/n, '"').gsub(/\'/n, ''').gsub(/>/n, '>').gsub(/#{text}:\n}
end
key.next_element.each_element('dict/key') {|e| print_key e }
when 'string'
print %{#{escape_html(key.text.strip)}\n}
end
end
cities = open('http://www.indymedia.org/cities.xml') {|f| f.read }
root = REXML::Document.new(cities).root
root.each_element('/plist/dict/key') {|e| print_key e }
samizdat-0.7.1/cgi-bin/ 0000775 0000000 0000000 00000000000 14010370125 0014634 5 ustar 00root root 0000000 0000000 samizdat-0.7.1/cgi-bin/samizdat.ru 0000664 0000000 0000000 00000000046 14010370125 0017020 0 ustar 00root root 0000000 0000000 require 'samizdat'
run Dispatcher.new
samizdat-0.7.1/data/ 0000775 0000000 0000000 00000000000 14010370125 0014235 5 ustar 00root root 0000000 0000000 samizdat-0.7.1/data/samizdat/ 0000775 0000000 0000000 00000000000 14010370125 0016051 5 ustar 00root root 0000000 0000000 samizdat-0.7.1/data/samizdat/config.yaml 0000664 0000000 0000000 00000015204 14010370125 0020204 0 ustar 00root root 0000000 0000000 ---
# config.yaml
#
# Example of Samizdat site-specific configuration
# Site Setup
#
# This section specifies several locations and XHTML fragments that
# define the site. All locations are relative to the web server document
# root.
#
site:
# Absolute path to the directory where media uploads are stored. The
# engine will store the media uploads under this directory, so it
# should be writeable by the Samizdat CGI scripts. See also format:
# section in defaults.yaml.
#
content_dir: '/var/www/samizdat/content'
# Apparent location of the content directory relative to site base, as
# typed in the web browser. This location will be prepended to links
# to media uploads stored under content_dir.
#
content_base: 'content'
# Site name. This is a text string that is used in many different
# places across the site, including page titles, email notifications
# and so on.
#
name: 'Demo'
# Site logo. This can be just a text string, or any XHTML fragment
# that is allowed inside tag. If you put something more complex
# than a simple tag here, make sure that it fits nicely with all
# configured CSS themes.
#
logo: 'Samizdat Demo Site'
# XHTML fragment that is included at the top of the front page. In
# addition to any block-level XHTML markup, it can include SSI file
# include directives: , with
# file names relative to your document root. As with site logo code,
# make sure that this fragment is compatible with your CSS themes.
#
# Can be single text for all languages, or a hash of translations
# grouped by locale name (see locale: section)
#
header:
en: >
Samizdat ist eine vielseitige, RDF-basierte Plattform um
Webseiten zu erstellen, auf denen jedermann veröffentlichen kann.
Samizdat möchte dabei Werte wie Freiheit, Offenheit,
Gleichberechtigung und Kooperation fördern.
Mehr Informationen zu Samizdat gibt es auf der
Projekt-Webseite.
es: >
Samizdat es un motor genérico en base a RDF creado para
construir un portal de colaboración y publicación
abierta. Samizdat tiene por objetivo promocionar valores como la
libertad, la sinceridad, la igualdad y la cooperación.
Samizdat est un moteur RDF générique pour la construction
de sites ouaibbe de solidarité et de publication ouverte. Samizdat
souhaite promouvoir la liberté, la transparence, l'égalité et
la coopération.
Samizdat jest ogólny silnik na bazie RDF dla skonstruowania
witryny www dla współpracy i otwartej publikacji. Cel Samizdata jest
popieranie wolność, otwartość, równość i współpraca.
Dla więcej informacji dotyczącej Samizdat, proszę wejdź na
stronie
projektu.
Input form label */
h5 {
font: normal 9pt/10pt Arial,Helvetica,sans-serif;
background: #ffffff;
border: thin solid #336699; }
/* feeds */
div.feed {
margin-top: 0.5em;
padding-top: 0.25em; }
div.feed-name {
font-weight: bold;
margin-bottom: 0.5em; }
div.feed li {
margin-bottom: 0.5em;
border: 0; }
/* notice */
div.notice {
margin: 4px 0 4px 4px;
padding: 0 10px 0 10px;
border: thin dotted #000000; }
/* anchors */
a { text-decoration: none; color: #336699; }
a:visited { color: #336699; }
a:hover { text-decoration: underline; color: #000000; }
samizdat-0.7.1/data/samizdat/css/torun.css 0000664 0000000 0000000 00000012036 14010370125 0020524 0 ustar 00root root 0000000 0000000 /* definitions common to every stylesheet
(due to bug in NN4.x @import should use full path to stylesheet) */
@import url("common.css");
/* global settings */
body {
margin: 0;
padding: 0;
height: 100%;
color: #fff;
background: #000; }
p { margin: 0.5em 0; }
form { margin: 0; padding: 0; }
pre { margin: 0.25em 0; }
h1, h2, h3, h4, h5, h6 { margin: 0; }
/* site head */
#head {
margin: 0 0.7em;
color: #fff;
background: #000; }
#head-left {
text-align: left;
height: 36px; }
#head-right {
font-size: small;
font-weight: bold;
font-variant: small-caps;
text-align: right;
background: #555; }
#subhead {
margin: 0 0.7em;
color: #fff;
background: #036; }
#subhead-right {
font-size: small;
text-align: right; }
#languages {
margin-right: 2px;
text-align: right;
font-size: small; }
/* main section */
#main {
margin: 1em 0.7em; }
/* site foot */
#foot {
position: relative;
left: 5px;
margin: 0 0 2px 0;
color: #999;
font-size: x-small; }
/* custom header and footer */
#front-header, #front-footer {
position: relative;
top: 0; right: 0;
margin: 2px;
font-size: small; }
#front-footer {
background: #024; }
/* content box */
div.box {
margin: 0; }
div.box-title {
margin-bottom: 0.5em;
padding: 1px;
padding-left: 5px;
text-align: left;
font-size: small;
font-variant: small-caps;
color: #fff;
background: #700; }
div.box-content {
text-align: left;
margin-bottom: 1em; }
div.box-content div.box-title {
font-size: 100%;
font-variant: normal;
color: #fff;
background: #555; }
div.box-content div.box-content div.box { }
div.box-content div.box-content div.box-title {
background: #036; }
/* form elements */
div.label {
margin-bottom: 3px; }
input, textarea {
margin-top: 1px;
margin-bottom: 4px;
padding: 1px;
background: #fff; }
input + input { margin-left: 15px; }
select {
margin-top: 1px;
margin-bottom: 4px;
margin-right: 15px;
padding: 0px;
background: #fff; }
input.submit {
margin-top: 4px;
padding: 0; }
p.moderation {
font-weight: bold;
background: #400; }
/* action links */
a.action, a.action:visited {
border: 2px outset #000;
padding-left: 2px;
padding-right: 2px;
text-decoration: none;
color: #f90;
background: #555; }
a.moderator_action, a.moderator_action:visited {
border: 2px outset #000;
padding: 1px 3px 1px 3px;
text-decoration: none;
color: #fff;
background: #700; }
/* resource list */
ul {
list-style-type: none;
padding: 0;
margin: 0; }
ul li {
margin-top: 2px; }
ul li.even { background: #222; }
/* table */
table { width: 97%; }
div>table { width: 100%; } /* MSIE hack */
th { background: #555; }
td, th {
padding: 4px;
vertical-align: top; }
tr { background: #000; }
tr.even { background: #222; }
td.focuses { width: 15%; height: 100%; text-align: left; }
td.links-head { height: 100%; font-weight: bold; background: #555; }
td.links { text-align: left; font-size: small; }
td.features { width: 55%; text-align: left; }
td.updates { background: #036; }
td.updates ul li.even { background: #024; }
/* diff table */
table.diff th { font-weight: normal; }
table.diff td {
vertical-align: top;
text-align: left; }
table.diff td.delete { background: #733; }
table.diff td.add { background: #373; }
/* list foot */
div.foot { text-align: right; }
/* navigation link */
div.nav { font-size: small; }
/* focus link */
div.focus {
font-size: small;
margin: 0 0 0.5em 0; }
/* resource description */
div.resource {
text-align: left;
padding-bottom: 3px; }
div.title { font-weight: bold; }
div.info {
font-style: italic;
font-size: small; }
/* message */
div.message { margin-top: 1px; text-align: left; }
ul div.message {
background: #000; }
div.message div.title {
background: #400; }
div.message div.info {
padding-bottom: 2px;
background: #300; }
div.message div.content {
margin-top: 2px;
padding: 4px 4px 4px 0; }
div.replies div.replies {
padding-left: 1.5em; }
/* markup in a message */
div.content ul {
list-style-type: square;
margin: 0.25em 0;
padding-left: 2em; }
div.content li { border: none; }
h1, h2, h3, h4, h5, h6 {
font-weight: normal;
margin-bottom: 0.25em;
border-bottom: 1px solid #999; }
/* feeds */
div.feed {
margin-top: 0.5em;
padding-top: 0.25em;
border-top: 1px solid #000; }
div.feed-name {
margin-bottom: 0.5em;
padding-bottom: 2px;
background: #400; }
div.feed li {
margin-bottom: 0.5em;
border: 0; }
/* anchors */
a { color: #f90; }
a:visited { color: #990; }
#head a {
color: #f90;
text-decoration: none; }
#head a:visited { color: #f90; }
#head a:hover { text-decoration: underline; }
#subhead a {
color: #f90;
text-decoration: none; }
#subhead a:hover {
color: #f90;
text-decoration: underline; }
div.title a, div.focus a, td.links a {
text-decoration: none; }
div.title a:hover, div.focus a:hover, td.links a:hover {
text-decoration: underline; }
div.box-title a, div.box-title a:visited {
color: #fff; }
div.title a, div.title a:visited, div.info a, div.info a:visited,
div.box-content div.box-title a, div.box-content div.box-title a:visited,
div.focus a, div.focus a:visited, td.links a, td.links a:visited {
color: #f90; }
samizdat-0.7.1/data/samizdat/css/venezuela-centro.css 0000664 0000000 0000000 00000012306 14010370125 0022643 0 ustar 00root root 0000000 0000000 /* definitions common to every stylesheet
(due to bug in NN4.x @import should use full path to stylesheet) */
@import url("common.css");
/* global settings */
body {
margin: 0;
padding: 0;
height: 100%;
color: #710000;
background: #FFF; }
.ja { font: normal 1em/125% Arial,Helvetica; }
p { margin: 0.5em 0; }
form { margin: 0; padding: 0; }
pre { margin: 0.25em 0; }
h1, h2, h3, h4, h5, h6 { margin: 0; }
/* site head */
#head {
margin: 0 0.7em;
color: #000;
background: #fff; }
#head-left {
text-align: left;
height: 36px; }
#head-right {
font-size: small;
font-weight: bold;
font-variant: small-caps;
text-align: right;
background: #fff; /*Publicar :: Compartir :: Buscar*/
}
#subhead {
margin: 0 0.7em;
color: #fff;
background: #fff; /*Preferencias, Ingresar*/
}
#subhead-right {
font-size: small;
text-align: right; }
#languages {
margin-right: 2px;
text-align: right;
font-size: small; }
/* main section */
#main {
margin: 1em 0.7em; }
/* site foot */
#foot {
position: relative;
left: 5px;
margin: 0 0 2px 0;
color: #999;
font-size: x-small; }
/* custom header and footer */
#front-header, #front-footer {
position: relative;
text-align: right;
top: 0; right: 0;
margin: 2px;
font-size: small; }
#front-footer {
background: #FEB; }
/* content box */
div.box {
margin: 0; }
div.box-title {
margin-bottom: 0.5em;
padding: 1px;
padding-left: 5px;
text-align: left;
font-size: small;
font-variant: small-caps;
color: #fff;
background: #700; }
div.box-content {
text-align: left;
margin-bottom: 1em; }
div.box-content div.box-title {
font-size: 100%;
font-variant: normal;
color: #fff;
background: #555; }
div.box-content div.box-content div.box { }
div.box-content div.box-content div.box-title {
background: #036; }
/* form elements */
div.label {
margin-bottom: 3px; }
input, textarea {
margin-top: 1px;
margin-bottom: 4px;
padding: 1px;
background: #fff; }
input + input { margin-left: 15px; }
select {
margin-top: 1px;
margin-bottom: 4px;
margin-right: 15px;
padding: 0px;
background: #fff; }
input.submit {
margin-top: 4px;
padding: 0; }
p.moderation {
font-weight: bold;
background: #400; }
/* action links */
a.action, a.action:visited { color: #f90; }
a.moderator_action, a.moderator_action:visited {
padding: 1px 3px 1px 3px;
text-decoration: none;
color: #fff;
background: #700; }
/* resource list */
ul {
list-style-type: none;
padding: 0;
margin: 0; }
ul li {
margin-top: 2px; }
ul li.even { background: #FEB; }
/* table */
table { width: 97%; }
div>table { width: 100%; } /* MSIE hack */
th { background: #eee; /*Temas Principales - Articulos tematicos - Puestas al Dia Recientes*/}
td, th {
padding: 4px;
vertical-align: top; }
tr { background: #CCC; }
tr.even { background: #FEB; }
td.focuses { width: 15%; height: 100%; text-align: left; }
td.links-head { height: 100%; font-weight: bold; background: #eee; /*Vinculos*/ }
td.links { text-align: left; font-size: small; }
td.features { width: 55%; text-align: left; }
td.updates { background: #FFF; /*Ultimas Noticias impares*/ }
td.updates ul li.even { background: #DDD; /*Ultimas Noticias pares*/ }
/* diff table */
table.diff th { font-weight: normal; }
table.diff td {
vertical-align: top;
text-align: left; }
table.diff td.delete { background: #733; }
table.diff td.add { background: #373; }
/* list foot */
div.foot { text-align: right; }
/* navigation link */
div.nav { font-size: small; }
/* focus link */
div.focus {
font-size: small;
margin: 0 0 0.5em 0; }
/* resource description */
div.resource {
text-align: left;
padding-bottom: 3px; }
div.title { font-weight: bold; }
div.info {
font-style: italic;
font-size: small; }
/* message */
div.message { margin-top: 1px; text-align: left; }
ul div.message {
background: #EC9; }
div.message div.title {
background: #CCC; /*Titulo Noticia*/ }
div.message div.info {
padding-bottom: 2px;
background: #AAA; /*Datos Noticia*/ }
div.message div.content {
margin-top: 2px;
padding: 4px 4px 4px 0; }
div.replies div.replies {
padding-left: 1.5em; }
/* markup in a message */
div.content ul {
list-style-type: square;
margin: 0.25em 0;
padding-left: 2em; }
div.content li { border: none; }
h1, h2, h3, h4, h5, h6 {
font-weight: normal;
margin-bottom: 0.25em;
border-bottom: 1px solid #999; }
/* feeds */
div.feed {
margin-top: 0.5em;
padding-top: 0.25em;
border-top: 1px solid #000; }
div.feed-name {
margin-bottom: 0.5em;
padding-bottom: 2px;
background: #FEB; }
div.feed li {
margin-bottom: 0.5em;
border: 0; }
/* anchors */
a { color: #600; }
a:visited { color: #990; }
#head a {
color: #600;
text-decoration: none; }
#head a:visited { color: #600; }
#head a:hover { text-decoration: underline; }
#subhead a {
color: #600;
text-decoration: none; }
#subhead a:hover {
color: #600;
text-decoration: underline; }
div.title a, div.focus a, td.links a {
text-decoration: none; }
div.title a:hover, div.focus a:hover, td.links a:hover {
text-decoration: underline; }
div.box-title a, div.box-title a:visited {
color: #fff; }
div.title a, div.title a:visited, div.info a, div.info a:visited,
div.box-content div.box-title a, div.box-content div.box-title a:visited,
div.focus a, div.focus a:visited, td.links a, td.links a:visited {
color: #600; }
samizdat-0.7.1/data/samizdat/database/ 0000775 0000000 0000000 00000000000 14010370125 0017615 5 ustar 00root root 0000000 0000000 samizdat-0.7.1/data/samizdat/database/create-mysql.sql 0000664 0000000 0000000 00000006441 14010370125 0022751 0 ustar 00root root 0000000 0000000 -- Samizdat Database Creation - MySQL
--
-- Copyright (c) 2002-2011 Dmitry Borodaenko
--
-- This program is free software.
-- You can distribute/modify this program under the terms of
-- the GNU General Public License version 3 or later.
--
-- RDF Data Model
CREATE TABLE resource (
id SERIAL PRIMARY KEY,
published_date TIMESTAMP -- received date
DEFAULT CURRENT_TIMESTAMP NOT NULL,
literal ENUM ('true', 'false') DEFAULT 'false',
uriref ENUM ('true', 'false') DEFAULT 'false',
label VARCHAR(255)) -- literal value | external uriref | internal class name
-- optimize: store external uriref hash in numeric field
ENGINE InnoDB DEFAULT CHARACTER SET binary;
CREATE INDEX resource_uriref_idx ON resource (uriref);
CREATE INDEX resource_label_idx ON resource (label);
CREATE INDEX resource_published_date_idx ON resource (published_date);
CREATE TABLE statement (
id INTEGER PRIMARY KEY REFERENCES resource,
subject INTEGER NOT NULL REFERENCES resource,
predicate INTEGER NOT NULL REFERENCES resource,
object INTEGER NOT NULL REFERENCES resource,
rating NUMERIC(4,2)) -- computed from vote
ENGINE InnoDB DEFAULT CHARACTER SET binary;
CREATE INDEX statement_subject_idx ON statement (subject);
CREATE INDEX statement_object_idx ON statement (object);
-- Members and Sessions
CREATE TABLE member (
id INTEGER PRIMARY KEY REFERENCES resource,
login VARCHAR(255) UNIQUE NOT NULL,
full_name TEXT,
email VARCHAR(255) UNIQUE NOT NULL,
password VARCHAR(255),
prefs TEXT,
confirm VARCHAR(255) UNIQUE,
session VARCHAR(255) UNIQUE,
login_time TIMESTAMP DEFAULT '0000-00-00 00:00:00',
last_time TIMESTAMP DEFAULT '0000-00-00 00:00:00')
ENGINE InnoDB DEFAULT CHARACTER SET binary;
-- Messages and Threads
CREATE TABLE message (
id INTEGER PRIMARY KEY REFERENCES resource,
parent INTEGER REFERENCES message, -- In-Reply-To:
description INTEGER REFERENCES message, -- abstract or toc or thumbnail
version_of INTEGER REFERENCES message, -- current version
open ENUM ('true', 'false') DEFAULT 'false', -- editing open for all members
hidden ENUM ('true', 'false') DEFAULT 'false', -- hidden from public view
creator INTEGER REFERENCES member, -- From:
language VARCHAR(255), -- language code
title TEXT NOT NULL, -- Subject:
format TEXT, -- MIME type
content TEXT,
html_full TEXT,
html_short TEXT)
ENGINE InnoDB DEFAULT CHARACTER SET binary;
CREATE INDEX message_parent_idx ON message (parent);
CREATE INDEX message_version_of_idx ON message (version_of);
-- Voting Data
CREATE TABLE vote (
id INTEGER PRIMARY KEY REFERENCES resource,
proposition INTEGER REFERENCES statement,
member INTEGER REFERENCES member,
rating NUMERIC(2),
UNIQUE (proposition, member))
ENGINE InnoDB DEFAULT CHARACTER SET binary;
CREATE INDEX vote_proposition_idx ON vote (proposition);
-- Moderation Actions Log
CREATE TABLE moderation (
action_date TIMESTAMP
DEFAULT CURRENT_TIMESTAMP PRIMARY KEY,
moderator INTEGER REFERENCES member,
action VARCHAR(255),
resource INTEGER REFERENCES resource)
ENGINE InnoDB DEFAULT CHARACTER SET binary;
CREATE INDEX moderation_resource_idx ON moderation (resource);
-- Role-based Access Control
CREATE TABLE role (
member INTEGER REFERENCES member,
role VARCHAR(255))
ENGINE InnoDB DEFAULT CHARACTER SET binary;
CREATE INDEX role_member_idx ON role (member);
samizdat-0.7.1/data/samizdat/database/create-pgsql.sql 0000664 0000000 0000000 00000007771 14010370125 0022741 0 ustar 00root root 0000000 0000000 -- Samizdat Database Creation - PostgreSQL
--
-- Copyright (c) 2002-2011 Dmitry Borodaenko
--
-- This program is free software.
-- You can distribute/modify this program under the terms of
-- the GNU General Public License version 3 or later.
--
-- RDF Data Model
CREATE TABLE resource (
id SERIAL PRIMARY KEY,
published_date TIMESTAMP WITH TIME ZONE -- received date with site tz
DEFAULT CURRENT_TIMESTAMP NOT NULL,
-- parent resource (subproperty of dct:isPartOf)
part_of INTEGER REFERENCES resource,
part_of_subproperty INTEGER REFERENCES resource,
part_sequence_number INTEGER,
-- resource type and value
literal BOOLEAN DEFAULT false,
uriref BOOLEAN DEFAULT false,
label TEXT); -- literal value | external uriref | internal class name
-- optimize: store external uriref hash in numeric field
CREATE INDEX resource_uriref_idx ON resource (uriref);
CREATE INDEX resource_label_idx ON resource (label);
CREATE INDEX resource_published_date_idx ON resource (published_date);
CREATE INDEX resource_part_of_idx ON resource (part_of);
CREATE TABLE statement (
id INTEGER PRIMARY KEY REFERENCES resource,
subject INTEGER NOT NULL REFERENCES resource,
predicate INTEGER NOT NULL REFERENCES resource,
object INTEGER NOT NULL REFERENCES resource,
rating NUMERIC(4,2)); -- computed from vote
CREATE INDEX statement_subject_idx ON statement (subject);
CREATE INDEX statement_object_idx ON statement (object);
-- Members and Sessions
CREATE TABLE member (
id INTEGER PRIMARY KEY REFERENCES resource,
login TEXT UNIQUE NOT NULL,
full_name TEXT,
email TEXT UNIQUE NOT NULL,
password TEXT,
prefs TEXT,
confirm TEXT UNIQUE,
session TEXT UNIQUE,
login_time TIMESTAMP WITH TIME ZONE,
last_time TIMESTAMP WITH TIME ZONE);
-- Messages and Threads
CREATE TABLE message (
id INTEGER PRIMARY KEY REFERENCES resource,
open BOOLEAN DEFAULT false, -- editing open for all members
hidden BOOLEAN DEFAULT false, -- hidden from public view
locked BOOLEAN,
creator INTEGER REFERENCES member, -- From:
language TEXT, -- language code
title TEXT, -- Subject:
format TEXT, -- MIME type
content TEXT,
html_full TEXT,
html_short TEXT);
CREATE INDEX message_parent_idx ON message (parent);
CREATE INDEX message_version_of_idx ON message (version_of);
-- Voting Data
CREATE TABLE vote (
id INTEGER PRIMARY KEY REFERENCES resource,
proposition INTEGER REFERENCES statement,
member INTEGER REFERENCES member,
rating NUMERIC(2),
UNIQUE (proposition, member));
CREATE INDEX vote_proposition_idx ON vote (proposition);
-- Moderation Actions Log
CREATE TABLE moderation (
action_date TIMESTAMP WITH TIME ZONE
DEFAULT CURRENT_TIMESTAMP PRIMARY KEY,
moderator INTEGER REFERENCES member,
action TEXT,
resource INTEGER REFERENCES resource);
CREATE INDEX moderation_resource_idx ON moderation (resource);
-- Role-based Access Control
CREATE TABLE role (
member INTEGER REFERENCES member,
role TEXT);
CREATE INDEX role_member_idx ON role (member);
-- Transitive Parts Lookup Table
CREATE TABLE part (
id INTEGER REFERENCES resource,
part_of INTEGER REFERENCES resource,
part_of_subproperty INTEGER REFERENCES resource,
distance INTEGER DEFAULT 0 NOT NULL);
CREATE INDEX part_resource_idx ON part (id);
CREATE INDEX part_part_of_idx ON part (part_of);
-- Tag Cache
CREATE TABLE tag (
id INTEGER PRIMARY KEY REFERENCES resource,
nrelated INTEGER,
nrelated_with_subtags INTEGER);
-- Pending Uploads Queue
CREATE TYPE pending_upload_status AS ENUM ('pending', 'confirmed', 'expired');
CREATE TABLE pending_upload (
id SERIAL PRIMARY KEY,
created_date TIMESTAMP WITH TIME ZONE
DEFAULT CURRENT_TIMESTAMP NOT NULL,
login TEXT NOT NULL,
status pending_upload_status DEFAULT 'pending' NOT NULL);
CREATE INDEX pending_upload_status_idx ON pending_upload (login, status);
CREATE TABLE pending_upload_file (
upload INTEGER NOT NULL REFERENCES pending_upload,
part INTEGER,
UNIQUE (upload, part),
format TEXT,
original_filename TEXT);
CREATE INDEX pending_upload_file_upload_idx ON pending_upload_file (upload);
samizdat-0.7.1/data/samizdat/database/create-sqlite3.sql 0000664 0000000 0000000 00000006212 14010370125 0023164 0 ustar 00root root 0000000 0000000 -- Samizdat Database Creation - SQLite3 (Experimental)
--
-- Copyright (c) 2002-2011 Dmitry Borodaenko
--
-- This program is free software.
-- You can distribute/modify this program under the terms of
-- the GNU General Public License version 3 or later.
--
-- RDF Data Model
CREATE TABLE resource (
id INTEGER PRIMARY KEY AUTOINCREMENT,
published_date TIMESTAMP WITH TIME ZONE -- received date with site tz
DEFAULT CURRENT_TIMESTAMP NOT NULL,
literal BOOLEAN DEFAULT false,
uriref BOOLEAN DEFAULT false,
label TEXT); -- literal value | external uriref | internal class name
-- optimize: store external uriref hash in numeric field
CREATE INDEX resource_id_idx ON resource (id);
CREATE INDEX resource_uriref_idx ON resource (uriref);
CREATE INDEX resource_label_idx ON resource (label);
CREATE INDEX resource_published_date_idx ON resource (published_date);
CREATE TABLE statement (
id INTEGER REFERENCES resource,
subject INTEGER NOT NULL REFERENCES resource,
predicate INTEGER NOT NULL REFERENCES resource,
object INTEGER NOT NULL REFERENCES resource,
rating NUMERIC(4,2)); -- computed from vote
CREATE INDEX statement_id_idx ON statement (id);
CREATE INDEX statement_subject_idx ON statement (subject);
CREATE INDEX statement_object_idx ON statement (object);
-- Members and Sessions
CREATE TABLE member (
id INTEGER REFERENCES resource,
login TEXT UNIQUE NOT NULL,
full_name TEXT,
email TEXT UNIQUE NOT NULL,
password TEXT,
prefs TEXT,
confirm TEXT UNIQUE,
session TEXT UNIQUE,
login_time TIMESTAMP WITH TIME ZONE,
last_time TIMESTAMP WITH TIME ZONE);
CREATE INDEX member_id_idx ON member (id);
-- Messages and Threads
CREATE TABLE message (
id INTEGER REFERENCES resource,
parent INTEGER REFERENCES message, -- In-Reply-To:
description INTEGER REFERENCES message, -- abstract or toc or thumbnail
version_of INTEGER REFERENCES message, -- current version
open BOOLEAN DEFAULT false, -- editing open for all members
hidden BOOLEAN DEFAULT false, -- hidden from public view
creator INTEGER REFERENCES member, -- From:
language TEXT, -- language code
title TEXT NOT NULL, -- Subject:
format TEXT, -- MIME type
content TEXT,
html_full TEXT,
html_short TEXT);
CREATE INDEX message_id_idx ON message (id);
CREATE INDEX message_parent_idx ON message (parent);
CREATE INDEX message_version_of_idx ON message (version_of);
-- Voting Data
CREATE TABLE vote (
id INTEGER REFERENCES resource,
proposition INTEGER REFERENCES statement,
member INTEGER REFERENCES member,
rating NUMERIC(2),
UNIQUE (proposition, member));
CREATE INDEX vote_id_idx ON vote (id);
CREATE INDEX vote_proposition_idx ON vote (proposition);
-- Moderation Actions Log
CREATE TABLE moderation (
action_date TIMESTAMP WITH TIME ZONE
DEFAULT CURRENT_TIMESTAMP PRIMARY KEY,
moderator INTEGER REFERENCES member,
action TEXT,
resource INTEGER REFERENCES resource);
CREATE INDEX moderation_action_date_idx ON moderation (action_date);
CREATE INDEX moderation_resource_idx ON moderation (resource);
-- Role-based Access Control
CREATE TABLE role (
member INTEGER REFERENCES member,
role TEXT);
CREATE INDEX role_member_idx ON role (member);
samizdat-0.7.1/data/samizdat/database/grant-mysql.sql 0000664 0000000 0000000 00000001275 14010370125 0022621 0 ustar 00root root 0000000 0000000 -- Samizdat Database Grants - MySQL
--
-- Copyright (c) 2002-2011 Dmitry Borodaenko
--
-- This program is free software.
-- You can distribute/modify this program under the terms of
-- the GNU General Public License version 3 or later.
--
-- grant access to different use for maximum priviledge separation
GRANT INSERT, UPDATE, SELECT ON resource TO samizdat;
GRANT INSERT, UPDATE, SELECT ON statement TO samizdat;
GRANT INSERT, UPDATE, SELECT ON vote TO samizdat;
GRANT INSERT, UPDATE, SELECT ON member TO samizdat;
GRANT INSERT, UPDATE, SELECT ON message TO samizdat;
GRANT INSERT, UPDATE, SELECT ON role TO samizdat;
GRANT INSERT, SELECT ON moderation TO samizdat;
samizdat-0.7.1/data/samizdat/database/grant-pgsql.sql 0000664 0000000 0000000 00000001272 14010370125 0022577 0 ustar 00root root 0000000 0000000 -- Samizdat Database Grants - PostgreSQL
--
-- Copyright (c) 2002-2011 Dmitry Borodaenko
--
-- This program is free software.
-- You can distribute/modify this program under the terms of
-- the GNU General Public License version 3 or later.
--
-- grant access to different user for maximum priviledge separation
GRANT INSERT, UPDATE, SELECT ON resource, statement, vote, member, message,
tag, pending_upload, pending_upload_file
TO samizdat;
GRANT INSERT, UPDATE, DELETE, SELECT ON part TO samizdat;
GRANT INSERT, SELECT ON moderation TO samizdat;
GRANT SELECT ON role TO samizdat;
GRANT USAGE, UPDATE, SELECT ON resource_id_seq, pending_upload_id_seq
TO samizdat;
samizdat-0.7.1/data/samizdat/database/triggers-mysql.sql 0000664 0000000 0000000 00000004347 14010370125 0023337 0 ustar 00root root 0000000 0000000 -- Samizdat Database Triggers - MySQL
--
-- Copyright (c) 2002-2011 Dmitry Borodaenko
--
-- This program is free software.
-- You can distribute/modify this program under the terms of
-- the GNU General Public License version 3 or later.
--
DELIMITER |
CREATE TRIGGER insert_statement BEFORE INSERT ON statement
FOR EACH ROW
BEGIN
IF NEW.id IS NULL OR NEW.id = 0 THEN
INSERT INTO resource (literal, uriref, label)
VALUES ('false', 'false', 'statement');
SET NEW.id = (SELECT MAX(id) FROM resource);
END IF;
END; |
CREATE TRIGGER insert_member BEFORE INSERT ON member
FOR EACH ROW
BEGIN
IF NEW.id IS NULL OR NEW.id = 0 THEN
INSERT INTO resource (literal, uriref, label)
VALUES ('false', 'false', 'member');
SET NEW.id = (SELECT MAX(id) FROM resource);
END IF;
END; |
CREATE TRIGGER insert_message BEFORE INSERT ON message
FOR EACH ROW
BEGIN
IF NEW.id IS NULL OR NEW.id = 0 THEN
INSERT INTO resource (literal, uriref, label)
VALUES ('false', 'false', 'message');
SET NEW.id = (SELECT MAX(id) FROM resource);
END IF;
END; |
CREATE TRIGGER insert_vote BEFORE INSERT ON vote
FOR EACH ROW
BEGIN
IF NEW.id IS NULL OR NEW.id = 0 THEN
INSERT INTO resource (literal, uriref, label)
VALUES ('false', 'false', 'vote');
SET NEW.id = (SELECT MAX(id) FROM resource);
END IF;
END; |
DELIMITER ;
CREATE TRIGGER delete_statement AFTER DELETE ON statement
FOR EACH ROW
DELETE FROM resource WHERE id = OLD.id;
CREATE TRIGGER delete_member AFTER DELETE ON member
FOR EACH ROW
DELETE FROM resource WHERE id = OLD.id;
CREATE TRIGGER delete_message AFTER DELETE ON message
FOR EACH ROW
DELETE FROM resource WHERE id = OLD.id;
CREATE TRIGGER delete_vote AFTER DELETE ON vote
FOR EACH ROW
DELETE FROM resource WHERE id = OLD.id;
CREATE TRIGGER insert_rating AFTER INSERT ON vote
FOR EACH ROW
UPDATE statement SET rating = (SELECT AVG(rating) FROM vote
WHERE proposition = NEW.proposition) WHERE id = NEW.proposition;
CREATE TRIGGER update_rating AFTER UPDATE ON vote
FOR EACH ROW
UPDATE statement SET rating = (SELECT AVG(rating) FROM vote
WHERE proposition = NEW.proposition) WHERE id = NEW.proposition;
samizdat-0.7.1/data/samizdat/database/triggers-pgsql.sql 0000664 0000000 0000000 00000023243 14010370125 0023314 0 ustar 00root root 0000000 0000000 -- Samizdat Database Triggers - PostgreSQL
--
-- Copyright (c) 2002-2011 Dmitry Borodaenko
--
-- This program is free software.
-- You can distribute/modify this program under the terms of
-- the GNU General Public License version 3 or later.
--
CREATE FUNCTION insert_resource() RETURNS TRIGGER AS $$
BEGIN
IF NEW.id IS NULL THEN
INSERT INTO resource (literal, uriref, label)
VALUES ('false', 'false', TG_ARGV[0]);
NEW.id := currval('resource_id_seq');
END IF;
RETURN NEW;
END;
$$ LANGUAGE 'plpgsql';
CREATE TRIGGER insert_statement BEFORE INSERT ON statement
FOR EACH ROW EXECUTE PROCEDURE insert_resource('statement');
CREATE TRIGGER insert_member BEFORE INSERT ON member
FOR EACH ROW EXECUTE PROCEDURE insert_resource('member');
CREATE TRIGGER insert_message BEFORE INSERT ON message
FOR EACH ROW EXECUTE PROCEDURE insert_resource('message');
CREATE TRIGGER insert_vote BEFORE INSERT ON vote
FOR EACH ROW EXECUTE PROCEDURE insert_resource('vote');
CREATE FUNCTION delete_resource() RETURNS TRIGGER AS $$
BEGIN
DELETE FROM resource WHERE id = OLD.id;
RETURN NULL;
END;
$$ LANGUAGE 'plpgsql';
CREATE TRIGGER delete_statement AFTER DELETE ON statement
FOR EACH ROW EXECUTE PROCEDURE delete_resource();
CREATE TRIGGER delete_member AFTER DELETE ON member
FOR EACH ROW EXECUTE PROCEDURE delete_resource();
CREATE TRIGGER delete_message AFTER DELETE ON message
FOR EACH ROW EXECUTE PROCEDURE delete_resource();
CREATE TRIGGER delete_vote AFTER DELETE ON vote
FOR EACH ROW EXECUTE PROCEDURE delete_resource();
CREATE FUNCTION select_subproperty(value resource.id%TYPE, subproperty resource.id%TYPE) RETURNS resource.id%TYPE AS $$
BEGIN
IF subproperty IS NULL THEN
RETURN NULL;
ELSE
RETURN value;
END IF;
END;
$$ LANGUAGE 'plpgsql';
CREATE FUNCTION calculate_statement_rating(statement_id statement.id%TYPE) RETURNS statement.rating%TYPE AS $$
BEGIN
RETURN (SELECT AVG(rating) FROM vote WHERE proposition = statement_id);
END;
$$ LANGUAGE 'plpgsql';
CREATE FUNCTION update_nrelated(tag_id resource.id%TYPE) RETURNS VOID AS $$
DECLARE
dc_relation resource.label%TYPE := 'http://purl.org/dc/elements/1.1/relation';
s_subtag_of resource.label%TYPE := 'http://www.nongnu.org/samizdat/rdf/schema#subTagOf';
s_subtag_of_id resource.id%TYPE;
n tag.nrelated%TYPE;
supertag RECORD;
BEGIN
-- update nrelated
SELECT COUNT(*) INTO n
FROM statement s
INNER JOIN resource p ON s.predicate = p.id
WHERE p.label = dc_relation AND s.object = tag_id AND s.rating > 0;
UPDATE tag SET nrelated = n WHERE id = tag_id;
IF NOT FOUND THEN
INSERT INTO tag (id, nrelated) VALUES (tag_id, n);
END IF;
-- update nrelated_with_subtags for this tag and its supertags
SELECT id INTO s_subtag_of_id FROM resource
WHERE label = s_subtag_of;
FOR supertag IN (
SELECT tag_id AS id, 0 AS distance
UNION
SELECT part_of AS id, distance FROM part
WHERE id = tag_id
AND part_of_subproperty = s_subtag_of_id
ORDER BY distance ASC)
LOOP
UPDATE tag
SET nrelated_with_subtags = nrelated + COALESCE((
SELECT SUM(subt.nrelated)
FROM part p
INNER JOIN tag subt ON subt.id = p.id
WHERE p.part_of = supertag.id
AND p.part_of_subproperty = s_subtag_of_id), 0)
WHERE id = supertag.id;
END LOOP;
END;
$$ LANGUAGE 'plpgsql';
CREATE FUNCTION update_nrelated_if_subtag(tag_id resource.id%TYPE, property resource.id%TYPE) RETURNS VOID AS $$
DECLARE
s_subtag_of resource.label%TYPE := 'http://www.nongnu.org/samizdat/rdf/schema#subTagOf';
s_subtag_of_id resource.id%TYPE;
BEGIN
SELECT id INTO s_subtag_of_id FROM resource
WHERE label = s_subtag_of;
IF property = s_subtag_of_id THEN
PERFORM update_nrelated(tag_id);
END IF;
END;
$$ LANGUAGE 'plpgsql';
CREATE FUNCTION update_rating() RETURNS TRIGGER AS $$
DECLARE
dc_relation resource.label%TYPE := 'http://purl.org/dc/elements/1.1/relation';
old_rating statement.rating%TYPE;
new_rating statement.rating%TYPE;
tag_id resource.id%TYPE;
predicate_uriref resource.label%TYPE;
BEGIN
-- save some values for later reference
SELECT s.rating, s.object, p.label
INTO old_rating, tag_id, predicate_uriref
FROM statement s
INNER JOIN resource p ON s.predicate = p.id
WHERE s.id = NEW.proposition;
-- set new rating of the proposition
new_rating := calculate_statement_rating(NEW.proposition);
UPDATE statement SET rating = new_rating WHERE id = NEW.proposition;
-- check if new rating reverts truth value of the proposition
IF predicate_uriref = dc_relation
AND (((old_rating IS NULL OR old_rating <= 0) AND new_rating > 0) OR
(old_rating > 0 AND new_rating <= 0))
THEN
PERFORM update_nrelated(tag_id);
END IF;
RETURN NEW;
END;
$$ LANGUAGE 'plpgsql';
CREATE TRIGGER update_rating AFTER INSERT OR UPDATE OR DELETE ON vote
FOR EACH ROW EXECUTE PROCEDURE update_rating();
CREATE FUNCTION before_update_part() RETURNS TRIGGER AS $$
BEGIN
IF TG_OP = 'INSERT' THEN
IF NEW.part_of IS NULL THEN
RETURN NEW;
END IF;
ELSIF TG_OP = 'UPDATE' THEN
IF (NEW.part_of IS NULL AND OLD.part_of IS NULL) OR
((NEW.part_of = OLD.part_of) AND (NEW.part_of_subproperty = OLD.part_of_subproperty))
THEN
-- part_of is unchanged, do nothing
RETURN NEW;
END IF;
END IF;
-- check for loops
IF NEW.part_of = NEW.id OR NEW.part_of IN (
SELECT id FROM part WHERE part_of = NEW.id)
THEN
-- unset part_of, but don't fail whole query
NEW.part_of = NULL;
NEW.part_of_subproperty = NULL;
IF TG_OP != 'INSERT' THEN
-- check it was a subtag link
PERFORM update_nrelated_if_subtag(OLD.id, OLD.part_of_subproperty);
END IF;
RETURN NEW;
END IF;
RETURN NEW;
END;
$$ LANGUAGE 'plpgsql';
CREATE TRIGGER before_update_part BEFORE INSERT OR UPDATE ON resource
FOR EACH ROW EXECUTE PROCEDURE before_update_part();
CREATE FUNCTION after_update_part() RETURNS TRIGGER AS $$
BEGIN
IF TG_OP = 'INSERT' THEN
IF NEW.part_of IS NULL THEN
RETURN NEW;
END IF;
ELSIF TG_OP = 'UPDATE' THEN
IF (NEW.part_of IS NULL AND OLD.part_of IS NULL) OR
((NEW.part_of = OLD.part_of) AND (NEW.part_of_subproperty = OLD.part_of_subproperty))
THEN
-- part_of is unchanged, do nothing
RETURN NEW;
END IF;
END IF;
IF TG_OP != 'INSERT' THEN
IF OLD.part_of IS NOT NULL THEN
-- clean up links generated for old part_of
DELETE FROM part
WHERE id IN (
-- for old resource...
SELECT OLD.id
UNION
--...and all its parts, ...
SELECT id FROM part WHERE part_of = OLD.id)
AND part_of IN (
-- ...remove links to all parents of old resource
SELECT part_of FROM part WHERE id = OLD.id)
AND part_of_subproperty = OLD.part_of_subproperty;
END IF;
END IF;
IF TG_OP != 'DELETE' THEN
IF NEW.part_of IS NOT NULL THEN
-- generate links to the parent and grand-parents of new resource
INSERT INTO part (id, part_of, part_of_subproperty, distance)
SELECT NEW.id, NEW.part_of, NEW.part_of_subproperty, 1
UNION
SELECT NEW.id, part_of, NEW.part_of_subproperty, distance + 1
FROM part
WHERE id = NEW.part_of
AND part_of_subproperty = NEW.part_of_subproperty;
-- generate links from all parts of new resource to all its parents
INSERT INTO part (id, part_of, part_of_subproperty, distance)
SELECT child.id, parent.part_of, NEW.part_of_subproperty,
child.distance + parent.distance
FROM part child
INNER JOIN part parent
ON parent.id = NEW.id
AND parent.part_of_subproperty = NEW.part_of_subproperty
WHERE child.part_of = NEW.id
AND child.part_of_subproperty = NEW.part_of_subproperty;
END IF;
END IF;
-- check if subtag link was affected
IF TG_OP != 'DELETE' THEN
PERFORM update_nrelated_if_subtag(NEW.id, NEW.part_of_subproperty);
END IF;
IF TG_OP != 'INSERT' THEN
PERFORM update_nrelated_if_subtag(OLD.id, OLD.part_of_subproperty);
END IF;
RETURN NEW;
END;
$$ LANGUAGE 'plpgsql';
CREATE TRIGGER after_update_part AFTER INSERT OR UPDATE OR DELETE ON resource
FOR EACH ROW EXECUTE PROCEDURE after_update_part();
samizdat-0.7.1/data/samizdat/database/triggers-sqlite3.sql 0000664 0000000 0000000 00000004546 14010370125 0023557 0 ustar 00root root 0000000 0000000 -- Samizdat Database Triggers - SQLite3 (Experimental)
--
-- Copyright (c) 2002-2011 Dmitry Borodaenko
--
-- This program is free software.
-- You can distribute/modify this program under the terms of
-- the GNU General Public License version 3 or later.
--
CREATE TRIGGER insert_statement AFTER INSERT ON statement
FOR EACH ROW WHEN NEW.id IS NULL
BEGIN
INSERT INTO resource (literal, uriref, label)
VALUES ('false', 'false', 'statement');
UPDATE statement SET id = (SELECT MAX(id) FROM resource)
WHERE rowid = NEW.rowid;
END;
CREATE TRIGGER insert_member AFTER INSERT ON member
FOR EACH ROW WHEN NEW.id IS NULL
BEGIN
INSERT INTO resource (literal, uriref, label)
VALUES ('false', 'false', 'member');
UPDATE member SET id = (SELECT MAX(id) FROM resource)
WHERE rowid = NEW.rowid;
END;
CREATE TRIGGER insert_message AFTER INSERT ON message
FOR EACH ROW WHEN NEW.id IS NULL
BEGIN
INSERT INTO resource (literal, uriref, label)
VALUES ('false', 'false', 'message');
UPDATE message SET id = (SELECT MAX(id) FROM resource)
WHERE rowid = NEW.rowid;
END;
CREATE TRIGGER insert_vote AFTER INSERT ON vote
FOR EACH ROW WHEN NEW.id IS NULL
BEGIN
INSERT INTO resource (literal, uriref, label)
VALUES ('false', 'false', 'vote');
UPDATE vote SET id = (SELECT MAX(id) FROM resource)
WHERE rowid = NEW.rowid;
END;
CREATE TRIGGER delete_statement AFTER DELETE ON statement
FOR EACH ROW
BEGIN
DELETE FROM resource WHERE id = OLD.id;
END;
CREATE TRIGGER delete_member AFTER DELETE ON member
FOR EACH ROW
BEGIN
DELETE FROM resource WHERE id = OLD.id;
END;
CREATE TRIGGER delete_message AFTER DELETE ON message
FOR EACH ROW
BEGIN
DELETE FROM resource WHERE id = OLD.id;
END;
CREATE TRIGGER delete_vote AFTER DELETE ON vote
FOR EACH ROW
BEGIN
DELETE FROM resource WHERE id = OLD.id;
END;
CREATE TRIGGER insert_rating AFTER INSERT ON vote
FOR EACH ROW
BEGIN
UPDATE statement SET rating = (SELECT AVG(rating) FROM vote
WHERE proposition = NEW.proposition) WHERE id = NEW.proposition;
END;
CREATE TRIGGER update_rating AFTER UPDATE ON vote
FOR EACH ROW
BEGIN
UPDATE statement SET rating = (SELECT AVG(rating) FROM vote
WHERE proposition = NEW.proposition) WHERE id = NEW.proposition;
END;
samizdat-0.7.1/data/samizdat/defaults.yaml 0000664 0000000 0000000 00000020521 14010370125 0020544 0 ustar 00root root 0000000 0000000 ---
# defaults.yaml
#
# Settings that can be shared between Samizdat sites
# Object Cache
#
# Location of a SynCache object cache, change this if you have your
# cache on a different machine or answering on a non-standard port. It
# is safe to have one object cache for several sites, as long as site
# names remain unique.
#
cache: 'druby://localhost:9000'
# Remote cache must be allowed to call back to the application process.
# If you move your cache away from localhost to a separate cache server,
# update this parameter to tell your application to bind DRuby to a URI
# that is accessible from the cache server.
#
cache_callback: 'druby://localhost:0'
# Template Paths
#
# List of paths where templates can be found. Paths are examined in the
# specified order: to change only some parts of Samizdat layout, you
# only have to put modified templates in your directory and prepend it
# to this list. You can also specify such new list of template paths in
# site-specific configuration which will override global Samizdat
# defaults only for that site.
#
templates:
- '/usr/share/samizdat/templates/'
- '/usr/local/share/samizdat/templates/'
# Email Interface
#
# This section defines parameters of email notifications generated by
# Samizdat. Uncomment this section to enable email interface, it is
# needed for verification of email addresses and password recovery.
#
#email:
#
# # Email address for the From: field of Samizdat emails. Ideally, this
# # should be a valid address on the same host as the web server (so
# # that it isn't filtered out as spam), emails to that address should
# # be forwarded to administrators of the site.
# #
# address: 'root@localhost'
#
# # Program with Sendmail command-line interface that can be used to
# # send outgoing mails.
# #
# sendmail: '/usr/sbin/sendmail'
# Language Settings
#
locale:
# If you can't put .mo files in a proper place where it can be found
# by GetText facility, specify a custom path here. Specify a full
# path that doesn't depend on the working directory of CGI scripts.
#
#path: '../locale' #
# List of languages supported by the site. First language in this list
# is used as default for users who don't have language selection
# configured in their browsers. The list can include languages for
# which there's no corresponding .mo file, such languages will not be
# available in UI language selection, but will be included in the
# message language selection list in advanced message publishing
# interface.
#
languages: [ en, be, de, eo, es, fr, ja, pl, ru, uk ]
# If set to 'yes', list of languages on the front page will be sorted
# alphabetically. If set to 'no' or unset, the list will be dispayed
# in the specified order.
#
sort_languages: no
# Set to 'yes' to allow users to limit the frontpage to only messages
# in their single preferred language.
#
allow_monolanguage: no
# CSS Themes
#
# List of CSS themes, each theme there should have a corresponding .css
# file in the css/ directory.
#
# Even though one of the themes has the name 'default', this does not
# have to be the default style. Whatever is the first theme in the list
# will be used as the default theme.
#
style: [ default, indy, savannah, sky ]
# Engine Parameters
#
# The timeout, limit, format, and file_extension sections below tune
# different parameters of the Samizdat engine. You don't need to mess
# with most defaults, the only exception can be limit:features_threshold
# parameter, which might need to be adjusted for high-traffic sites.
# Timeouts
#
timeout:
login: 14400 # 4 * 60 * 60 = 4 hours
last: 1800 # 60 * 30 = 30 minutes
moderate: 1800 # 60 * 30 = 30 minutes
pending_upload: 14400 # 4 * 60 * 60 = 4 hours
# Size Limits
#
limit:
content: 1048576 # maximum size of a single message in bytes
page: 20 # number of resources per page
tags: 50 # number of tags in tags list
pattern: 7 # maximum size of search query pattern
features: 5 # number of features on the front page
features_threshold: 1.5 # minimal rating for features
title: 100 # max characters displayed in a title string
short: 1000 # max characters in a short message display
pending_upload_queue_size: 3 # max number of pending uploads per member
parts: 10 # max parts file fields in new message form
# Supported Message Formats
#
# Comment out both 'image' and 'other' sections to disable media upload.
#
format:
# You shouldn't add new inline formats without corresponding changes to
# the Samizdat message rendering code.
#
inline: [ text/plain, text/html, text/textile, application/x-squish ]
# This list can include any formats that can be used in tag.
#
image: [ image/jpeg, image/png, image/gif ]
# All message formats that can't be rendered inline by Samizdat or
# included in tag should go into this section.
#
other: [ application/pdf, application/ogg, audio/ogg, audio/mpeg, audio/x-mp3,
video/mpeg, video/quicktime, video/x-msvideo, video/x-ms-asf,
video/x-ms-wmv, application/vnd.rn-realmedia, video/mp4, video/x-flv,
video/ogg, video/webm, application/x-shockwave-flash,
application/x-bittorrent, application/vnd.oasis.opendocument.graphics,
application/vnd.oasis.opendocument.presentation,
application/vnd.oasis.opendocument.spreadsheet,
application/vnd.oasis.opendocument.text ]
# Extensions that can't be automatically derived from MIME type
#
file_extension: { image/jpeg: jpg, audio/mpeg: mp3, video/quicktime: mov,
video/x-msvideo: avi, video/x-ms-asf: wmv, video/x-ms-wmv: wmv,
video/ogg: ogv, application/vnd.rn-realmedia: rm,
application/x-shockwave-flash: swf, application/x-bittorrent: torrent,
application/vnd.oasis.opendocument.graphics: odg,
application/vnd.oasis.opendocument.presentation: odp,
application/vnd.oasis.opendocument.spreadsheet: ods,
application/vnd.oasis.opendocument.text: odt }
# Plugins: load various plugins that add or change Samizdat
# functionality.
#
# Each plugin is loaded from plugins/, where plugin_name is
# defined below, plugin loading code is responsible for registering
# itself with a site config.
#
plugins:
# Content rendering plugins.
#
content_inline: [ inline_default, plain_text, html, textile, squish ]
content_file: [ file_default, image, video ]
# Member profile plugins.
#
profile: []
# Access control plugins.
#
access: [ role ]
# Tag management plugins.
#
tag: [ tag_default ]
# Route rewriting plugins. Plugins are chained in the order specified here.
#
route: [ language_prefix, blog ]
# Spam protection plugins.
#
spam: [ spam_merge, email_blacklist, poison_field ]
# Plugin options, grouped by plugin name.
#
options:
# Image dimension limits for reduced image versions
#
image:
full: 800
short: 256
# Role-based access control
#
role:
# list of actions allowed to any user (guests can't be allowed to
# vote or moderate due to accountability requirements)
guest: []
# list of actions allowed to any registered member
member: [ post, vote ]
# list of actions allowed only to moderators
moderator: [ moderate ]
# Shared options for spam protection plugins (can be overridden in
# by options for individual plugins)
#
spam:
# List of user roles (guest, member, moderator) that should go through
# spam protection when publishing messages. Set to [] (empty list) to
# disable this sort of spam protection.
#
check_roles: [ guest, member ]
# Spam filter based on a merge of regular expressions
#
spam_merge:
# URL or file path to a meta-list of regular expressions of wiki spam.
#
# Set this to 'http://arch.thinkmo.de/cgi-bin/spam-merge' to pull the
# list of expressions automatically, or refer to local copy like
# /var/www/spam-merge and set up a process of manual or cron-based
# updates.
#
url: '/dev/null'
# Exclude certain URIs from the big wiki-spam URI list
#
exclude:
- 'google-watch\.org'
- 'yahoo-watch\.org'
- 'wikipedia-watch\.org'
- 'ln-s\.net'
- 'namebase\.org'
# Email blacklist: email addresses matching an entry from this list
# will be rejected during registration.
#
email_blacklist:
blacklist:
- !ruby/regexp /@(yopmail.com|i.ua)$/
samizdat-0.7.1/data/samizdat/rdf.yaml 0000664 0000000 0000000 00000005306 14010370125 0017514 0 ustar 00root root 0000000 0000000 ---
# rdf.yaml
#
# Defines essential parts of RDF model of a Samizdat site. Don't touch
# it unless you know what you're doing.
# Namespaces
#
ns:
s: 'http://www.nongnu.org/samizdat/rdf/schema#'
tag: 'http://www.nongnu.org/samizdat/rdf/tag#'
items: 'http://www.nongnu.org/samizdat/rdf/items#'
rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'
dc: 'http://purl.org/dc/elements/1.1/'
dct: 'http://purl.org/dc/terms/'
ical: 'http://www.w3.org/2002/12/cal#'
# Mapping of internal RDF properties to tables and fields. Statements
# over properties not listed here or in 'subproperty:' section below are
# reified using standard rdf::subject, rdf::predicate, and rdf::object
# properties, so at least these three and s::id must be mapped.
#
map:
's::id': {resource: id}
'dc::date': {resource: published_date}
'dct::isPartOf': {resource: part_of}
's::isPartOfSubProperty': {resource: part_of_subproperty}
's::partSequenceNumber': {resource: part_sequence_number}
'rdf::subject': {statement: subject}
'rdf::predicate': {statement: predicate}
'rdf::object': {statement: object}
's::login': {member: login}
's::fullName': {member: full_name}
's::email': {member: email}
'dc::title': {message: title}
'dc::creator': {message: creator}
'dc::format': {message: format}
'dc::language': {message: language}
's::openForAll': {message: open}
's::hidden': {message: hidden}
's::locked': {message: locked}
's::content': {message: content}
's::htmlFull': {message: html_full}
's::htmlShort': {message: html_short}
's::rating': {statement: rating}
's::voteProposition': {vote: proposition}
's::voteMember': {vote: member}
's::voteRating': {vote: rating}
# Map of properties into lists of their subproperties. For each property
# listed here, an additional qualifier field named _subproperty
# is defined in the same table (as defined under 'map:' above) referring
# to resource id identifying the subproperty (normally a uriref resource
# holding uriref of the subproperty). Only one level of subproperty
# relation is supported, all subsubproperties must be listed directly
# under root property.
#
subproperties:
'dct::isPartOf': [ 's::inReplyTo', 'dct::isVersionOf',
's::isTranslationOf', 's::subTagOf' ]
# Map of transitive RDF properties into tables that hold their
# transitive closures. The format of the table is as follows: 'resource'
# field refers to the subject resource id, property field (and qualifier
# field in case of subproperty) has the same name as in the main table
# (as defined under 'map:' above) and holds reference to predicate
# object, and 'distance' field holds the distance from subject to object
# in the RDF graph.
#
transitive_closure:
'dct::isPartOf': part
samizdat-0.7.1/data/samizdat/rdf/ 0000775 0000000 0000000 00000000000 14010370125 0016624 5 ustar 00root root 0000000 0000000 samizdat-0.7.1/data/samizdat/rdf/schema.n3 0000664 0000000 0000000 00000007220 14010370125 0020327 0 ustar 00root root 0000000 0000000 # Samizdat RDF Schema, N3 notation
#
# Copyright (c) 2002-2011 Dmitry Borodaenko
#
# This program is free software.
# You can distribute/modify this program under the terms of
# the GNU General Public License version 3 or later.
#
@prefix : <#> .
# RDF Namespaces
@prefix rdf: .
@prefix rdfs: .
@prefix owl: .
# Dublin Core
@prefix dc: .
@prefix dct: .
# General Resource Properties
# Resource ID
:id
rdfs:subPropertyOf dct:identifier ;
rdfs:domain rdfs:Resource ;
rdfs:comment "Unique (within site) numeric id of the resource." .
# Publication Timestamp
dc:date
rdfs:domain rdfs:Resource ;
rdfs:comment "Date and time when the resource was published on a site." .
# Resource Title
dc:title
rdfs:domain :Message . # todo: expand to rdfs:Resource
# Samizdat Classes
# Member
:Member # todo: integrate with FOAF
rdfs:subClassOf rdfs:Resource .
:login
rdfs:domain :Member ;
rdfs:range rdfs:Literal .
:fullName
rdfs:subPropertyOf dc:title ; # todo: replace with dc:title
rdfs:domain :Member ;
rdfs:range rdfs:Literal .
:email
rdfs:domain :Member ;
rdfs:range rdfs:Literal .
# Messages and Threads
:Message
rdfs:subClassOf rdfs:Resource .
:inReplyTo
rdfs:subPropertyOf dct:isPartOf ;
rdfs:domain :Message ;
rdfs:range :Message .
:isTranslationOf
rdfs:subPropertyOf dct:isPartOf ;
rdfs:domain :Message ;
rdfs:range :Message ;
rdfs:comment "Subject message is a translation of object message into dc:language." .
dc:creator
rdfs:domain :Message ;
rdfs:range :Member .
dc:format
rdfs:domain :Message .
dc:language
rdfs:domain :Message .
:hidden
rdfs:domain :Message ;
rdfs:range rdfs:Literal
rdfs:comment "When true, message is hidden from public view." .
:locked
rdfs:domain :Message ;
rdfs:range rdfs:Literal
rdfs:comment "When true, no replies can be added to the message." .
:content
rdfs:domain :Message ;
rdfs:range rdfs:Literal .
# Content Organization and Filtering
:Tag
rdfs:subClassOf rdfs:Resource ;
rdfs:comment "A characteristic of a resource. In addition to standard tags, each site can create its own tags, representing different topics of interest." .
dc:relation
rdfs:domain rdfs:Resource ;
rdfs:range :Tag .
:subTagOf
rdfs:subPropertyOf dct:isPartOf ;
rdfs:domain :Tag ;
rdfs:range :Tag .
# Voting
:Proposition
rdfs:subClassOf rdf:Statement ;
rdfs:comment "A kind of statement that can be voted upon by site members." .
:rating
rdfs:domain :Proposition ;
rdfs:range rdfs:Literal ;
rdfs:comment "Approvement rating of a proposition as voted by site members. Calculated from individual votes." .
:Vote
rdfs:subClassOf rdfs:Resource ;
rdfs:comment "Vote cast on approvement rating of a statement by a site member." .
:voteProposition
rdfs:domain :Vote ;
rdfs:range :Proposition .
:voteMember
rdfs:domain :Vote ;
rdfs:range :Member .
:voteRating
rdfs:domain :Vote ;
rdfs:range rdfs:Literal .
# Author-Approved Properties
# Version Control
dct:isVersionOf
rdfs:domain :Message ;
rdfs:range :Message .
:openForAll
rdfs:domain :Message ;
rdfs:range rdfs:Literal
rdfs:comment "When true, editing of this message is open for all members." .
# Aggregate Resources
dct:isPartOf
rdfs:domain :Resource ;
rdfs:range :Resource .
:isPartOfSubProperty
rdfs:domain :Resource ;
rdfs:range :Resource ;
rdfs:comment "Specific subproperty of a dct:isPartOf predicate" .
:partSequenceNumber
rdfs:domain :Resource ;
rdfs:range rdfs:Literal .
dct:tableOfContents # compare with dct:hasPart
rdfs:domain :Message .
samizdat-0.7.1/data/samizdat/sites.yaml 0000664 0000000 0000000 00000001037 14010370125 0020065 0 ustar 00root root 0000000 0000000 ---
# sites.yaml
#
# Mapping of server names and URI prefixes to Samizdat site names:
#
# server name: { URI prefix: site name, ... }
#
#
# For directory based site, write something like this:
#
# 'www.example.com': { '/example-site': example, '/example2': example2 }
#
# Same sites served from vhosts should be configured this way:
#
# 'www.example-site.com': { '': example }
# 'www.example2.com': { '': example2 }
#
# Site-specific configuration goes to sites/.yaml
# Default Samizdat site
#
localhost:
'/samizdat': samizdat
samizdat-0.7.1/data/samizdat/templates/ 0000775 0000000 0000000 00000000000 14010370125 0020047 5 ustar 00root root 0000000 0000000 samizdat-0.7.1/data/samizdat/templates/frontpage_index.rhtml 0000664 0000000 0000000 00000002265 14010370125 0024300 0 ustar 00root root 0000000 0000000 <% unless @language_list.empty? %>
samizdat-0.7.1/doc/ 0000775 0000000 0000000 00000000000 14010370125 0014071 5 ustar 00root root 0000000 0000000 samizdat-0.7.1/doc/captcha.txt 0000664 0000000 0000000 00000002714 14010370125 0016241 0 ustar 00root root 0000000 0000000 Samizdat CAPTCHA is configured like other parts if Samizdat.
Configuration is located under the following subtree:
plugins:
options:
spam:
captcha:
Variables used by various parts of plugin:
- number total number of captha files to generate and use
(default: 1000)
- directory where to store image files (default: /var/lib/samizdat/captcha)
- font font used during image generation (default: DejaVu Serif)
- fontsize font size in pixels (default: 24)
- hoffset horisontal offset of first letter (and letter width too)
(default: font size * 5/6)
- unrotate whether letter's baseline rotated with accumulation or not
(default: false)
- web_path virtual path to captcha images directory (default: /captcha/)
- usecookie whether to set or not cookie if first challenge successfully
passed (default: false)
- passed cookie plain content, change it! (default: captcha_passed)
- saltlength cookie salt length, better change it (3..5 is okay)
(default: 4)
To create/delete/update captcha images and database table use
samizdat-manage-captcha. It accepts the following options:
-s, --site=SITE Samizdat site name
-f, --format=[FORMAT] Image format, default one is `png'
-c, --create Create images and database table
-u, --update Update (create new) images
-d, --delete Delete images and drop table
samizdat-0.7.1/doc/concepts.txt 0000664 0000000 0000000 00000022073 14010370125 0016454 0 ustar 00root root 0000000 0000000 Samizdat Concepts
=================
Member
------
Member is a registered user of a Samizdat site (synonyms: poster,
visitor, reader, author, creator). Members can:
- post and edit messages, create tags, relate messages to tags (see Tag
section), and vote on relations (see Proposition and Vote section);
- view messages, use and publish filters based on relations between
messages and tags.
Group of members called "moderators" with access to site moderation
interface can be defined. Moderation interface allows to hide, takeover,
replace and reparent messages and disable non-moderator member accounts.
A member can declare trust or distrust to another member by registering
a vote on a relation between another member and an appropriate tag,
which can range from overall frienship to a trust rating in some
specific area of endeavor. Filtering adjustments can be applied to
messages posted by trusted members.
Note that such trust relation is unidirectional, when member A marks
member B as his friend, site won't assume that A should be treated as
B's friend as well.
There is exlicit design decision behind absense of more strictly defined
member groups. Aside from sheer complexity that this feature would add
to the design, power relationships involved in decision making about
group membership and group responsibility are inappropriate for
cooperative open publishing system.
Message
-------
Message represents basic unit of information inside of Samizdat site
(synonyms: article, post). Messages can be used to represent other
classes of Samizdat resources, such as filters, tags, material items,
etc. Following MIME classes should be supported:
- none (default): sequence of paragraphs stored as is;
restricted to plain text, blank lines separate paragraphs, (HTTP) URLs
on a line by itself may be rendered as hyperlinks;
- text/plain: verbatim plain text;
- text/textile: hypertext in Textile format;
- text/html: hypertext in HTML format;
- application/x-squish: site filter in form of a user-defined Squish RDF
query;
- image/*: jpeg, png, gif [, tiff, svg, jpeg2000];
when referenced from within text message, may be rendered as inline
image or thumbnail;
- audio/*: Ogg Vorbis, mp3 [, RealAudio];
- video/*: avi, Ogg Tarkin, wmv, [ mpeg, RealVideo, QuickTime].
Content types that belong to the supported MIME classes but are
classified under application/* MIME class (e.g. application/x-ogg), may
be aliased into more appropriate MIME class (audio/ogg-vorbis) for
cleaner classification.
Threads can be used to group messages into discussions: follow-up
messages should have "inReplyTo" property pointing to the original
message, with the first message in a thread determined by having no
value to the "inReplyTo" property.
Tag
---
RDF statements are used as a generic mechanism for structuring the
Samizdat site content. Any statement is a resource that represents a
triple of {subject, predicate, object}, where subject is a resource
being described, predicate is a property name, and object is a literal
value or reference to another resource (see http://w3.org/RDF/ for more
details).
Samizdat bases its structure on the concept of a Tag. Tag is a kind of
resource that, when related by an RDF statement to other resources,
allows to group similar resources together and to evaluate resources
against different criteria. In other words, content classification
metadata concentrates around tags.
Any resource can become a tag, but it is recommended to use messages
that carry concise and informative textual content. Being a resource,
tag itself can be related to another tag in the same way as any message.
This allows to create complex structures of related tags, which can then
be used to categorize, filter, and sort large amounts of information
with arbitrary precision.
When presenting user with a list of available tags, site should order
them by usage (number of related resources) to encourage further use of
well-known, popular tags and to reduce role of less popular tags to more
specific resource classification. Site can also offer an option to
classify and filter tags by other criteria, e.g. by relation to some
other tags.
Following general tags may be available at the site setup time:
- Quality: overall quality of the resource;
- Priority: importance of the resource to site members;
- Relevance: how much content of the resource is related to the encasing
aggregate resource (negative Relevance marks off-topic resources).
Each site can create its own custom tags, representing different topics
of interest, site sections, or rating criteria. In addition to the
general tags, following optional rating criteria are suggested:
- Fairness: whether resource fairly represents all sides of the story;
- Representation: readability, quality of prose, cinematics, etc.;
- Factuality: extent of sources usage vs. speculation;
- Novelty: whether resource adds anything new to the body of
information (low Novelty highlights redundant resources);
- FrontPage: whether resource is worthy of adding to the site's default
front page.
Special tag "Friendship" can be used to establish relations of overall
friendship between site members (see Member section).
It is recommended that, instead of the suggested generic tags, resources
of high priority and relevance to the site membership are used as tags
that highlight topics that are of interest to site audience.
Proposition and Vote
--------------------
Proposition is a subclass of RDF statements which can be approved or
disapproved by votes of site members. Vote is a record of vote cast for
particular proposition by particular site member.
Default rating system should let voter select from ratings "-2" (no),
"-1" (not likely), "0" (uncertain), "1" (likely), "2" (yes). Total
rating of proposition is equal to the average value of all votes cast
for the proposition; resources with rating below "-1" may be hidden from
site's default front page.
Exact mechanism of rating calculation and filtering thresholds can be
determined by each site at run time; following considerations should be
taken into account by alternative voting and filtering schemes:
- messages with lower rating but higher absolute number of votes are
probably more important and relevant than higher rated messages with
small absolute number of votes (e.g. quorum threshold);
- vote weight can be adjusted according to relative voting activity of
the voter, or other voter quality determination heuristics;
- default filtering threshold should be adjusted according to the site
activity level and average quality;
- reader should be presented with amount of information that can be
reasonably expected to be comprehensible in a given time scope.
Aggregation
-----------
In addition to filtering by community-approved propositions, site
content can be aggregated, versioned, or otherwise grouped using
following properties, available to the message author.
dct:isVersionOf
Next version of the message, written either by author or by any other
site member. Several new versions of the same message may represent fork
or alternative edit of a message, in that case message with several
"dct:isVersionOf" properties would represent merge of respective
messages.
For further clarification, following versioning-specific tags can be
related to a "dct:isVersionOf" statement by author:
- Correction: minor correction that doesn't change structure or meaning;
- Rewrite: full rewrite of the message;
- Summary: short digest or summary of this and possibly other messages;
- Translation: translation to a different language;
- Mirror: alternative location of the message.
Comment: Proper handling of alternative locations requires web of
trust and message signing to ensure that all alternatives point to
exact copies of the message.
dct:tableOfContents, dct:isPartOf
"dct:tableOfContents" property contains RDF sequence of next-level parts
of the message. Each resource in the sequence should have "isPartOf"
property pointing to the parent message.
Real-world Resource Sharing
---------------------------
Following resource classes can be used to facilitate sharing of
real-world resources between site members:
- Item: an instance of an item; all identical items share the same
"description" property, referring to the message with an item
description, such as table of contents, review, picture, etc.;
- Possession: record of transfer of item instance from one member to
another; "givenTo" property of the last Possession record in the
database constitutes "possessor" property of Item resource.
Comment: Possession record should be created by the item receiver;
care should be taken to avoid fraud in situations when acts of actual
transfer and its registration are separated in time and space.
Service can be registered as an item description too, with individual
items corresponding to points of service, and with no Possession
records. As a non-obvious but useful application of this mechanism,
service item "GnuPG Key Exchange" can be used to publish intent to and
arrange PGP/GnuPG public key exchange (key-signing parties).
Calendar
--------
todo: calendar and collaboration tools knowledge is needed.
samizdat-0.7.1/doc/design-goals.txt 0000664 0000000 0000000 00000010471 14010370125 0017211 0 ustar 00root root 0000000 0000000 Samizdat Design Goals
=====================
Publish
-------
Must:
- allow everyone to post messages immediately readable by everyone (+)
- include multimedia files in messages (+)
- publish summaries on the front page (+)
Should:
- use static publishing (cache as much content as possible into static
web objects, with mirroring and p2p in mind) (~)
- post edited versions of published messages (and provide version
control to keep history of modifications) (+)
- aggregate related messages together (and build complex hypertexts such
as FAQs, media-galleries, educational articles, books, etc.) (~)
- encrypt and sign messages protected by web of trust
- track resources regardless of their location
- not require online access for content preparation
Can:
- PGP-authorized anonymous publishing via Mixmaster
- full p2p hosting and mirroring (Freenet)
- advanced versioning (e.g. approvement by original author)
- advanced aggregation (e.g. alternative slices (a-la CVS tags) of
content, see also custom filtered views in "Search and Filter/Should")
- publish blogs/diaries (that is, personal space for messages from
individual members) (+)
- publish via Atom API
Vote
----
Must:
- vote on message tags (and make tags more universal, allowing to filter
and sort content by overall quality, local relevance, fairness,
quality of prose/content, factuality, novelty, related messages,
section, topic, event, geographic location and so on) (+)
- keep track of all cast votes (for accountability) (+)
- vote for stories to be included on front page (or, to speed-up
publishing, to be excluded from front page) (+)
Should:
- admin-defined quorum
- vote on request for extensive resource usage
- allow or require justification for some kinds of votes
Can:
- pluggable voting mechanisms (e.g. take into account number of votes)
Search and filter
-----------------
Must:
- categorize and group messages by tags (+)
- allow members to add new tags (+)
- set up custom filtered views, publish search filter as a view (~)
- produce standard meta-data (RDF, Dublin Core, FOAF, etc.) (~)
- filter out low-quality messages (may look authoritarian, but actually
it is the same story as with consensus: it's better in the end to
filter them out but still have them available, than to have to resort
to deleting spam and other trash) (+)
Should:
- highlight new messages since last login
- transparent RDF search requests
- filter by ratings as voted by specific member group or member's
friends
- categorized RSS syndication (NewsMonster, Reptile etc.) (+)
Can:
- distributed search across peer sites
- advanced statistical text analysis (content clusters etc.)
- automatic spam filtering (+)
Cooperate
---------
Must:
- allow members to form groups and register friendship relations
- exchange material goods (books, cds, printouts, services, whatever)
- event calendar
Should:
- link calendar with date/time parameters of content metadata (published
date, expires date, urgent until, etc.)
- iCal/xCal calendar exchange, calendar syndication
Can:
- full-featured collaboration and coordination system
- generic issue-tracking mechanism to track tasks, timelines, and
responsibilities
View
----
Must:
- preview published messages (+)
- support publishing content in different languages (i18n) (+)
- support language selection for site interface and messages (l10n) (+)
- use CSS to customize representation for light-weight, text-only,
printer, PDA, text-to-speech or other accessibility devices (~)
Should:
- generate image thumbnails and galleries (~)
- publish and read content via email interface
- track favorite threads and events
Can:
- integrate with Haystack
Develop
-------
Architecture:
- software abstraction layers for: storage/database (+),
content+metadata (+), representation (+), syndication,
searching/indexing (~), distribution/delivery (~)
Low barrier to entry for new developers:
- source code conventions (with options for indent, vim, and emacs) (~)
- documentation: developer documentation (+), source code comments (+),
user manuals (~), on-line help
Security:
- spam filtering (+), IP address blocking
- filter out dangerous CGI parameters and cookies (+)
http://www.cert.org/tech_tips/malicious_code_mitigation.html
- taint all user input (+)
- support OpenID, GnuPG/OpenPGP web of trust, SSL/X.509 certificates and
SSH keys
samizdat-0.7.1/doc/diagrams/ 0000775 0000000 0000000 00000000000 14010370125 0015660 5 ustar 00root root 0000000 0000000 samizdat-0.7.1/doc/diagrams/samizdat_database.dia 0000664 0000000 0000000 00000007315 14010370125 0022005 0 ustar 00root root 0000000 0000000 ]s6}C_b˿vδt}e(ୱ-n>߾! 6?M'3$DXO|:}i&$xy~~"d_e#8|}{H$%Q%"v+ݎ?~`_eBl+(fk~?4Ƌվ_.]tvfMYDŻ^E,عaC(Dp,T{mmLyZ1\/Mkw'MGf,>`O_nvyXNa
xCL@!Lîq a5P~Ro׃ cM8mat?^'qmGxʙ-C לWN$Z2?kDO$ݬy3PD1T2&xhO\sV\PONkDZ:4@ z^X/mk>
p) QUŷqԢ1f[&j{&Q&JԞt$2=?iU·(Ov+9prNyrpх u)[tx G<,jfY v[T~*3B !E@
P(f)@дXj،cf3~:z#1u4;d7WFI'SE(MCs{P:#RQķ<WIFZJ)w9必#:J(:J(:J((m VSkt
p7 i