Download
(22 Kb)
Download
Updated: 01/18/24 07:21 PM
Pictures
File Info
Compatibility:
Endless Archive (9.2.5)
base-game patch (9.1.5)
Necrom (9.0.0)
Scribes of Fate (8.3.5)
Firesong (8.2.5)
Updated:01/18/24 07:21 PM
Created:02/02/23 07:05 AM
Monthly downloads:137
Total downloads:3,576
Favorites:7
MD5:
Mail History
Version: 13
by: PacificOshie [More]
MailHistory by @PacificOshie. Have fun!

Mail History saves a copy of your mail when sending, taking, returning, and deleting mail to provide a history of your mail activity.

Mail History data is stored account-wide across all characters. Mail that was sent, taken, returned, or deleted on one character may be viewed on another character.

Mail is only shown in the history when it is no longer in your mailbox.

Reply to mail and Forward mail (without attachments) from the history.

DEPENDENCIES
- LibAddonMenu-2.0
- LibAsync
- LibCustomMenu

++

MAIL HISTORY SETTINGS
- Automatically show and hide the history when viewing your mailbox.
- Included or exclude System mail from displaying in the history.

CHAT SETTINGS
- Log a mail summary in the chat window when sending, taking, returning, and deleting mail.

STORAGE SETTINGS
- Save or delete System mail.
- Increase or decrease the number of saved mail. The number of saved mail affects memory usage, disk space, and performance.

DATE AND TIME SETTINGS
- Select the preferred date and time display format.

++

COPY AND PASTE
- The popup displays mail to allow selecting the text to copy and paste. Click to put the cursor into the text, then select all using CTRL+A and copy using CTRL+C.

MISSING MAIL INFO
- Some other addons process mail before Mail History can save the mail. If an entire mail is missing, you may see the message "Missed mail due to other addons." And if attachment info is missing, you may see the message "Unknown attachment."
- Some old addons replaced the ESOUI mail functions so Mail History is not notified of mail. Please ensure you're using addons that have been updated recently.

NOT CERTIFIED MAIL
- Mail is saved in an unencrypted file which may be modified on the file system. The existence of data does not guarantee or certify its authenticity. The data is intended to be used as a personal copy of your mail and it’s not to be used as proof of sending or receiving mail.

PERSISTING DATA
- The ESOUI system is designed to hold data in memory and only persists the data to disk when a user reloads the ui, logs off, or exits the game. If the game or machine crashes before reloading the ui, logging off, or existing the game, then any new mail will be lost. The easiest way to force persisting the data to disk is to execute the command: /reloadui
2024-01-18 v13 - No code changes. Only updated the api version.

2023-08-21 v12 - Added a NEW DEPENDENCY on LibCustomMenu for the context menu of the mail history list. Also updated the api version.

2023-06-13 v11 - No code changes. Updated version to include Scribes of Fate 101037 and Necrom 101038.

2023-02-24 v10 - Fixed a bug when unintentionally deleting Player mail when intending to only delete System mail.

2023-02-18 v9 - Added the ability to Reply and Forward mail from the history using the right-click context menu or from the mail popup window.

2023-02-12 v8 - Added a keybinding to toggle the history window. Added options for the date and time format. Simplified options for showing System mail which includes hirelings, trader, pvp, etc. Added a new option to stop saving System mail altogether (besides just hiding it). Updated RU Russian translations by Verling! Updated to API version 101037 for ESO 8.3 Scribes of Fate.

2023-02-09 v7 - PLEASE BACKUP YOUR SAVED VARIABLES! Fixed an issue with updating data across versions. Support for hiding the guild trader mail in DE, EN, FR, JP, and RU. Updated DE German translations by Baertram! Updated RU Russian translations by Verling!

2023-02-06 v6 - Added DE German translations by Baertram! Added RU Russian translations by Verling! Duplicate sent mail (e.g., guild newsletter) is kept as a single mail with multiple recipients. Added a status message for how many mail are being shown. Added a progress bar when using the search filter. Added a tooltip option to display some mail details from the history when mouse over.

2023-02-03 v5 - Fixed the error when clicking on the window title. Moved saved data to be server region specific, but settings are server region agnostic. Updated the date and time to use the system locale. Display the character in the history who was sending, taking, returning, or deleting the mail. Support for hiding the hireling mail in DE, EN, FR, JP, and RU. Added language support for display strings but still need translations. Save mail that was taken, returned, or deleted in gamepad mode. Works with Lazy Writ Crafter auto-loot hireling mail.

2023-02-02 v4 - Indicate which character on your account was sending, taking, returning, or deleting the mail. Show and hide the mail history using mailbox events to support gamepad mode. Added another event handler to attempt saving mail before other addons remove them.

2023-02-02 v3 - Refresh data every time the history is shown so any updated settings are applied. Handle unknown attachments when mail data is missing due to other addons.

2023-01-30 v2 - Added an option to save more mail; and added an option to hide hireling mail. Added a search filter to the history to allow finding mail with specific text. Added a popup window that shows more details when clicking on mail from the history; and allows selecting CTRL+A and copying CTRL+C the mail text.

2023-01-25 v1 - Preview release.
Optional Files (0)


Archived Files (10)
File Name
Version
Size
Uploader
Date
12
22kB
PacificOshie
08/21/23 03:04 PM
11
22kB
PacificOshie
06/13/23 04:44 PM
10
22kB
PacificOshie
02/24/23 06:38 PM
9
22kB
PacificOshie
02/18/23 07:39 AM
8
21kB
PacificOshie
02/12/23 12:49 PM
7
20kB
PacificOshie
02/09/23 04:46 PM
6
20kB
PacificOshie
02/06/23 07:45 PM
5
14kB
PacificOshie
02/03/23 04:42 PM
4
11kB
PacificOshie
02/02/23 04:03 PM
3
10kB
02/02/23 07:05 AM


Post A Reply Comment Options
Unread 02/07/23, 03:54 PM  
P5ych3
 
P5ych3's Avatar
AddOn Author - Click to view AddOns

Forum posts: 2
File comments: 83
Uploads: 2
Lightbulb Ayyy

Now this certainly looks enticing.. nice work! This is something a lot of people will find useful. I will have to give this a try later.
Report comment to moderator  
Reply With Quote
Unread 02/07/23, 02:32 PM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4912
File comments: 5990
Uploads: 78
On PTS my saved mail history is gone after each reloadui?
Seems that your SavedVariables ar enot saved properly somwhere....

Here is a screenshot of merTorchbug inspecting your MailHistory.data table:


It's empty after each reloadui.
My MailHistoryData.Default table is empty too.
And I definately have taken 3 hireling mails today which were shown properly with your previous version of the addon (updated it today at the evening and before all was okay).

Edit:
It seems to have to do with your v4MaiLData and v5MailData ZO_SavedVArs calls!
if I comment these lines it's working fine:
Lua Code:
  1. -- <<<< SETTINGS
  2.  
  3.     -- Prepare the SavedVars.
  4.  
  5.     -- FIRST (old versions)
  6.     -- Get older versions of the data in case we need to update the data.
  7.     -- Note, if we get the new version first, it will destroy any old version, so we need to try to get these old versions first.
  8.     --[[
  9.         local v4MailData = ZO_SavedVars:NewAccountWide("MailHistoryData", 1, nil, {table={}})
  10.         local v5MailData = ZO_SavedVars:NewAccountWide("MailHistoryData", 1, nil, {table={}}, GetWorldName())
  11.  
  12.     MailHistory._v4MailData = v4MailData
  13.     MailHistory._v5MailData = v5MailData
  14.     ]]
  15.  
  16.     -- SECOND (current version)
  17.     -- Mail data SavedVars is version 2 and region specific (GetWorldName).
  18.     -- Mail data SavedVars version 2 is used by Mail History addon v6.
  19.     MailHistory.data = ZO_SavedVars:NewAccountWide("MailHistoryData", 2, nil, {table={}}, GetWorldName())

If the comments are removed MailHistory.data will be empty in the end

