...

View Full Version : Easy programming problem



ermolnar
12-06-2012, 08:29 PM
Okay, so I'vebeen having a problem with a string of code that I use to place the time and date into photoshop and illustrator.

It's a pretty simple fix, i'm sure, but I cant figure it out. I have many many files that have a time, date, and designer initials stamp on them. I use this bit of Javascript as a fast way of updating the files.

Here's the problem:

On a new string of text, where I just use the JS on a brand new text box, it works fine. It's got the initials I have embedded into the script, in this case, 'EM'.

The problem is when I am using an existing timestamp that I am saving over. If it says "10/08/2010 9:44PM, XX", and I put my script on it to change it to my initials and the current date/time, it wont change the initials. It will update the time and date correctly and replace them, but the initials on the end will not change to 'EM', instead they will stay the way they are, using the initials that were there previously.

This might seem like a stupid thing to use code for, because its pretty easy to just edit the text box, but unfortunately there are so many different designers and so many files, that it actually is faster and guarantees less error to have the script fix it correctly when its done.

ANY IDEAS? Thanks in advance!



[CODE]
var format_preset = "({DATE}, {TIME})EM";


var MSG_unsetmark = WR+"This object is marked as actual date'n'time, do you want to remove the mark?";
var MSG_setmark = WR+"Do you want to mark the selected textobject as actual date'n'time?";
var MSG_askformat = WR+"Do you want to mark the textobject as actual date'n'time? Formats:\n{DATE}, {TIME}, {FILE}, {FILEPATH} und {FILENAME}:"
var MSG_editformat = WR+" Edit date'n'time (empty = remove). Formats:\n{DATE}, {TIME}, {FILE}, {FILEPATH} und {FILENAME}:"
var MSG_notexto = WR+"No textobject!";
var MSG_selectedmany = "To mark as actual date'n'time, you have to select only one textobject. If you want to update the date'n'time-objects, there must be no object selected.";
var MSG_nodocs = WR+"You have no open document."
var Timeformat = 12;
var TimeSep = ":";
var AM = " am";
var PM = " pm";
var Dateformat = "mm/dd/yyyy";
var Initials= "EM";
}

var error=0;

if (documents.length<1) {
error++;
alert(MSG_nodocs)
}

if (error < 1) {
date_n_time();
}

function TodayDate()
{
var Today = new Date();
var Day = Today.getDate();
var Month = Today.getMonth() + 1;
var Year = Today.getYear();
var PreMon = ((Month < 10) ? "0" : "");
var PreDay = ((Day < 10) ? "0" : "");
if(Year < 999) Year += 1900;

var theDate = Dateformat.replace(/dd/,PreDay+Day);
theDate = theDate.replace(/mm/,PreMon+Month);
theDate = theDate.replace(/d/,Day);
theDate = theDate.replace(/m/,Month);
theDate = theDate.replace(/yyyy/,Year);
theDate = theDate.replace(/yy/,Year.toString().substr(2,2));

return theDate;
}
///////////

//////////////

function TodayTime()
{
var Today = new Date();
var Hours = Today.getHours();
var Minutes = Today.getMinutes();
var Suffix = "EM";
if (Timeformat == 12) {
if (Hours >= 12 ) {
Suffix = PM;
} else {
Suffix = AM;
}
if (Hours >= 13) {
Hours = Hours - 12;
}
if (Hours < 1) {
Hours = Hours + 12;
}
}
var PreHour = ((Hours < 10) ? "0" : "");
var PreMin = ((Minutes < 10) ? "0" : "");
return PreHour+Hours+TimeSep+PreMin+Minutes+Suffix;
}

function DateUpdate(Name) {
var docpath = activeDocument.path.fsName;
var docname = activeDocument.name;
if (docpath.slice(2,3) == "//") {
docsep = "//";
} else {
docsep = "";
}
var content = Name.slice(11);
var content = content.replace(/\{FILE\}/,docpath+docsep+docname);
var content = content.replace(/\{FILEPATH\}/,docpath);
var content = content.replace(/\{FILENAME\}/,docname);
var content = content.replace(/\{DATE\}/,TodayDate());
var content = content.replace(/\{TIME\}/,TodayTime());
return content;
}

function date_n_time()
{
if (selection.length == 1) {
if (selection[0].typename == "TextArtItem" || selection[0].typename == "TextFrame") {
if (selection[0].name.slice(0,11) == "actualDate:") {
dateformat = selection[0].name.slice(11);
Check = false;
if (AIversion == "10") {
Check = confirm( MSG_unsetmark );
} else {
dateformat = prompt(MSG_editformat, dateformat);
}
if(dateformat != "" && Check) {
selection[0].contents = selection[0].name.slice(11);
selection[0].name="EM";
selection[0].selected = false;
}
if(dateformat == "" && !Check) {
selection[0].name="EM";
selection[0].selected = false;
}
if(dateformat && dateformat !="" && !Check) {
selection[0].name="actualDate:"+dateformat;
selection[0].contents = DateUpdate(selection[0].name);
}
} else {
dateformat = selection[0].contents;
if(dateformat.search(/\{DATE\}/) == -1 && dateformat.search(/\{TIME\}/) == -1 && dateformat.search(/\{FILE[A-Z]*\}/) == -1) dateformat = format_preset;
Check = false;
if (AIversion == "10") {
Check = confirm( MSG_setmark );
} else {
dateformat = prompt(MSG_askformat, dateformat);
}
if (dateformat || Check) {
selection[0].name="actualDate:"+dateformat;
selection[0].contents = DateUpdate(selection[0].name);
selection[0].selected = false;
}
}
} else {
alert ( MSG_notexto );
}
} else if (selection.length > 1) {
alert ( MSG_selectedmany );
} else {
if (AIversion == "10") {
var textArtItems = activeDocument.textArtItems;
for (var i = 0 ; i < textArtItems.length; i++)
{
if (textArtItems[i].name.slice(0,11) == "actualDate:") {
textArtItems[i].selected = true;
textArtItems[i].contents = DateUpdate(textArtItems[i].name);
}
}
} else {
var textFrames = activeDocument.textFrames;
for (var i = 0 ; i < textFrames.length; i++)
{
if (textFrames[i].name.slice(0,11) == "actualDate:") {
textFrames[i].selected = true;
textFrames[i].contents = DateUpdate(textFrames[i].name);
}
}
}
}
}
[CODE]

ermolnar
12-07-2012, 09:22 PM
really? nothing? bueller?

Old Pedant
12-07-2012, 09:32 PM
I dunno about anybody else, but I have no idea what you are talking about.

You talk about replacing "10/08/2010 9:44PM, XX" with (I *PRESUME*?) "12/07/2012 3:33PM, EM".

But I see no place where you even attempt to do that.

The closest I see is here:


return PreHour+Hours+TimeSep+PreMin+Minutes+Suffix;

But that produces something like "07:23EM" (no comma, to be specific).

How are we supposed to figure out WHICH PART of all that code you are actually *USING* when you do the date/time update???

Also, I dunno about anybody else here, but I have never used JavaScript with PhotoShop or Illustrator.

Old Pedant
12-07-2012, 09:35 PM
And I see this chunk of code:


...
var Dateformat = "mm/dd/yyyy";
var Initials= "EM";
}

but (a) it's not valid code, because it ends with } but you don't show the matching {
and (b) you never use the variable Initials any place else in the code.

Why create the variable if you don't use it?

AndrewGSW
12-07-2012, 10:55 PM
I would prefer that the code is in CODE tags and properly indented - I struggle to read it otherwise. (You need to close it with [/ CODE] (without the space).) And try and indicate where the problem is, rather than just supplying a mass of code.



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum