Fixed problem with locked date/time attributes and re-edit of pages

SVN revision: 2156
This commit is contained in:
Stefan Ritt 2008-12-12 07:04:54 +00:00
parent ba2c76af62
commit d5d31cd889

View File

@ -8882,65 +8882,73 @@ void attrib_from_param(int n_attr, char attrib[MAX_N_ATTR][NAME_LENGTH])
} }
} else if (attr_flags[i] & AF_DATE) { } else if (attr_flags[i] & AF_DATE) {
sprintf(str, "y%d", i); if (isparam(ua))
year = atoi(isparam(str) ? getparam(str) : ""); strlcpy(attrib[i], getparam(ua), NAME_LENGTH);
if (year < 100) else {
year += 2000; sprintf(str, "y%d", i);
year = atoi(isparam(str) ? getparam(str) : "");
if (year < 100)
year += 2000;
sprintf(str, "m%d", i); sprintf(str, "m%d", i);
month = atoi(isparam(str) ? getparam(str) : ""); month = atoi(isparam(str) ? getparam(str) : "");
sprintf(str, "d%d", i); sprintf(str, "d%d", i);
day = atoi(isparam(str) ? getparam(str) : ""); day = atoi(isparam(str) ? getparam(str) : "");
memset(&ts, 0, sizeof(struct tm)); memset(&ts, 0, sizeof(struct tm));
ts.tm_year = year - 1900; ts.tm_year = year - 1900;
ts.tm_mon = month - 1; ts.tm_mon = month - 1;
ts.tm_mday = day; ts.tm_mday = day;
ts.tm_hour = 12; ts.tm_hour = 12;
if (month && day) { if (month && day) {
ltime = mktime(&ts); ltime = mktime(&ts);
sprintf(attrib[i], "%d", (int) ltime); sprintf(attrib[i], "%d", (int) ltime);
} else } else
strcpy(attrib[i], ""); strcpy(attrib[i], "");
}
} else if (attr_flags[i] & AF_DATETIME) { } else if (attr_flags[i] & AF_DATETIME) {
sprintf(str, "y%d", i); if (isparam(ua))
year = atoi(isparam(str) ? getparam(str) : ""); strlcpy(attrib[i], getparam(ua), NAME_LENGTH);
if (year < 100) else {
year += 2000; sprintf(str, "y%d", i);
year = atoi(isparam(str) ? getparam(str) : "");
if (year < 100)
year += 2000;
sprintf(str, "m%d", i); sprintf(str, "m%d", i);
month = atoi(isparam(str) ? getparam(str) : ""); month = atoi(isparam(str) ? getparam(str) : "");
sprintf(str, "d%d", i); sprintf(str, "d%d", i);
day = atoi(isparam(str) ? getparam(str) : ""); day = atoi(isparam(str) ? getparam(str) : "");
sprintf(str, "h%d", i); sprintf(str, "h%d", i);
hour = atoi(isparam(str) ? getparam(str) : ""); hour = atoi(isparam(str) ? getparam(str) : "");
sprintf(str, "n%d", i); sprintf(str, "n%d", i);
min = atoi(isparam(str) ? getparam(str) : ""); min = atoi(isparam(str) ? getparam(str) : "");
sprintf(str, "c%d", i); sprintf(str, "c%d", i);
sec = atoi(isparam(str) ? getparam(str) : ""); sec = atoi(isparam(str) ? getparam(str) : "");
memset(&ts, 0, sizeof(struct tm)); memset(&ts, 0, sizeof(struct tm));
ts.tm_year = year - 1900; ts.tm_year = year - 1900;
ts.tm_mon = month - 1; ts.tm_mon = month - 1;
ts.tm_mday = day; ts.tm_mday = day;
ts.tm_hour = hour; ts.tm_hour = hour;
ts.tm_min = min; ts.tm_min = min;
ts.tm_sec = sec; ts.tm_sec = sec;
ts.tm_isdst = -1; ts.tm_isdst = -1;
if (month && day) { if (month && day) {
ltime = mktime(&ts); ltime = mktime(&ts);
sprintf(attrib[i], "%d", (int) ltime); sprintf(attrib[i], "%d", (int) ltime);
} else } else
strcpy(attrib[i], ""); strcpy(attrib[i], "");
}
} else { } else {
if (isparam(attr_list[i])) if (isparam(attr_list[i]))