Commit Graph

28 Commits (3cb492d9792afe89a83d668d257a826a116ad3a2)

Author SHA1 Message Date
Paul Schneider e8bf2dd8fa Documentation et fiche préstataire
Une nouvelle page de doc : la page des fonctionalités, [Features.md](Features.md),
au format Markdown.

* p8-av4.jpg:
* p8-av4.l.jpg:
* p8-av4.xs.jpg: p8-av4

* Performer.ascx: Implémente la fiche préstataire, avec son éventuel
  lien vers le blog

* ITContentProvider.csproj: ...

* NpgsqlBlogProvider.cs: implémente le compteur de billet en base de
  données

* Presta.csproj:
* TestAPI.csproj:
* YavscClient.csproj:
* fortune.csproj:
* WebControls.csproj:
* SalesCatalog.csproj:
* NpgsqlMRPProviders.csproj:
* NpgsqlBlogProvider.csproj:
* NpgsqlContentProvider.csproj: ...

* README.md: mise à jour des priorités

* Yavsc.sln: ajout du fichier "Features.md" à la solution

* BlogProvider.cs: doc xml

* BlogManager.cs: implémente un accès au compteur de billet
9 years ago
Paul Schneider d89b6c39df nouvelles configs
* Makefile:
* Yavsc.sln:
* pkg.mdproj:
* Presta.csproj:
* TestAPI.csproj:
* YavscModel.csproj:
* YavscClient.csproj:
* fortune.csproj:
* WebControls.csproj:
* SalesCatalog.csproj:
* ITContentProvider.csproj:
* NpgsqlMRPProviders.csproj:
* NpgsqlBlogProvider.csproj:
* Yavsc.csproj:
* NpgsqlContentProvider.csproj: nouvelles configurations de
  déploiement

* LocalizedText.resx:
* LocalizedText.fr.resx:
* LocalizedText.Designer.cs:
* LocalizedText.fr.Designer.cs: internationalisation
9 years ago
Paul Schneider fe97f14831 Réorganisations.
La page de reservation par défaut est maintenant la reservation dite simple.

Fonctionnalités en cours de développement:

1) la reservation dite simple
2) la notification à la reservation
3) l'activité principale exercée
4) l'integration d'un premier thème clair

* MEA.sql: définit la valeur MEA du profile (Main Exerted Activity)
  dans la base de donnée

* Booking.aspx: Imlémente la vue du formulaire de reservation simple,
c'etait avant la reservation classique, sur une période plutôt qu'un
  jour.
La reservation classique est renomée `EavyBooking`.

* SimpleBookingQuery.cs: Implémente une simple commande de
  rendez-vous,
en tant que commande du workflow.

* .gitignore: ignorer les configuration des pré et prod totem.

* SkillEntity.cs:
* SkillManager.cs:
* Skills.aspx:
* SkillProvider.cs:
* SkillController.cs:
* UserSkills.aspx:
* NpgsqlSkillProvider.cs: refactorisation (-Skill+SkillEntity)

* NpgsqlProfileProvider.cs: Fixe un bug introduit avec
  l'implementation des profiles anonymes.

* FrontOfficeController.cs: definit l'interface de cotation des
  compétences attendues

* UserCard.ascx: Imlémente une carte utilisateur.

* Web.config: déclare le code activité principale exercée parmis les
  valeurs du profile authentifié.

* Web.csproj: ajoute les nouveaux formulaire de reservation au projet.

* PerformerProfile.cs: S'assure d'avoir une valeur pour le nom
  d'utilisateur à la création.

* LocalizedText.resx:
* LocalizedText.Designer.cs: "date préférée" en anglais

* LocalizedText.fr.resx:
* LocalizedText.fr.Designer.cs: "date préférée" en français

* Profile.cs: à la creation d'un profile, on doit avoir un nom
  d'utilisateur,
même dans le cas où le profile est anonyme (dans ce cas,
on l'appelle identifiant anonyme).
Sinon, on lève une exception.

* YavscModel.csproj: * refactorisation: le nom `Skill` est celui de
  l'espace,
celui de la classe devient `SkillEntity`.
* Creation de la requête dite simple d'un rendez-vous (pour
  prestation)
à une date donnée (sans heure), concernant simplement une activité.

* EavyBooking.aspx: Implémente la reservation lourde
9 years ago
Paul Schneider 029a80e2c4 Fixes the Site wize skills page,
makes use of Mono.Web.Xdt at deploy time

* PayPalController.cs: implements a Paypal controller

* Abort.aspx: Paypal paiement aborting page

* Commit.aspx: Paypal paiement commit page

* IPN.aspx: Paypal paiement notification page

* Index.aspx: Paypal paiement form page

* WebTasks.dll: thanks to he Marcelo Zabani's coding blog:
<https://mzabani.wordpress.com/2013/09/24/mono-asp-net-project-deployment-with-web-config-xdt-transformations/>

* .gitignore: ignore my new config transformation sources

* pkg.mdproj:
* Presta.csproj:
* TestAPI.csproj:
* fortune.csproj:
* SalesCatalog.csproj:
* ITContentProvider.csproj:
* NpgsqlMRPProviders.csproj:
* NpgsqlBlogProvider.csproj:
* NpgsqlContentProvider.csproj: adds a build target named "Lua"

* Makefile: instead of `deploy`, start Xsp, in the `dist` folder

* Yavsc.sln:
* YavscModel.csproj:
* WebControls.csproj:
* YavscClient.csproj: Lua config

* yavsc.rate.js: refactoring, still needs a cleanning

* RateSkillControl.ascx: give it the `rate-site-skill` `data-type`
  html attribute

* RateUserSkillControl.ascx: cleans an obsolete code chunk

* Web.csproj: Fixes the missing RateSkillControl at deploy time,
adds my deployment config
9 years ago
Paul Schneider 9a2652739b Merge from booking branch 9 years ago
Paul Schneider 0b8b717f3e Adds UI to enrole members 9 years ago
Paul Schneider c90b54d642 Fixes account creation and removal
* NpgsqlMembershipProvider.cs: Fixes the latest commit concerning
  account creation and removal

* YavscController.cs: TODO ...
9 years ago
Paul Schneider cbb596ca04 Fixes the anonymous profile usage
* NpgsqlMembershipProvider.cs: insert a profile record before
  inserting the users record,
to ensure a new foreign key constraint

* NpgsqlProfileProvider.cs: better comments

* YavscController.cs: Fixes the cookies agreement

* HomeController.cs: Finalizes the cookie agreement system.

* YavscHelpers.cs: Adds a "click_action_name" field, to give a text to
  the notification dimissing button.

* App.master: Uses the new field from Notification

* Web.config: No VB code to compile

* Web.csproj: moves Sql files to Sql folder

* LocalizedText.resx:
* LocalizedText.fr.resx:
* LocalizedText.Designer.cs:
* LocalizedText.fr.Designer.cs: I understood ...

* Notification.cs: a new click action name.

* instdbws.sql: permits profile records with no users record
  associated to,
and so, anonymous profiles creation.
9 years ago
Paul Schneider d9d5bb308e Many fixes
* Profile.aspx:
* ProfileEdition.cs: Fixes the username modification

* Book-next.aspx: pollution

* NpgsqlMembershipProvider.cs: xmldoc

* NpgsqlProfileProvider.cs: use default values from configuration

* NpgsqlUserNameProvider.cs: Fixes the username detection

* test-domain-TestAPI.config: profile dates must be returned as
  DateTime

* instdbws.sql: The conversion to a valid .Net DateTime requires a
  credible date time as source value, the null one is not supported.

* style.css: Fixes the new notification style

* AccountController.cs: Fixes the profile edition.
Now using the anti forgery key at login time

* Book.aspx:
* LocalizedText.resx:
* LocalizedText.fr.resx:
* CalendarApi.cs:
* GoogleController.cs:
* LocalizedText.Designer.cs:
* LocalizedText.fr.Designer.cs: WIP booking

* HomeController.cs: code prettying

* Global.asax.cs: Limits the usage of titles in a route to the blog
  controller

* OAuth2.cs: Profile values may be of type DBNull ...

* T.cs: All translated strings will be Html encoded, as expected from
  an html helper

* YavscHelpers.cs: A new method to build a javascript string...

* App.master:
* AppAdmin.master: Notification.body is now a js string literal

* NoLogin.master: sync with the true master

* Login.aspx: Permits the anti forgery key usage

* Estimate.aspx: refactoring

* Web.config: Fixes a later commit on the catalog name space

* Web.csproj: An ajax helper to notify

* ChangePasswordModel.cs:
* RegisterClientModel.cs: A regexp for user name

* LoginModel.cs: A regexp for user name and password

* Profile.cs: A regexp for user name, and profile usage fixes

* UserManager.cs: Checks for username availability before trying to
  modify it

* YavscModel.csproj: `ProfileEdition` class addition

* ChangeLog: should not be indexed

* ChangeLog: useless here

* ValidateAjaxAttribute.cs: Fixes usage of HtmlFieldPrefix

* BookQuery.cs: Start, end hour and role are required

* OtherWebException.cs: useless
9 years ago
Paul Schneider b8446c2d3e Improves notification system
* ICalendarManager.cs: WIP booking TODO a calendar provider

* NpgsqlProfileProvider.cs: Fixes the defaultValue specification from
  config file

* BlogsController.cs:
* AccountController.cs:
* CalendarController.cs: refactoring : the Yavsc controller name

* instdbws.sql: a new profile value : a boolean, `AllowCookies` :'{

* style.css: a class to display notification

* HomeController.cs: Notifies users this site uses cookies (what for
  an information!)
If authenticated, at dimissing this notification, the user's profile
  is updated,
and he'll not mess up anymore with the info.

* App.master:
* YavscHelpers.cs: adds usage of click_action value at
displaying a notification.

* yavsc.js: Implements the notification `click_action`

* Web.config: * enables anonymous profiles
* adds a new `allowcookies` profile property

* Web.csproj: Yavsc controller refactoring

* YaEvent.cs:
* IFreeDateSet.cs: WIP booking

* LocalizedText.resx:
* LocalizedText.fr.resx:
* LocalizedText.Designer.cs:
* LocalizedText.fr.Designer.cs: implements the message "uses cookies"

* YavscModel.csproj: refactoring

* Notification.cs: The Yavsc otification will start as a Google one
  ...
many properties are not yet used, but all seems usefull.

* Web.config: code prettying

* YavscController.cs: Gives Yavsc a concrete base controller
9 years ago
Paul Schneider 303e4fa57b Merge commit 'acd2a473bbf4f3006e40384a45413a4db177b082'
Conflicts:
	ChangeLog
	ITContentProvider/ChangeLog
	Makefile
	NpgsqlBlogProvider/ChangeLog
	NpgsqlContentProvider/ChangeLog
	NpgsqlMRPProviders/ChangeLog
	TestAPI/ChangeLog
	web/App_Themes/style.css
	web/ChangeLog
	web/Helpers/YavscHelpers.cs
	web/Models/App.master
	web/Views/Blogs/UserPosts.aspx
9 years ago
Paul Schneider acd2a473bb Minor changes
* TestAPI.csproj:
* packages.config:
* packages.config:
* packages.config:
* packages.config:
* packages.config:
* ITContentProvider.csproj:
* NpgsqlMRPProviders.csproj:
* NpgsqlBlogProvider.csproj:
* NpgsqlContentProvider.csproj: Npgsql package update

* Makefile: adds a new line to the end of file

* App.master: Indicates that a login permits to comment
9 years ago
Paul Schneider ce1689df7b bug fixes
* Makefile: my deploy config

* NpgsqlMembershipProvider.cs: Fixes a Bug introduced by Npgsql driver
  upgrade

* ResultPages.cs: .

* style.css: other colors

* BlogsController.cs: code cleaning

* GoogleController.cs: refactoring

* ErrorHtmlFormatter.cs: MarkdownDeep calls now come from yavscModel

* YavscHelpers.cs: xmldoc

* Index.aspx: code formatting

* UserPosts.aspx: nothing to note

* Web.csproj: MarkdownHelper has gone to the yavscModel project

* MarkdownHelper.cs:
* BlogEntryCollection.cs: refactoring + extract an intro from Markdown
  for PostInfo*

* YavscModel.csproj: MarkdownHelper integration
9 years ago
Paul Schneider 82de63a0ba Npgsql package upgrade 9 years ago
Paul Schneider 3355f9fed0 * bg.gif:
* asc.gif:
* desc.gif:
* style.css: moved to App_Themes

* style.css:
* bg.gif:
* asc.gif:
* bg.png:
* rect.png:
* asc.png:
* desc.gif:
* jquery-ui.css:
* mdd_styles.css:
* croix.png:
* desc.png:
* style.css:
* jquery-ui.min.css:
* mdd_gripper.png:
* mdd_toolbar.png:
* jquery.timepicker.css:
* mdd_ajax_loader.gif:
* mdd_modal_background.png: moved to /App_Themes

* NpgsqlBlogProvider.cs: * Remove post by id
* Manage collections of entries on a couple (user,title), not a single
  post

* NpgsqlCircleProvider.cs: Fixes the "Match" method.

* IDbModule.cs:
* Edit.aspx:
* Estimates.aspx:
* WorkFlowManager.cs:
* NpgsqlContentProvider.cs: refactoring

* NpgsqlMRPProviders.csproj: new NpgsqlUserName provider

* NpgsqlRoleProvider.cs: simpler init method

* NpgsqlUserNameProvider.cs: impements a UserNameProvider

* MyClass.cs: refactoring from Yavsc.Model

* BlogsController.cs: access control simplified

* FrontOfficeController.cs: Pdf generation made public ni case of
  formatting exception

* mdd_styles.css: Theme -> App_Themes

* style.css: yet another style impact

* AccountController.cs: Fixes the user name modification

* BlogsController.cs: * Fixes the removal process
* On a title and user name, we get collection of posts, not only one.
* Implements an Access on circle

* FrontOfficeController.cs: * implements a new Get method.
* ensure a membership existence before delivering an estimate.

* GoogleController.cs: Fixes the user name modification on a Google
  account

* ErrorHtmlFormatter.cs: nice error message in html (using Markdown
  helper)

* FormatterException.cs: formatter exception exposes error and
  standard output of the process

* TexToPdfFormatter.cs: * generates temporary files in the folder
  returned by Path.GetTempPath()
* throws FormatterException

* Global.asax.cs: new route map:
Blogs/{action}/{user}/{title}
Blog/{user}/{title}
B/{id}
{controller}/{action}/{id}

* App.master: * refactoring: Theme moved to App_Themes
* a link to the logged user's blog
*

* NoLogin.master: refactoring: Theme moved to App_Themes

* Circles.aspx: refactoring : circles now are given as select items

* Login.aspx: fixes the html presentation

* Register.aspx: Fixes a Typo

* Index.aspx: Implements a blog index, due to M&C changes with this
  commit

* RemovePost.aspx: links to the new route to the "RemovePost" action,
  giving it a post id

* RemoveTitle.aspx: fixes a not yet linked page to remove a post
  collection under a given title

* EventPub.aspx: code refactoring

* Writting.ascx: cleans the code

* Web.config: fills the config with new names in the space

* Web.config: configures the new NpgsqlUserNameProvider

* Web.csproj: refactoring and others

* BlogEntryCollection.cs: implement the BlogEntryCollection

* BlogManager.cs: the manager helps to filter on access

* BlogProvider.cs: The title is not unique anymore, and one can modify
  it, post a lot under it, drop all posts under it.
A Post is deleted by id.

* UUBlogEntryCollection.cs: implements a collection of post under a
  given user name.

* UUTBlogEntryCollection.cs: implements a collection of post under a
  given couple (user name, title).

* ListItem.cs: ListItem is declared obsolete in this model, helpers
  can build MVC SelectListItem on data returned by the manager.

* LocalizedText.Designer.cs:
* LocalizedText.fr.Designer.cs: autogenerated from xml

* LocalizedText.resx:
* LocalizedText.fr.resx: new labels

* ChangeUserNameProvider.cs: xml doc

* Profile.cs: the UserName property is read only, and comes from
  authentication, to change it, we set a Name and validate it agains
  the "Profile" method

* UserManager.cs: simpler code a init time

* IContentProvider.cs: implements the new IDataProvider interface

* IDataProvider.cs: defines the new IDataProvider interface

* YavscModel.csproj: includes new classes

* UserPosts.aspx: adds a link to remove a post