If you want to migrate settings from old to new SV versions (like from non worldName to worldName) then load the old sv into a local copy, create a ZO_ShallowTableCopy to strip metatables and SV wraper of ZO_SavedVars!
Then use that copied table reference as "default" values for your new ZO_SavedVars with an increased version, or simply a total different table name so that the data is not mixed within the SV files on disk!!! (this will just copy the entries from old Sv copied table to new SV table).
After that set the old SV table = nil and do a ReloadUI("ingame") once in your code.

To prevent this being an endless loop check for the oldTable ~= nil BEFORE you try to assign it to ZO_SavedVars (else it won't be nil!).
e.g. if your SV tablename of the old SV was
MailHistoryData and your new table will be MailHistoryDataNew, check at the beginning
if MailHistoryData ~= nil then
--Migration needed
end
Last edited by Baertram : 02/07/23 at 06:39 PM.
Report comment to moderator  
Reply With Quote
Unread 02/06/23, 09:40 PM  
PacificOshie
 
PacificOshie's Avatar
AddOn Author - Click to view AddOns

Forum posts: 2
File comments: 20
Uploads: 2
Originally Posted by DohNotAgain
Could you add a hotkey option to toggle the window on and off please?
I only want to see it when I want to look at something.

Of course, I could simply be overlooking that option....

I am happy to see this addon.
Hiya, would this work for you?...
- Mail History has a setting to automatically show the history with the mailbox, so you can turn that OFF.
- In addition, you can manually show the history with the /mailhistory command.

Let me know if there is some other capability you're thinking about. Thanks!
Report comment to moderator  
Reply With Quote
Unread 02/06/23, 08:54 PM  
Verling
 
Verling's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1
File comments: 51
Uploads: 7
Originally Posted by Baertram
Originally Posted by Verling
I can't understand the sentence. What is COD ?

Code:
"Requested COD of <<1>> gold"
COD = Cash on delivery
"Asked money to attach by the receiver and send back, in order for the rceiver to get the attached items you have send"
Precisely! Thanks. Today, while the servers are unavailable, I will finish the translation.

Originally Posted by PacificOshie
Thank you! I see the translations and I'm working on it today.
Everything worked out and works fine .
Last edited by Verling : 02/06/23 at 08:58 PM.
Report comment to moderator  
Reply With Quote
Unread 02/06/23, 08:27 PM  
DohNotAgain

Forum posts: 1
File comments: 110
Uploads: 0
Could you add a hotkey option to toggle the window on and off please?
I only want to see it when I want to look at something.

Of course, I could simply be overlooking that option....

I am happy to see this addon.
Report comment to moderator  
Reply With Quote
Unread 02/06/23, 12:34 PM  
PacificOshie
 
PacificOshie's Avatar
AddOn Author - Click to view AddOns

Forum posts: 2
File comments: 20
Uploads: 2
Thank you! I see the translations and I'm working on it today.
Report comment to moderator  
Reply With Quote
Unread 02/06/23, 09:27 AM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4912
File comments: 5990
Uploads: 78
Originally Posted by Verling
I can't understand the sentence. What is COD ?

Code:
"Requested COD of <<1>> gold"
COD = Cash on delivery
"Asked money to attach by the receiver and send back, in order for the rceiver to get the attached items you have send"
Report comment to moderator  
Reply With Quote
Unread 02/05/23, 09:01 PM  
Verling
 
Verling's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1
File comments: 51
Uploads: 7
Code:
-- MailHistory by @PacificOshie.  Have fun!
-- SETTINGS
-- Russian Version
-- ver.0.09 @Verling.P
 

ZO_CreateStringId("SI_MAILHISTORY_SETTINGS_DESCRIPTION", "Mail History создает список истории почты, помещая туда копию вашей переписки при отправке, получении, возврате и удалении почтовых сообщений.")

ZO_CreateStringId("SI_MAILHISTORY_SETTINGS_HISTORY_HEADER", "Mail History (История Почты)")
ZO_CreateStringId("SI_MAILHISTORY_SETTINGS_HISTORY_DESCRIPTION", "Откройте историю писем в любое время, используя команду: /mailhistory")
ZO_CreateStringId("SI_MAILHISTORY_SETTINGS_AUTOTOGGLEMAINWINDOW", "Окно Mail History при открытии почты")
ZO_CreateStringId("SI_MAILHISTORY_SETTINGS_SHOWHIRELINGMAIL", "Показывать письма наемников в истории почты")

ZO_CreateStringId("SI_MAILHISTORY_SETTINGS_CHAT_HEADER", "Чат")
ZO_CreateStringId("SI_MAILHISTORY_SETTINGS_CHAT_DESCRIPTION", "Настройки вывода сообщений в окне Чата, когда:")
ZO_CreateStringId("SI_MAILHISTORY_SETTINGS_CHATSENTMAIL", "Отправляем письмо")
ZO_CreateStringId("SI_MAILHISTORY_SETTINGS_CHATREADMAIL", "Получаем, удаляем или возвращаем письмо")
ZO_CreateStringId("SI_MAILHISTORY_SETTINGS_CHATWARNINGS", "Пропущено письмо из-за конфликта аддонов")

ZO_CreateStringId("SI_MAILHISTORY_SETTINGS_STORAGE_HEADER", "Размеры хранилища")
ZO_CreateStringId("SI_MAILHISTORY_SETTINGS_STORAGE_DESCRIPTION", "Количество писем в истории влияет на использование памяти, дискового пространства и производительность.")
ZO_CreateStringId("SI_MAILHISTORY_SETTINGS_NUMMAILTOKEEP", "Общее количество записей сохраняемой почты")
ZO_CreateStringId("SI_MAILHISTORY_SETTINGS_STORAGE_DEFAULT", "По умолчанию <<1>>.")

-- MAIL

ZO_CreateStringId("SI_MAILHISTORY_MAIL_CHARACTER", "Персонаж:")

ZO_CreateStringId("SI_MAILHISTORY_MAIL_DATETIME_SENT", "Отправлено:")
ZO_CreateStringId("SI_MAILHISTORY_MAIL_DATETIME_RTS", "Возвращено:")
ZO_CreateStringId("SI_MAILHISTORY_MAIL_DATETIME_RECEIVED", "Принято:")

ZO_CreateStringId("SI_MAILHISTORY_MAIL_TO", "Кому:")
ZO_CreateStringId("SI_MAILHISTORY_MAIL_FROM", "От кого:")
ZO_CreateStringId("SI_MAILHISTORY_MAIL_SYSTEM_PREFIX", "(Системное)")  -- System mail gets this sender prefix.
ZO_CreateStringId("SI_MAILHISTORY_MAIL_CS_PREFIX", "(СПК)")  -- Customer support mail gets this sender prefix.

ZO_CreateStringId("SI_MAILHISTORY_MAIL_SUBJECT", "Тема:")

ZO_CreateStringId("SI_MAILHISTORY_MAIL_ATTACHMENTS", "Вложения:")
ZO_CreateStringId("SI_MAILHISTORY_MAIL_ATTACHMENT_GOLD_SENT", "Отослано <<1>> gold.")
ZO_CreateStringId("SI_MAILHISTORY_MAIL_ATTACHMENT_GOLD_RTS", "Возвращено <<1>> gold.")
ZO_CreateStringId("SI_MAILHISTORY_MAIL_ATTACHMENT_GOLD_RECEIVED", "Принято <<1>> gold.")
ZO_CreateStringId("SI_MAILHISTORY_MAIL_ATTACHMENT_COD_SENT", "Requested COD of <<1>> gold.")  -- Request COD when sending mail.
ZO_CreateStringId("SI_MAILHISTORY_MAIL_ATTACHMENT_COD_RTS", "Returned COD of <<1>> gold.")
ZO_CreateStringId("SI_MAILHISTORY_MAIL_ATTACHMENT_COD_RECEIVED", "Sent COD payment of <<1>> gold.")  -- Send COD payment when receiving mail.
ZO_CreateStringId("SI_MAILHISTORY_MAIL_ATTACHMENT_MISSING", "Неизвестные вложения.")  -- Attachment info is missing.
ZO_CreateStringId("SI_MAILHISTORY_MAIL_ATTACHMENT_NONE", "Нет вложений.")

-- MAINWINDOW

ZO_CreateStringId("SI_MAILHISTORY_MAINWINDOW_OPTIONSBUTTON", "Настройки")
ZO_CreateStringId("SI_MAILHISTORY_MAINWINDOW_SEARCHFILTER_PROMPT", "Фильтр поиска......")
ZO_CreateStringId("SI_MAILHISTORY_MAINWINDOW_SEARCHFILTER_RESET_TOOLTIP", "Сброс фильтра поиска")

-- POPUPWINDOW

ZO_CreateStringId("SI_MAILHISTORY_POPUPWINDOW_PREVBUTTON_TOOLTIP", "Пред идущее письмо")
ZO_CreateStringId("SI_MAILHISTORY_POPUPWINDOW_NEXTBUTTON_TOOLTIP", "Следующие письмо")

-- CHAT

-- Notification when the mail data is missing for a known mail identifier.  Some other addons process mail before Mail History can save the mail.
ZO_CreateStringId("SI_MAILHISTORY_CHAT_WARNING_MISSING_DATA", "Пропущена почта из-за других дополнений.")
-- Notification when the MailR addon is detected.  Some old addons replaced the ESOUI mail functions so Mail History is not notified of mail.
ZO_CreateStringId("SI_MAILHISTORY_CHAT_WARNING_MAILR", "Ограничения работы истории почты из за MailR.")
without translating 3 lines of COD
Last edited by Verling : 02/06/23 at 07:36 AM.
Report comment to moderator  
Reply With Quote
Unread 02/05/23, 11:51 AM  
Verling
 
Verling's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1
File comments: 51
Uploads: 7
I can't understand the sentence. What is COD ?

Code:
"Requested COD of <<1>> gold"
Report comment to moderator  
Reply With Quote
Unread 02/05/23, 07:53 AM  
Verling
 
Verling's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1
File comments: 51
Uploads: 7
PacificOshie, unfortunately, you have turned off the reception of private messages. That 's why I 'm writing here .
I received your letter. Started the translation.
Report comment to moderator  
Reply With Quote
Unread 02/03/23, 10:22 PM  
Verling
 
Verling's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1
File comments: 51
Uploads: 7
Thanks for the addon. he is very necessary. By version 4, I was doing a translation for friends. Now we need to compare the terms and I will send you the RU option. I hope I will do it tomorrow or at most on Monday.
Report comment to moderator  
Reply With Quote
Unread 02/03/23, 10:05 AM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4912
File comments: 5990
Uploads: 78
Originally Posted by PacificOshie
Hiya Baertram! I appreciate all of the details and suggestions! I'll work on these items and post an update. Thank you!
I'll upate the DE hireling mailer names as I find/see them.
Report comment to moderator  
Reply With Quote
Unread 02/02/23, 07:57 PM  
NeuroticPixels
Addon Addict
 
NeuroticPixels's Avatar
Premium Member

Forum posts: 210
File comments: 864
Uploads: 0
Yaaassss!! Finally. With my memory and ADD, an addon like this is a must-have. Thank you!!!
Report comment to moderator  
Reply With Quote
Unread 02/02/23, 05:19 PM  
PacificOshie
 
PacificOshie's Avatar
AddOn Author - Click to view AddOns

Forum posts: 2
File comments: 20
Uploads: 2
Hiya Baertram! I appreciate all of the details and suggestions! I'll work on these items and post an update. Thank you!
Report comment to moderator  
Reply With Quote
Unread 02/02/23, 04:29 PM  
Baertram
Super Moderator
 
Baertram's Avatar
ESOUI Super Moderator
AddOn Author - Click to view AddOns

Forum posts: 4912
File comments: 5990
Uploads: 78
Error message upon clicking on the Mail History headline at your UI:
Code:
/EsoUI/Libraries/ZO_Tree/ZO_Tree.lua:948: attempt to index a nil value
|rstack traceback:
/EsoUI/Libraries/ZO_Tree/ZO_Tree.lua:948: in function 'ZO_TreeHeader_OnMouseUp'
|caaaaaa<Locals> self = ud, upInside = T </Locals>|r
MailHistory_MainWindow_Title_MouseUp:3: in function '(main chunk)'
|caaaaaa<Locals> self = ud, button = 2, upInside = T, ctrl = F, alt = F, shift = F, command = F </Locals>|r

Are you planning to add multi language support?
https://wiki.esoui.com/How_to_add_localization_support

If you define your own String constants e.g. GetString(MAILHISTORY_LAM_SETTING_FOO) etc. you can use the txt manifest to dynamically read a file in e.g. subfolder i18n or lang, like always load /i18n/en.lua as default and then also load /i18n/$(language).lua to load e.g. de.lua, fr.lua, zh.lua, es.lua, ru.lua by the client language of the player.

If you need DE transltaions for the settings AND the hireling names, tell me, I can assist you.
You just would need to change MailHistory.HIRELINGS to something like
Lua Code:
  1. MailHistory.HIRELINGS = {
  2.  ["en"] = {
  3.     "Granny Gravius",  -- Clothier.
  4.     "Orbinor the Thankful",  -- Woodworker.
  5.     "Urbek",  -- Blacksmith.
  6.     "Velothril Sisters",  -- Enchanter.
  7.     "Zukki-dar",  -- Provisioner.
  8.  },
  9.  ["de"] = {
  10.         "Aksel Steinbeißer" -- Blacksmith
  11.         "Urbek", -- Blacksmith
  12.         "Veesk-Olan", --Clothier
  13.         "Großmütterchen Gravius", --Clothier
  14.         "Orbinor der Dankbare", --Woodworker
  15.         "Margog der Hammer", -- Woodworker
  16.         "Velothril-Schwestern", --Enchanter
  17.         "Melina Cassel", --Enchanter
  18.         "Zukki-dar", --Provisioner (this one seems to be the same name in DE like EN)
  19.  ...},
  20.  ["es"] = {},
  21.  ["fr"] = {},
  22.  ["ru"] = {},
  23.  ["jp"] = {},
  24.  ["zh"] = {},
  25. }
-> Attention: The hirelings can have different names (depending on your race/class maybe?).
I already found 2 different ones, see above


and access these language dependent tables with the client language:
MailHistory.clientLang = GetCVar("language.2") --returns en, de, es, fr, ru, jp, zh, ...
local clientLang = MailHistory.clientLang
ZO_IsElementInNumericallyIndexedTable(MailHistory.HIRELINGS[clientLang], data.from)



One important thng about your SavedVariables!!!
You must make them server dependent! ppl play on NA and EU and would see the mails of the other servers then.
I do not think there is a need to see server spanning mails, right?

Just pass in the world name from GetWorldName() to the ZO_SavedVars as parameter "namespace" or "profile" e.g. and it will create a subtable in those savedvariables.
> if namespace is nil it will be filled in the SavedVariables with "Default"

As your addon is new it should be hopefully early enough to add this, although ppl loose their settings if you do that.
So maybe the settings can be non server dependent, and only the mail history is server dependent?
You can even use the last param displayName to overwrite the default GetDisplayName() of the currently logged in account, so that all accounts see the same mails e.g. if you just pass in something like "AllAccountsTheSame"- >It will create that subtable in the SV table, instead of @YourCurrentlyLoggedInAccount then.

Lua Code:
  1. local worldName = GetWorldName() --returns "Megaserver EU", "Megaserver NA", "PTS"
  2.  
  3. --ZO_SavedVars:NewAccountWide(savedVariableTable, version, namespace, defaults, profile, displayName)
  4. --Make server dependent
  5. MailHistory.data = ZO_SavedVars:NewAccountWide("MailHistoryData", 1, nil, {table={}}, worldName)
  6.  
  7. --Keep server independent?
  8. MailHistory.settings = ZO_SavedVars:NewAccountWide("MailHistorySettings", 1, nil, {


Feature request addition
Thanks for adding the chracter name of the one deleting the email.
Could you maybe add an option to show the character name here at the UI's list row too:

For example: [charName]

I mean I can use the search to find the mails but I'd love to see the name of the char directly at the UI.


Feature request
Please use os.date("%c", timeStampOfMail) for all date and time output as date and time formats of current US format is nothing we use in Germany, nor France etc.
It will return, according to yoru current client language and OS settings, either the US, or any other formatted string of date and time then for the passed in timeStamp.
Thank you very much
Last edited by Baertram : 02/03/23 at 10:06 AM.
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: