1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950
|
CMF 1.2 beta (2001/12/07)
New features
- Added docs from the crack ZC docs guys; these docs live in
the top-level 'docs' directory.
- Merged CMFDecor product's artifacts into CMFCore /
CMFDefault; theses aretifacts allow use of filesystem-based
Zope Page Templates as skins.
Note that the CMFDecor skin is the one which will be
receiving all our development focus: we will fix bugs in the
DTML skins, but are not likely to invest significant effort
in upgrading it.
- Hooked 'manage_addFolder' to allow creation of PortalFolders
from both WebDAV, FTP, and ZMI.
- Improved tracebacks from broken FSDTMLMethods, which no longer
indicate that every problem is in RestrictedDTML.
- Made it possible to add CookieCrumblers in nested folders.
You can just drop in a cookie crumbler anywhere to change the
login form for that area of the site. In fact, now you don't
have to create a user folder just to change the login
process.
- Made Link objects editable via FTP / WebDAV.
- Merged Chris Withers' FSSQLMethod into CMFCore.
- Added documentation for installing from CVS.
- Moved permission checking inside personalize_form to make
sure Anonymous cannot access it without logging in (CMF Tracker
Issue 349, thanks go to Bill Anderson).
- Added initial CMF use cases as FSSTXMethods in CMFDefault/help.
- Made validation methods of 'portal_metadata' available to
scripts.
- Made skinned 'index_html' reflect generic view on folder
content, rather than simple title/description of the portal.
- Added "Change and View" submit button to content editing
forms; added check for this button to POST handlers in CMFDefault,
and indirected redirect targets in those methods through
'getActionByID'.
- Added knob for skin cookie persistence to SkinsTool's
"properties" tab. The default policy (unchanged) is that
skin cookies expire at the end of the browser session. if
Skin Cookie Persistence is checked the cookie will last a
full yesr.
- Added an API to the 'portal_actions' interface for querying,
adding, and removing action providers.
- Added a "multi-review" form, enabling a reviewer to publish
or reject multiple items at once, using a common comment.
- Added ZMI tab to DirectoryView to allow re-basing the
filesystem path.
- Added "breadcrumbs" to CMFDecor skins.
- Added initial support for WebDAV locaking to PortalContent.
- Added SortCriterion to list of criterion types for Topics,
to permit sorting of results.
- Added "Local Roles" action to folders to ease collaboration.
- Add scarecrow assertions for the CMF-centric interfaces, and
made the actual interfaces compatible with the standard
Zope Interface package.
- Made FSSTXMethod display skinnable, and added ZPT version.
- Added 'visible' attribute to TypeInformation actions, to
permit indirection (via 'getActionById') without exposing the
action in the CMF UI.
- Extended MetadataTool to allow adding / removing element specs
(i.e., it can now manage policies for "custom" schemas, as
well as Dublin Core).
Bug fixes
- Refactored content and metadata editing methods of
DefaultDublinCoreImpl, Document, and NewsItem to disentangle
the excessive coupling. Each "path" for editing now has a
"presentation"-level method, which directs traffic and
reindexes the object; the underlying methods are much
simplified.
- Fixed inner / named links in Document / News Item (thanks to
Kenichi Sato for the patch!)
- Ensured that editing methods handle WebDAV locks correctly,
using a new 'failIfLocked' assertion.
- Added cookString method to CMFCore.utils for taking a string
and making it id friendly, it also does a string.lower on the
resultant regex. Changed TypesTool to utilize cookString to
ensure that action ids are properly formated if the name is
being used as the id.
- Added 'getReply' to CMFDefault.DiscussionItem.DiscussionItemContainer,
to permit access to an individual reply without needing to
do traversal.
- Corrected pass-through of 'file' and 'seatbelt' arguments in
new 'CMFDefault.Document.edit' method; also sync'ed ZMI edit
method for documents with standard protocol (Tracker #417).
- Added cookString method to CMFCore.utils for taking a string and
making it id friendly, it also does a string.lower on the resultant
regex.
- Made examples in INSTALL.txt less terse, and added notes on
Windows-specific issues (thanks to Johan Mukhsein for the
suggestions).
- Made error message generated by FSPropertiesObject capture the
offending line and line #; also, added logic to allow blank
lines and comment lines beginning with '#' (tracker #338).
- Added fixup to Link objects for user-entered URLs which don't
supply scheme: for example, fix up 'www.zope.com' to
'http://www.zope.com'. (tracker #361)
- Updated CMFCore.CatalogTool to allow new, optional 'idxs'
argument to 'catalog_object' (tracker #405).
- Added a workaround for the problem where the CookieCrumber
set cookies even though the user entered an incorrect password.
RESPONSE.unauthorized() now cancels the cookie response
header. The new login_form and logged_in form both try to
invoke unauthorized(), so make sure you install the new
forms.
- Implement the notional 'search results item' interface for
SkinnedFolder.
- Corrected solecism in Topic (use of 'criteria' for singular);
removed the need to know about the funky generated IDs for
criterion objects. Fixed derived bug in skins (tracker #408).
- Modified error-logging code to avoid potential leaks of
traceback frame.
- Made Document's 'manage_FTPget' use 'EditableBody', rather than
accessing 'text' attribute directly (improves reusability).
Likewise 'Document.SearchableText'.
- Merged Seb Bacon's refactoring of 'getDefaultView' into
'CMFCore.utils._getView'; clients can now specify a view by name,
as well.
- Made the default content type for Image 'image/png', instead
of the unintuitive 'text/html' inherited from DefaultDublinCoreImpl
(tracker #384).
- Corrected typo in ActionsTool which broke actions for the root
portal object (tracker #379).
- Updated the MemberDataTool to use an OOBTree, instead of the
old-style BTree, to store member data wrappers (CMF Tracker 375).
- Corrected 'personalize_form' to use 'getProperty' where feasible,
rather than relying on direct attribute access (tracker #372).
- Removed an incompatibility with LoginManager in
CMFCore.MembershipTool (tracker #365).
- Removed an infinite loop condition that arises when
MembershipTool.createMemberArea gets called inside wrapUser
(this could only happen if "Create Member Area" was checked
in the Membership tool.)
- Added new 'TitleOrId' skin method, and updated skins to
depend on it rather than SimpleItem.title_or_id.
- Made unit tests runnable without reliance on 'zctl test'.
- Corrected initial column set in catalog to include
"ModificationDate" instead of "ModifiedDate".
- Ensured that object is recatalogued (e.g., after setting
'portal_type'; thanks to Florent Guillaume).
- Removed silly dependency of 'CatalogTool.searchResults' on
REQUEST (catalog already does the Right Thing (tm) when no
REQUEST is available). Note that this requires updates to
the 'search' skins, as they didn't pass it in.
- Changed redirect target after rejecting an item to the search
page for pending content items; this resolves the problem
that the non-Manager reviewr who rejects an item no longer
has View permission on it, and therefore gets an Unauthorized
when redirecting to the object's view action.
- Moved generation of the "Add to Favorites" and "My Favorites"
links from the CMFCore/ActionsTool into the
CMFDefault/MembershipTool, which is a more logical location
for it because it relies on information from the membership tool.
- Made Topic directly publishable (like PortalContent), using its
'view' action (or the first action found, if view is not present).
- Set title for newly-created member folders; fixes
breadcrumbs that expect a title on the object.
- Allow URLs with query strings in StructuredText links.
- Update 'news_box' to search based on 'Type', rather than
'meta_type'.
- Fix 'SkinnedFolder.Creator()' to call 'getOwner()' with
info argument.
- Made CookieCrumbler check for 'WEBDAV_SOURCE_PORT'
environment variable (supplied by Zope 2.4.1+), and bail on
intercepting authentication if found.
- Included 'Owner' in list of significant roles returned by
'MembershipTool.getPortalRoles' (e.g., so that the
"Local Roles" interface can allow assignment of it).
- Allow users with local role of "Reviewer" to see the "pending
review" action.
- Made TypesTool, rather than individual type objects,
responsible for generating "immediate view" URL; type
objects now return the newly-created object, which makes
scripting them much simpler.
- Remove fossilized reference to 'getSecurityManager' from
'PortalContent._verifyActionPermissions'.
- Modified the redirect after "Add to Favorites" to us the
view action, rather than 'view'.
- Fixed 'Document.guessFormat()' to use
'utils.html_headcheck()' instead of 'bodyfinder' regex to
detect structured text versus html; avoids recursion limit
for large HTML files.
- Removed spurious 'afterCreate' protocol for content objects.
- Added mapping of 'css' file extension to FSDTMLMethods.
- Modifed PortalFolder.listFolderContents to handle
permission-based filtering; duplicates what skip_unauthorized
is doing in DocumentTemplate/DT_IN.py (but works for ZPT as
well).
- Modified CMFDefault.RegistrationTool.addMember to avoid
flunking validation if properties are not passed (Tracker
#335).
- Applied patch from Chris Withers to 'register' skin method;
the patch which avoids quoting problems for the error message
if a problem occurs (Tracker #339).
- Added 'DiscussionItem.replyCount' (Tracker #328).
'DiscussionItem.hasReplies' now returns only a boolean value.
Standard skins don't call 'replyCount' due to performance
concerns.
- Factored content filtering logic into a Python Script.
- Improved handling of multiple rename targets (thanks to Chris
Withers for the patch.)
- Completed conversion of form targets from DTML Methods to
Python Scripts.
- Improved compatibility with Zope 2.4:
o support for new "restricted execution" mode;
o support for new catalog initialization API.
o updated 'test_all' unit test drivers to use standard
'unittest' module from Python 2.1 (it no longer has
'JUnitTestTextRunner' class).
CMF 1.1 final (2001/06/20)
New features
- Landed "skinned folder" module, which permits creation of
"folderish" types with customized replacements for 'index_html'.
- Added 'run_all_tests' script, to simplify running all unit
tests for CMF-related products.
- Factored out index and column lists, to ease customization
(Tracker #289)
- Modified DefaultDublinCoreImpl#setContributors() to use new
tuplize functionality (the ability to pass in a different
splitter function). If a string is passed in to
setContributors(), it gets split on semicolons. This allows
setting of contributor strings to be like
"Doe, John E (john@doe.a.deer); The Mertz Family Foundation; PBS"
If one so deeply and dearly desired. (The above would turn
into a three element tuple).
- Made it possible to map "normal" Zope objects as content
(Tracker #283):
o Skin and tool code which used to query the object
for its Type in order to then ask the types tool for a
TypeInfo object now just asks the types tool for type
TypeInfo object directly.
o Modified the TypesTool interface to signal that passing an
object to 'getTypeInfo' is acceptable, with the semantic
that the tool will attempt to find a TypeInfo object based
on the tool's type or metatype.
- Expanded signature of Document.CookedBody to change the
header levels Structured Text starts rendering at, and
whether to preserve those changes, following the following
logic:
If the format is html, and 'stx_level' is not passed in or
is the same as the object's current settings, return the
cached cooked text. Otherwise, recook. If we recook and
'setlevel' is true, then set the recooked text and
stx_level on the object.
Bug fixes
- Hardened DirectoryView against objects which raise exceptions
during initial reads (typically due to permission problems);
these objects now capture and log the exception, and create
a BadFile object which allows browsing the traceback via the
ZMI (Tracker #317).
- Stopped polluting the browser with persistent skin cookie;
clear it as well on logout (Tracker #304).
- Cleaned up folder content filtering (Tracker #298, thanks
to Chris Withers for the patch).
- Implement new "List folder contents" permission (Tracker
#320), to prevent non-privileged users from being able to
browse 'folder_contents' (permission is by default mapped
to 'Owner' and 'Manager').
Note that this is really only a UI change:
'PortalFolder.contentIds', 'PortalFolder.contentValues', and
'PortalFolder.contentItems' are still public, to allow for
reasonable "site map" views on folders.
- Use saner type ID listing in 'search_form' (Tracker #324).
- Rewired "POST target" skin methods, replacing filesystem-based
DTML Methods with filesystem-based Python Scripts (from
Tracker #301 -- thanks to Chris Withers).
- Implemented *LARGE* patch to CMFDefault.DiscussionItem and
CMFDefault.DiscussionTool, plus removal of
CMFDefault.Discussions: changed threading strategy to remove
dependency on the path of the "host" content object. Includes
an ExternalMethod, CMFDefault/Extensions/update_discussion.py,
which must be run to convert existing content which contains
discussion.
- Overrode DublinCore's isEffective in CMFCalendar.Event to
always return true; this change prevents blocking view of
the event by standard_html_header.
- Updated INSTALL.txt to note that:
o Use with Zope 2.4.0a1 is *not* recommended.
o CMFDecor requires Zope Page Templates (Tracker #291).
and to describe upgrade process from CMF 1.0.
- Fixed typo in 'Unauthorized' exception raised by
'PortalContent._getDefaultView'.
- Made all content types findable by catalog (Tracker #286).
- Ensured that ContentTypeRegistry's "Test" tab doesn't puke if
no MIMEtype is entered, or if one is entered which doesn't
have a '/' in it (Tracker #292).
- Suppressed overwrite of Subject when no 'Subject' or
'Keywords' headers were present (Tracker #294).
- Ensured that 'Type' is indexed in newly-created
'portal_catalog'.
- Fixed acquisition stripping in PortalContent.objectItems().
- Modified CMFDefault.DublinCore.getMetadataHeaders() to join
Subject by commas, instead of spaces. Since we parse/split
Subject on commas or semicolons now when a document is saved
by FTP or WebDAV, we need to feed it out in the same format.
- Fleshed out security declarations for 'portal_metadata' tool.
- Corrected pathname of 'MemberDataTool.memberdataContents' to
account for use of '_dtmldir' (thanks to Ricardo Newbery for
the patch!).
- Fixed buglet resulting from uninitialized local in
'PortalContent.objectItems' (thanks to Seb Bacon for the
patch).
- Modified stock 'search_form' to query 'Type' rather than
'meta_type'.
- Removed debugging / "paranoia" print statements (thanks to
Chris Withers for the patches).
CMF 1.1 beta (2001/06/01)
New features
- Added CMFCore.utils.keywordsplitter to construct 'Subject'
dublin core header from both 'Keywords' and 'Subject' headers
passed in (meta tags/rfc822).
- CMF Document now uses StructuredTextNG for structured text
handling. Nicely enough, it uses the "with images" features, and
also enables named and inner links.
- CMF Document exposes two new accessor methods for getting at the
"cooked" and editable body, 'CookedBody()', and 'EditableBody()'.
Using the 'cooked_text' and 'text' instance attributes should be
considered deprecated.
- Added new "exemplar" content product, CMFCalendar, which
(for now) adds a simple content object, Event. This product
serves a similar didactic purpose as CMFTopic (which is now
"in the core"): it shows how to build new content types as
filesystem products.
- Implemented improved "safety belt" for concurrent Document
editing. See the dogbowl proposal,
http://cmf.zope.org/rqmts/proposals/ContentSafetyBelt
- Added new filesystem-based skin method type, FSSTXMethod, for
creating "methods" which render STX.
- Exposed "controlled vocabulary" for Subject in
'metadata_edit_form'.
- Gave 'portal_skins' tool its own PUT_factory (Tracker #238).
Allows site builder to create skin methods via WebDAV/FTP,
including ZPT, PythonScripts, etc.
- Implemented "outbound" segment of the "Syndication tool"
proposal, q.v.,
http://cmf.zope.org/CMF/Members/andrew/folderRSS
- Made 'PUT_factory' use new 'content_type_registry' tool.
- Made 'PUT_factory' use 'invokeFactory', so that objects
created via PUT have their 'portal_type' set properly.
- Added ContentTypeRegistry class and related predicates for
mapping PUT requests (name,content_type,body) to type object
names.
- Allowed Reviewers to "retract" published content owned by
others.
- Added "Overview" ZMI view to tools.
- Added "Dublin Core" ZMI view to PortalContent; added an
editing view for Document and derivatives.
- Added "drop-in" workflow objects to the WorkflowTool,
including the ability to map workflows onto content types.
- Changed CMFDefault.Portal to install CMF Topic by default
when building a new CMF Site.
- Added a new criteria type, *FriendlyDateCriterion*, to
CMFTopic for building queries like 'When effective_date is
less than five days old'.
- Implemented 'portal_metadata' tool. See the dogbowl
proposal,
http://cmf.zope.org/rqmts/proposals/completed/metadata_tool.
- Extended DirectoryView objects to reload when the directory
they represent has changed, if Zope is running in debug mode.
- Added hooks to CookieCrumbler to permit site managers to
customize seting/expiring of the authentication cookie by
adding PythonScripts; two default filesystem implementations
are in CMFDefault's "control" skin.
- Extended TypesTool to deal appropriately with DTML factory
methods (e.g., for ZClasses).
- Made FSDTMLMethods searchable from the ZMI (Issue PTK(251)[]).
Bug Fixes
- Added 'manage_beforeDelete' to DiscussionItemContainer class,
and propagated to it from content deletion (Tracker #269).
- Only display the "join" action if the user has the "Add
portal member" permission.
- Check for appropriate REQUEST variables before invoking
CopySupport machinery, return a nice 'portal_status_message'
instead of allowing the traceback to kick in (Tracker #247).
- Initialize default DublinCore metadata for the site, so that
*some* value is available everywhere (Tracker #285).
- Add module-level globals aliases, to permit other products
to use elements of skins (Tracker #273).
- Replaced 'metadata_edit' DTMLMethod with PythonScript.
- Updated 'metadata_edit' to avoid clearing values not passed
in REQUEST (Tracker #268).
- Removed spurious whitespace being added to Subject.
- Fixed FSPythonScript to open file in text mode, so that
Windows verstions with CR don't cause the parser to choke
(Tracker #284).
- Simplified login-disabling logic in CookieCrumbler.
- Added '<base>' tag to headers of Document, NewsItem, and
DiscussionItem so that relative links work properly.
- Fixed the ActionsTool to suppress adding a trailing '/' to
"empty" action URL's.
- Fixed Document's content type sniffing to deal with odd case
in which "entire" HTML document was embedded as an STX
example.
- Replaced literal string permissins with "named permissions",
imported from modules in most places. (Please report any
which escaped!)
- Moved 'factory_type_information' registry entries back out
to the relevant modules (instead of lumping them in
CMFDefault.Portal).
- Simplified NewsItem to "Document with a twist" (NewsItems now
inherit lots of useful behavior from Document.
- Aliased DublinCore's Format() as 'content_type', so that
Zope's WebDAV support will do the Right Thing (TM) when
handling a PROPFIND.
- Suppressed "eager redirect" behavior in CookieCrumbler for
FTP or WebDAV (note that WebDAV fix only works for "extra"
HTTP methods; GET/PUT/POST still redirect).
- Made sure to update the catalog when a content object's
parent is deleted / moved (Tracker #261).
- Fixed lossage to File objects when no upload supplied
(Tracker #271).
- Fixed "Add to Favorites" when applied to Folders.
- Suppressed "Members" link in topbar (pointed to 'roster' method)
for users who would not be able to see it.
- Fixed irritating bugs in setting of skin-selection cookie.
- Removed ugly '_mimetype_registry' hack for 'PUT_factory'.
- Fixed a bug in CMFDefault.Document with PUT that only affected
FTP: when a StructuredText document that contained a full HTML
example (complete with <html>, <head>, and <body> tags) in its
body, it would pass the "does it smell like HTML" test and throw
everything away that wasn't inside the first matching pair of
<body> tags it found. Funnily enough, this bug was exposed when
trying to save an article about how to use FTP with Zope and the
CMF that contained such an example.
- Fixed glitch caused by '<dtml-return>' in
CMFDefault/skins/control/reconfig.dtml. Thanks to Hans de Wit
<hw@scp.nl> for reporting this!
- Allowed 'portal_type' to be a method, as well as an attribute
(eases ZClass-as-content).
- Fixed search form to pass 'created' instead of 'date' (probably
need 'modified', too); also, added selection list for 'Subject',
and fixed the "Last Month" option value.
- Fixed non-import in CMFCore/WorkflowCore.py (Tracker #239,
thanks to 'snej' for the patch).
- Updated CatalogTool to handle searchable vs. displayable DublinCore
dates properly.
- Replaced usage of .id with .getId() all through the CMF, to
conform with the new SimpleItem API. Thanks to Jens Quade
<jq@jquade.de> for pointing this out. (Issue PTK(241)[]).
- Extended 'index_html' to render portal description using STX
(Tracker #246).
- Updated CMFDefault skins to use Contentish.getIcon, including
the portal catalog. This greatly simplifies using ZClasses as
content. In CMFDefault/scripts you will find
'convertCatalogGetIconColumn.pys), a Python Script that will
convert your existing Catalog to use 'getIcon' instead of
'icon' (Issue PTK(244)[]). Also, synched interface definition
to show the 'relative_to_portal' argument.
- Extended 'folder_factories' to filter type objects using
'isConstructionAllowed' in 'PortalFolder.allowedContentTypes'
(Tracker #249).
- Fixed display of replies on discussion items.
- Made appropriate use of 'portal_url', instead of BASEPATH
ad hockery, in skin methods (Tracker #259).
- Synched interface definition of 'Contentish.getIcon' with
reality (documented 'relative' parameter).
- Fixed "Ever" entry in 'search_form' to use a value safe in
timezones east of GMT (Tracker #236).
- Deprecated the CMFDefault.File.download method; it is still
available, but is no longer called by the current CMF skin,
nor is index_html aliased to it.
The method was necessary when the "View' method was the
default action when calling the URL of the File object, this
is no longer the case. The setting of the Content-Disposition
header is not needed when using the absolute URL of the
object, and causes certain browsers to misbehave.
CMF 1.0 final (2001/03/29)
- Removed embedded spaces in 'portal_status_message' strings
(thanks to Dieter Maurer for pointing this out)
- Added 'index_html' (copy/paste from CMFCore.PortalContent?!?) so
that topics become directly publishable (thanks to Dieter
Maurer for pointing this out).
- Removed references to 'Images/' in skin DTML, adding an extra
item to the default skins' lookup path. In CMFDefault/scripts
you will find 'addImagesToSkinPaths.pys', a Python Script that
adds the extra name to all your skin paths. (Tracker issue
#205).
- Added FSPythonScripts, allowing filesystem-based skins to
expose customizable PythonScripts.
- Fixed CMF Tracker item (207), "HTML test when editing a Portal
Document is ambiguous". Now, the same regular expression used
to scoop out the contents of the <body> tags, which is case
insensitive, is also used to detect whether the document may
be HTML.
- Converted physical path to string (Tracker #224).
- Fixed 'Creator' metadata for DiscussionItems (tracker issue
#206, thanks to Jeff Sasmor for the patch!).
- Added simple search field for 'Subject' (Tracker #213).
- Fixed CMF Tracker issue 211, "Topics have Folder icon" by
finally moving the Topic icon into the skins, and writing a
custom icon() method that uses getIcon (Subclassing from
PortalFolder made this behavior strange).
- Changed CMFDefault.Document__init__ to call self.edit at the
end, instead of self._parse, which means that HTML can finally
be passed into the constructor. Unit tests verify that
initializing with just the 'id' gives the proper results.
- Added installation script (external method) for CMFTopic.
- Ensured that content metatypes show up in the types list of the
portal_catalog tool (Tracker issue #209, thanks to Jeff
Sasmor).
- Fixed unwanted multiple font reductions on 'recent_news'
(Tracker issue #215).
- Changed visited link color to enhance readability.
- Fixed PNG transparency of logo (for NS 4.7).
- Allowed Contributors to publish content directly (Tracker
issue #216).
- Gave more real estate to skin path fields (Tracker issue
#226).
- Added simple listing of subtopics to the default view (Tracker
issue #214).
- Regularized DiscussionItem.absolute_url (further work on
Tracker issues #203 & #206).
- Made 'addToFavorites' work as skinned method of target, and
work for DiscussionItems (Tracker issue #227).
- Moved actual mail sending into CMFDefault.RegistrationTool, to
avoid having to give proxy roles to the skin methods involved
(Tracker issue #160).
- Add member count to roster display.
- Made 'review_state' workflow info publically visible.
- Made DiscussionItem.getReplies() and
DiscussionItemContainter.getReplies() show only 'published'
replies (allows retraction, for now).
- Fixed WorkflowAction.__call__ to use the correct method name
for exception notification (Tracker issue #232).
- Ensure that reply's Creator propagates through preview (thanks
to Jeff Sasmor for reporting that our fix to Tracker issue
#206 missed the "Preview" case).
- Removed crufty calls to registerPortalContent.
- Trimmed over-long item IDs in actions box (Tracker issue #
234; thanks to Jeff Sasmor and Steve Alexandar for the patch).
CMF 1.0 beta (2001/03/05)
* Migrated from old PTK repository on cvs.zope.org.
* Changed package and module names: 'PTKBase' has become
(mostly) 'CMFCore'; 'PTKDemo', 'CMFDefault'.
* Added package 'CMFTopic', which provides a new content type,
'Topic'; topics are "logical" folders, which aggregate
content based on catalog searches against metadata.
* Revised discussion mechanism to store discussion with its
underlying content (rather than in members' "Correspondence"
folders).
* Mad the membership system agnostic to the kind of user
folder, including whether it is found in the portal or not.
* "Skinned" the portal UI and all the content objects,
enabling portal managers to replace it "piecemeal", safely.
* Implemented local type registration, allowing portal
managers to configure and extend the types addable in the
portal.
* Add 'PortalFolder.allowedContentTypes' and supporting machinery
in type info objects, to permit configuration of the content
types addable to a given folder type.
0.10alpha (2001/02/02)
* Fixed breakage of "reply" feature introduced by new
constructor regime (PTK Tracker #159).
* Make creation of an 'acl_users' in the portal itself optional.
* Add mapping of external roles (i.e., belonging to a user
retrieved from an acquired user folder) onto "portal-specific"
roles. For example, users from the root user folder may
have the "Employee" role; the 'portal_membership' tool can
map this role onto the "Member" role needed by the portal.
* Corrected HTML quoting of Document text (PTK Tracker #154).
* If content_url is not None and the user has their own member
folder (as returned by 'portal_membership.getHomeUrl') then
two new actions will show up in the user-related action box:
- "Add to Favorites", adds an item to the user's "Favorites"
folder, which will get created underneath the user's home
folder if not present.
- "My Favorites", linked to the Favorites folder (if the
member has one).
* Add 'Favorites' content type (derived from 'Link', optimized
for objects within the same site).
* Add 'PTKBase.interfaces.Contentish', an interface describing
non-metadata methods for all content objects.
* Added cool new portal icon -- thanks to Michael Bernstein!
* Add 'simple_metadata' and 'metadata_help' methods, for easing
"constructorish" capture of metadata. Also demos "skinning"
object-specific DTML.
* Rearranged base classes to deal with the fact that SimpleItem
now has a _setId() method.
* Added a "quick start" script for creating a new INSTANCE_HOME
sandbox (e.g., to allow easy experimentation with new-style
portal).
* Remove "metadata" editing from most "normal" edit forms.
* Tweak stylesheets to make Netscrape 4.x more happy (links on
secondary accent areas wouldn't show).
* Enforced standard construction interface (only 'id' is
required) on all "stock" content types.
* Added default factory registration in 'portal_types' for all
"stock" content types.
* Add 'portal_types' tool, allowing registry of type / constructor
information about portal content which may be created in a given
portal instance (replaces 'Wizards' folder as type registry).
* Added the description property to those attributes shown on the
"view" screen for a file object (PTK Tracker #153).
* Added credentialsChanged hook which can now work with
CookieCrumblers.
* Added Shane Hathaway's CookieCrumbler product, which spoofs
HTTP Basic Auth for "don't know from cookies" user folders.
* Add object for mapping property lists as filesystem object (to
support parameterized stylesheet). These objects are
customized as normal Folders, which allows a great deal of
flexibility.
* Corrected 'PTKDemo.File.edit' to avoid replacing file contents
with empty string when no file is uploaded (PTK Tracker #152).
* Remove distribution-tab verisons of TTW products.
* Remove derived UML model files (UML-HTML).
* Added the PortalGenerator class, which is a subclassable portal
instance creator, and created a new addable meta type.
* Removed ZClass dependency from PropertiesTool.
* Corrected glitch that 'PTKDemo.PortalObject.manage_options'
was inherited from ObjectManager rather than PortalFolder.
* Add 'PUT_factory' to PTKBase.PortalFolder (make it replaceable,
too!)
* Register PTKDemo content class metatypes with PTKBase.PortalFolder's
MIME-type registry.
* Unscrew PTKDemo.Document's dependence on vanished
NullPortalResource.
* Clean up CSS in DemoPortal (PTK Tracker #124).
* Remove dependency on PythonMethod in DemoPortal (PTK Tracker #151).
* Integrated user preference for "skin" with 'portal_skins'
options.
* Added capability to filter * 'PortalFolder.content{Ids,ValuesItems}'
based on metadata queries.
* Migrated skins from 'DemoPortal/Interfaces' folders into
filesystem skins directories.
* Improved integration of FSDTMLMethod and FSImage with output from
the FSDump product.
* New tab for the member data tool: 'contents' displays the number
of members stored in the member data tool and also the number
of "orphaned" members, meaning those that do not appear in the
underlying acl_users anymore. a button is provided to "prune"
those orphaned members.
* Added methods to examine the contents of the meber data tool and to
prune all those members who have been deleted out of the underlying
'acl_users'.
* Fixed bug when adding the mailhost during Portal initialization.
* Added the portal_memberdata tool, which can wrap any user object with
member properties. Yeehaw! the portal no longer needs a special
user folder!
* Add 'portal_skins' tool, enabling safe TTW customization of the default
portal UI, which will be delivered as filesystem-based skin folders.
Huge kudos to Shane Hathaway, who figured out a sane way to do this!
* Extend fix for PTK Tracker #149 to 'generic' and 'sweng' interfaces.
* Append '/view' to search results in order to allow navigation
to objects which don't use standard header/footer in their
'index_html', e.g., Images. (PTK Tracker Issue #149)
* Add meta_type to DiscussionItem (PTK Tracker Issue #150).
* Integrate Dan Pierson's patch to show discussion threads inline
(PTK Tracker issue #93).
* Fix PTK Tracker #145 (PTKDemo/Portal.py or MailHost broken): the
2000/12/08 hotfix removed the "legacy" name, 'manage_addMailHost'.
* Fix PTK Tracker #148 ('Table rows need vertical align')
* Fix PTK Tracker #147 ("PTKDemo's Metadata HTML is ugly").
* Fix PTK Tracker issue #136 ('CSS selection broken').
* Fix Tracker issue #141 ('Wizard product has broken subobjects list').
* Remove redundant 'description' arg from constructors (PTK Tracker
issue #142; thanks to jon@totient.demon.co.uk for reporting this).
* Enable FTP upload/creation of NewsItems
* Add the ability to query and set DublinCore metadata via FTP:
- Updated PTKDemo.DemoDublinCore.DemoDublinCore to add a
method, 'getMetadataHeaders()', which builds a list of
DublinCore headers, suitable for inclusion in <meta> tags
or in "Structured Text Headers".
- Updated PTKDemo.Document.Document to export/import the
metadata when accessed via FTP.
* Fix PortalFolder.all_meta_types() to allow non-content.
* Fix PortalFolder.listActions() to return a tuple, not a list
|