string bookTitle = project.Variables["bookTitle"].Value, originalTitle=project.Variables["originalTitle"].Value, authorName=project.Variables["authorName"].Value, isbn10=project.Variables["isbn10"].Value, isbn13=project.Variables["isbn13"].Value, numberOfPages=project.Variables["numberOfPages"].Value, firstPublished=project.Variables["firstPublished"].Value, characters=project.Variables["characters"].Value, place=project.Variables["place"].Value, award=project.Variables["award"].Value, coverImage=project.Variables["coverImage"].Value, bookDescription=project.Variables["bookDescription"].Value;
string result_article = String.Empty;
// формируем html ссылку слива
string sliv = "
\r\n";
// проверяем данные на пустоту, если параметр книги не пустой, то добавляем его на страницу.
if (coverImage != String.Empty && coverImage != "none" && coverImage != null){
result_article += "
\r\n";
}
if (authorName != String.Empty && authorName != "none" && authorName != null){
result_article += "author name: "+authorName+"
\r\n";
}
result_article += "available formats: PDF, EPUB, MOBI, ODF and others
\r\n"+sliv;
if (originalTitle != bookTitle && originalTitle != String.Empty && originalTitle != "none" && originalTitle != null){
result_article += "original title: \""+originalTitle+"\"
\r\n";
}
if (isbn10 != String.Empty && isbn10 != "none" && isbn10 != null){
if (isbn13 != String.Empty && isbn13 != "none" && isbn13 != null){
isbn13 = " (ISBN13: "+isbn13+")
\r\n";
}
else {
isbn13 = "
\r\n";
}
result_article += "ISBN: "+isbn10+isbn13;
}
if (numberOfPages != String.Empty && numberOfPages != "none" && numberOfPages != null && numberOfPages != "0"){
result_article += "pages: "+numberOfPages+"
\r\n";
}
if (firstPublished != String.Empty && firstPublished != "none" && firstPublished != null){
result_article += "first published: "+firstPublished+"
\r\n";
}
if (characters != String.Empty && characters != "none" && characters != null){
result_article += "characters: "+characters.Substring(0, characters.Length-2)+"
\r\n";
}
if (place != String.Empty && place != "none" && place != null){
result_article += "setting: "+place.Substring(0, place.Length-5)+"
\r\n";
}
if (award != String.Empty && award != "none" && award != null){
result_article += "literary awards: "+award.Substring(0, award.Length-2)+"
\r\n";
}
if (bookDescription != String.Empty && bookDescription != "none" && bookDescription != null){
result_article += "
"+bookDescription+"
\r\n"+sliv;
}
// выводим перелинковку
Random rnd = new Random(); // создаем рандом
// обворачиваем в try, чтобы в случае ошибки, например, когда в списке нет ничего, программа не завершилась.
try {
var links = project.Lists["links"]; // получаем список с ссылками
int rndLinksNumber = new Random().Next(4, 13); // cколько ссылок выводить
List Links2 = new List(); // создаем список
Random rndList = new Random(); // создаем рандом
int countStrList = links.Count; // получаем к-во строк в списке
for(int i=0; i < rndLinksNumber; i++){
string input = links[rnd.Next(countStrList)];
Match match = Regex.Match(input, @"\[url\=([^\]]+)\](.+)\[/url\]");
Links2.Add(""+match.Groups[2].Value+"");
}
result_article += "See also:
\r\n"+String.Join("
\r\n", Links2.ToArray()); // join список в строку с разделитем и добавляем на страницу.
}
catch (Exception){} // ничего не делаем в случае исключения, просто продолжаем выполнять код дальше.
// выводим случайные ключевики
var searchTagsList = project.Lists["search tags"]; // получаем список с ключами
int randSearchTags = new Random().Next(7, 16); // cколько ключей выводить
List SearchTags = new List(); // создаем список
int countStrList2 = searchTagsList.Count; // получаем к-во строк в списке
for(int i=0; i < randSearchTags; i++){
SearchTags.Add(searchTagsList[rnd.Next(countStrList2)]); // выбираем случайную строку из списка и add в список
}
result_article += "
Search tags:
\r\n"+String.Join(", ", SearchTags.ToArray()); // join список в строку с разделитем и добавляем на страницу.
/*
lock(SyncObjects.ListSyncer){тут операции со списоком} - если список синхронизирован с файлом, то нужно операции с ним лочить, иначе можно получить ошибку, во время выполнения в многопотоке.
*/
return result_article;