* UserPost.aspx: now uses the new BlogEntryCollection object
9 years ago
Paul Schneider 294c54099c Fixes the membership update. 9 years ago
Paul Schneider 87edbaffe5 * cldr.js:
* Web.config:
* ListItem.cs:
* styles.json:
* globalize.js:
* event.js:
* Auth.aspx:
* Book.aspx:
* Login.aspx:
* jquery-2.1.4.js:
* map-load.gif:
* Book.aspx:
* Circle.cs:
* Auth.aspx:
* mapstyle.css:
* date.js:
* Login.aspx:
* mdd_help.htm:
* BlogHelper.cs:
* fit-bounds.png:
* unresolved.js:
* jquery-2.1.4.min.js:
* mapstyle-ie.css:
* FreeDate.cs:
* BookEdit.cs:
* number.js:
* BlogManager.cs:
* plural.js:
* jquery-2.1.4.min.map:
* jquery.googlemaps.js:
* supplemental.js:
* BlogProvider.cs:
* mapstyle.min.css:
* pin-pink.png:
* message.js:
* ChooseADate.aspx:
* pin-azure.png:
* currency.js:
* jquery-2.1.4-vsdoc.js:
* pin-green.png:
* MarkdownDeepLib.min.js:
* flag-azure.png:
* flag-green.png:
* needle-pink.png:
* ChooseADate.aspx:
* niddle-green.png:
* ChooseCalendar.aspx:
* current-location.png:
* jquery.googlemaps.min.js:
* ErrorMessage.aspx:
* ChooseCalendar.aspx:
* relative-time.js:
* GoogleErrorMessage.aspx:
* popup-template-marker.html:
* popup-template-circle.html:
* popup-template-polygon.html:
* popup-template-polyline.html:
* popup-template-rectangle.html:

* Web.csproj:
* YavscModel.csproj:
* YavscClient.csproj:
* fortune.csproj:
* WebControls.csproj:
* SalesCatalog.csproj:
* ITContentProvider.csproj:
* NpgsqlMRPProviders.csproj:
* NpgsqlBlogProvider.csproj:
* NpgsqlContentProvider.csproj: Moves to Mono framework

* NpgsqlCircleProvider.cs: Makes Circles private, or not

* OAuth2.cs:
* CircleController.cs:
* AccountController.cs:
* NpgsqlContentProvider.cs: Impacts htmldoc

* NpgsqlMembershipProvider.cs: Makes possible to change the UserName

* NpgsqlRoleProvider.cs: Drops this SQL code, which is actually
  maintained in Web/instdbws.sql

* PeopleApi.cs:
* GoogleController.cs:
* PaypalController.cs: Refactoring

* Global.asax.cs: Dropped an useless url mapping

* MarkdownHelper.cs: Package update

* App.master:
* NoLogin.master: Site's favicon update

* Circles.aspx: TO BE FIXED :-D

* UserPost.aspx: Comment only when logged in

* instdbws.sql: Circle public

* packages.config: package update
9 years ago
Paul Schneider 4ba20187e8 * instdbws.sql: Creates a new table to store
one time usage passwords

* NpgsqlMembershipProvider.cs: should fix a bug at resetting the
  password

* AccountController.cs: Allows the questions and answer to be
  specified for password recovery, at registration time

* RegisterClientModel.cs: Implements the Question and answer in the
  registration model
9 years ago
Paul Schneider 04f7058444 Fixes the Google registration since usage of NuGet for Npgsql 9 years ago
Paul Schneider 282b750d53 * NpgsqlCircleProvider.cs: Refactoring: Npgsql prefix
* Yavsc.sln:
* pkg.mdproj: creates a packaging project

* CircleController.cs: adds a Circle controller

* NUnitTestClass.cs: xml doc

* Web.config:
* Web.csproj:
* TestExec.cs:
* packages.config:
* TestByteA.cs: trying to use xUnit

* YavscClient.csproj:
* ITContentProvider.csproj:
* NpgsqlBlogProvider.csproj:
* NpgsqlMRPProviders.csproj:
* NpgsqlContentProvider.csproj: Helps to fix packaging, and cleans
  dependencies
9 years ago
Paul Schneider 31734da129 * Web.config:
* Web.csproj:
* instdbws.sql:
* packages.config:
* TestByteA.cs:
* App.master:
* MyClass.cs:
* LocalizedText.resx:
* Index.aspx:
* LocalizedText.fr.resx:
* packages.config:
* Details.aspx:
* packages.config:
* packages.config:
* packages.config:
* EventPub.aspx:
* LocalizedText.Designer.cs:
* FileSystemController.cs:
* FrontOfficeController.cs:
* NpgsqlContentProvider.cs:
* ITContentProvider.csproj:
* FileSystemManager.cs:
* Circle.cs:
* YaEvent.cs:
* NpgsqlBlogProvider.csproj:
* NpgsqlMRPProviders.csproj:
* EventPub.cs:
* NpgsqlContentProvider.csproj:
* EventType.cs:
* UserPrefs.cs:
* CalendarController.cs:
* EstablishmentType.cs: 

* ITCPNpgsqlProvider.cs:
* NpgsqlBlogProvider.cs:
* NpgsqlRoleProvider.cs:
* NpgsqlProfileProvider.cs:
* NpgsqlMembershipProvider.cs: Npgsql Command.Parameters.Add is
  obsolete

* Commande.cs: FileSystem ctor needs a format parameter in order to
  use path by membership

* google-services.json: intented to be used to build android
  application able to receive push notification via GCM
9 years ago
Paul Schneider 7b0dd0c1e2 * Price.cs:
* Service.cs:
* Price.cs:
* PhysicalProduct.cs: Billing

* SetPrice.cs: Billing


* MyClass.cs:
* ResultPages.cs:
* NpgsqlRoleProvider.cs:
* NpgsqlProfileProvider.cs:
* NpgsqlMembershipProvider.cs: xml doc

* SalesCatalog.csproj: cleanning

* YavscModel.csproj: coding policies
10 years ago
Paul Schneider 0ec856db45 * NoLogin.master:
* StaticPage.master: StaticPage is not the good name for this file

* YavscModel.csproj:
* WebControls.csproj:
* fortune.csproj:
* YavscClient.csproj:
* SalesCatalog.csproj:
* NpgsqlWorkflow.csproj:
* ITContentProvider.csproj:
* NpgsqlMRPProviders.csproj:
* NpgsqlBlogProvider.csproj: .Net framework 4.5.1

* Global.asax.cs: a favicon
ignore route to robots.txt

* App.master: document formatting

* favicon.ico: a favicon
10 years ago
Paul Schneider 1b7b3595e2 * Makefile: creates two targets "xmldoc" and
"htmldoc" to generate
  the documentation

* Web.csproj:
* YavscModel.csproj:
* WebControls.csproj:
* YavscClient.csproj:
* SalesCatalog.csproj:
* NpgsqlWorkflow.csproj:
* NpgsqlMRPProviders.csproj:
* NpgsqlBlogProvider.csproj:
  ITContentProvider/ITContentProvider.csproj


* AssemblyInfo.cs: makes "en" the assembly culture, and normalize my
  name

* HomeController.cs: modifies the xmldoc

* Web.config: Modifies the owner email

* ITContentProvider.csproj: Activates the documentation generation

* App.master: adds a <meta charset=> in the head section
10 years ago
Paul Schneider c7f81699a4 * avatar, username, city from Google profile
* refactoring
10 years ago
Paul Schneider f3a2efa244 refactoring 10 years ago
Paul Schneider 9fc7f82531 * Web.config:
* Web.csproj:
* Web.config:
* Blog.cs:
* Index.aspx:
* BBCodeHelper.cs:
* Comment.cs:
* yavscModel.csproj:
* BlogEntry.cs:
* UserPost.aspx:
* UserPosts.aspx:
* Estimate.cs:
* RemovePost.aspx:
* TitleNotFound.aspx:
* BlogProvider.cs:
* AccountController.cs:
* BlogsApiController.cs:
* WorkFlowController.cs:
* BlogEditEntryModel.cs:
* FindBlogEntryFlags.cs:
* BlogEntryCollection.cs:
* Comment.cs:
* BlogEditCommentModel.cs:
* NpgsqlBlogProvider.cs:
* NpgsqlContentProvider.cs:
* BlogEntry.cs:
* NpgsqlBlogProvider.csproj:
* NpgsqlMembershipProvider.cs:
* FindBlogEntryFlags.cs:
* BlogEntryCollection.cs: 

* BlogHelper.cs: refactoring: moving code from NpgsqlBlogProvider to
  yavscModel.Blogs


* BlogManager.cs: NpgsqlBlogProvider/BlogHelper.cs


* BlogsController.cs: a successfull confirmed removal

* Blog.cs: refactoring
10 years ago
Paul Schneider 04804b89a9 Initial import 10 years ago